How the Internet Found My Website
Bought saadmukhtar.devtoday. Here's what I learned setting it up.
The short version
Your computer speaks IPs, not domain names. DNS is the phonebook that translates between the two. Setting up a custom domain is just updating the phonebook to point at your server.
That's it. Everything below is detail.
Two records. That's all.
Vercel needs two DNS records added in Cloudflare:
@ (apex) CNAME → 4cca535debee29c0.vercel-dns-017.com
www CNAME → 4cca535debee29c0.vercel-dns-017.comProxy: off. Grey cloud in Cloudflare, not orange. Vercel has its own CDN — Cloudflare's proxy creates SSL conflicts. Always grey.
Cloudflare vs Vercel — two different jobs
Cloudflare manages the phonebook. Buy the domain there, add the DNS records, done.
Vercel hosts your site. You also need to add the domain inside Vercel's dashboard — that's how it knows which project to serve when traffic arrives.
Both sides. Most people miss the Vercel side.
Apex vs www
saadmukhtar.dev is the apex — the root domain.
www.saadmukhtar.dev is technically a subdomain. Different address.
Add only the apex in Vercel. It automatically redirects www → apex with a 308. Nobody types www anymore anyway.
CNAME on a root domain?
Normally only A records (IP addresses) are allowed on an apex domain. CNAMEs are for subdomains.
Cloudflare gets around this with CNAME flattening — it resolves the CNAME chain down to an IP automatically. So you get the flexibility of a CNAME without breaking DNS rules.
“Invalid Configuration” — don't panic
Vercel shows this the second you add the domain. It doesn't mean something is broken.
It means DNS hasn't propagated yet. On Cloudflare: usually 5–30 min. Refresh. It turns green.
What's actually happening
You type saadmukhtar.dev
↓
DNS lookup → Cloudflare returns Vercel's IP
↓
Browser hits Vercel, Host: saadmukhtar.dev
↓
Vercel: I know that domain → your site loads