Get Started

Ship to production like a real company

Your app works. Now make it the kind of thing you'd trust with your own card details: a proper domain, separate environments, secrets that stay secret, emails that land in the inbox, errors you hear about before customers do, numbers you actually watch, backups you've tested, and the legal pages UK customers expect.

50 minIntermediateTools: From free (most tools here have free tiers; a domain costs a few pounds a year; check current pricing)Step 1 free
Your app on its own domain with HTTPS, and every service pointed at it
Clean dev, preview and production environments that can't charge a real card by accident
A security pass you can repeatRLS audit, input validation, auth checks and rate limits
  • Email that reaches the inbox, with SPF, DKIM and DMARC set up properly
  • Error alerts from Sentry, product analytics from PostHog, and the three numbers that matter
  • Tested backups, uptime alerts, legal pages and a pre-launch checklist
Before you start
01/10Put it on your own domain0 done
STEP 01 of 10~5 min

Put it on your own domain

Nobody types their card into something-random-abc123.vercel.app. A real domain is the cheapest trust signal you'll ever buy.

  1. Buy a domain from any mainstream registrar if you haven't already. Short, easy to spell out loud, .com or .co.uk if you can get them. Don't burn a day on the name: you can change it, and your first customers won't care.

  2. In Vercel go to your project's Settings, Domains and add both yourdomain.com and www.yourdomain.com. Pick one as the main address and set the other to redirect to it. Vercel then shows you exactly which DNS records to add. Add those, at your registrar or DNS provider, exactly as shown. Don't copy records from an old blog post: Vercel's values can differ per project.

  3. DNS changes usually show up within minutes, occasionally hours. Check from your terminal:

    Terminal
    nslookup yourdomain.com
    nslookup www.yourdomain.com
  4. Vercel issues the HTTPS certificate automatically once the records resolve. Then update everything that knows your old address:

    • Vercel env var NEXT_PUBLIC_SITE_URL for Production: https://yourdomain.com. Redeploy.
    • Supabase Authentication, URL Configuration: Site URL to https://yourdomain.com, and add https://yourdomain.com/** to Redirect URLs.
    • Stripe live webhook endpoint: https://yourdomain.com/api/stripe/webhook (the exact final address, no redirect in between).
    • Resend: the sending domain you verify in step 5.
    TipIf your DNS is on Cloudflare, set the records Vercel gives you to DNS only (grey cloud) unless you know why you'd proxy them. Putting a proxy in front of Vercel is a classic cause of redirect loops and certificate errors. Vercel's domains docs ↗ cover the details.
✓
Checkpointhttps://yourdomain.com loads your app with a padlock, www redirects to it (or the other way round), and a magic link sent from production lands you on the dashboard at your domain.
If it breaksERR_TOO_MANY_REDIRECTS on the new domain + 2 more
ERR_TOO_MANY_REDIRECTS on the new domain
Usually a proxy (like Cloudflare's orange cloud with SSL set to Flexible) bouncing between http and https while Vercel redirects back. Switch the records to DNS only, or set Cloudflare SSL to Full (strict). Also check you haven't set www to redirect to the apex and the apex to redirect to www.
Vercel says 'Invalid Configuration' for hours
The records don't match. Compare what nslookup returns with what Vercel asks for. Look for an old A or AAAA record from a parking page that's still there, and delete it.
Magic links still point at the vercel.app address
Supabase's Site URL or your NEXT_PUBLIC_SITE_URL still has the old value. Update both, redeploy, and request a new link (old emails keep the old address).
Still stuck? Ask the community
Next mission · Launch a SaaSLaunch day: get your first 100 users
→