Setup guide · 4 of 4
Attach a custom domain
Move from the Vercel-provided URL to your branded domain. Active time: 15–30 minutes plus DNS propagation. Three external services need a config update — skipping any of them leaves subtle bugs.
1.Add the domain to Vercel
In your Vercel project settings, add both the apex (yoursignals.com) and the www subdomain. Vercel shows the required DNS records: typically an A record 76.76.21.21 on the apex and a CNAME cname.vercel-dns.com on www. If you use Cloudflare DNS, set the records to "DNS only" (grey cloud) for the SSL handshake to work.
2.Wait for DNS propagation
Verify resolution with dig +short yoursignals.com or whatsmydns.net. Propagation usually completes within 10 minutes for fresh records, up to an hour for changed ones. Vercel polls and flips the domain status to "Valid Configuration" automatically. SSL certificates provision a minute or two later.
3.Update NEXT_PUBLIC_APP_URL + redeploy
Set NEXT_PUBLIC_APP_URL=https://yoursignals.com on Vercel Production (and BRAND_APP_URL if you set it explicitly). Trigger a redeploy. Sitemap, robots.txt, canonical tags, and OG URLs all rebuild against the new domain. Hit /robots.txt and confirm it lists the new domain.
4.Update Supabase Auth redirect URLs
In Supabase Dashboard → Authentication → URL Configuration, set Site URL to https://yoursignals.com and add the same value plus /auth/callback to the Redirect URL allow list. Without this, sign-up email confirmations link to the old domain.
5.Re-register the PayPal LIVE webhook
PayPal webhooks are domain-pinned. Edit the LIVE webhook to point at https://yoursignals.com/api/paypal/webhook and copy the new webhook ID into PAYPAL_WEBHOOK_ID. Redeploy. Without this, new subscriptions activate in PayPal but never flip in your database, leaving subscribers paid-but-not-gated.
6.Smoke-test the new domain
Hit /, /pricing, /strategies/<slug>, /api/health, /auth/sign-in. All should serve cleanly under HTTPS. Sign up with a test email; the confirmation email should link to the new domain. Run one Sandbox PayPal subscription end-to-end against the new domain to confirm webhook flow.
Common gotchas
- Cloudflare proxy mode.If Cloudflare is in front of your DNS, set both records to “DNS only” (grey cloud). Proxied (orange cloud) breaks Vercel's automatic SSL provisioning. You can re-enable proxy later by uploading the Vercel cert to Cloudflare manually.
- Stale Supabase redirects. If sign-up emails still link to the old domain after the redirect-URL change, force a Supabase Auth config refresh by toggling and saving the setting.
- PayPal webhook verification cache. PayPal sometimes caches webhook URLs for ~5 minutes. If your first post-domain-flip webhook event 404s, wait and retry before debugging.
- Cron-poller URL. If you have an external cron-poller hitting
/api/cron/refresh-perf, update its target URL too. Easy to forget; performance data goes stale silently.
After custom-domain setup
You've completed the four-step setup sequence. Next steps:
- Submit your sitemap to Google Search Console + Bing Webmaster Tools.
- Set the OPERATOR_NOTIFICATION_EMAIL env to your inbox so signup notifications land somewhere monitored.
- Run the Plan 3b operations runbook (linked in OPERATIONS.md) to verify all production environment variables are set correctly.
- Open the operator FAQ for day-to-day questions.