KB-003: Why Atlantis Uses Cloudflare CNAME Flattening
| Field | Detail |
|---|---|
| Document ID | KB-003 |
| Version | 1.0 |
| Date | March 2026 |
| Author | Gemi (Gemini — Atlantis AI) |
| Reviewed By | Shane Hardin |
| Applies To | Apex/root domain DNS — atlantisits.ai, atlantisits.co |
| Difficulty | Intermediate |
| Est. Time | 5 minutes to read, 5 minutes to configure |
| Related Docs | KB-002 — Cloudflare to Vercel DNS Only, KB-004 — Error 1014 |
1. Overview
This article explains what CNAME Flattening is, why standard DNS doesn't support CNAMEs at the root domain, and how Cloudflare solves this problem automatically for Atlantis domains.
This is particularly relevant for atlantisits.ai — the newly acquired AI-first domain that needs to point to Vercel without relying on a static IP address.
2. The Problem — Why You Can't CNAME a Root Domain
Standard DNS has a rule: you cannot place a CNAME record at the apex (root) of a domain.
The apex is the naked domain — atlantisits.ai with no subdomain prefix. The DNS standard only allows an A record (a static IP address) at the apex.
This creates a real problem for modern hosting:
- Vercel, Netlify, and similar platforms don't give you a static IP — they give you a CNAME target like
cname.vercel-dns.com - Their IP addresses change as they scale and update their infrastructure
- If you hardcode an A record IP today, it may stop working when Vercel updates their servers
Standard DNS Rule:
atlantisits.ai → A Record (must be a static IP) ← problem: Vercel IPs change
www.atlantisits.ai → CNAME (allowed on subdomains) ← this works fine
3. The Solution — Cloudflare CNAME Flattening
Cloudflare solves this with a feature called CNAME Flattening. It works like this:
- You add a CNAME record at the apex in Cloudflare (e.g.,
atlantisits.ai → cname.vercel-dns.com) - Cloudflare resolves the CNAME behind the scenes in real time
- When a visitor's browser requests
atlantisits.ai, Cloudflare returns the current IP of the CNAME target — not the CNAME itself - The visitor gets a valid IP address, DNS standards are satisfied, and Vercel's current infrastructure is always used
How CNAME Flattening Works:
Browser requests atlantisits.ai
↓
Cloudflare resolves cname.vercel-dns.com → gets current IP (e.g., 76.76.21.9)
↓
Cloudflare returns that IP to the browser
↓
Browser connects to Vercel using the current IP
↓
Vercel serves atlantisits.ai — always up to date
💡 TIP: CNAME Flattening is a Cloudflare-specific feature — it is not available in standard DNS providers like GoDaddy DNS or Route 53 (without extra configuration). This is one of the reasons Atlantis uses Cloudflare as the DNS layer for all domains.
4. Configuration
Step 1 — Add the CNAME Record at the Apex
- Log in to dash.cloudflare.com as
Srhardin@gmail.com - Select your domain (e.g.,
atlantisits.ai) - Click DNS → Records
- Click Add Record
| Field | Value |
|---|---|
| Type | CNAME |
| Name | @ (the apex/root) |
| Target | cname.vercel-dns.com |
| Proxy Status | ☁️ DNS Only (Grey Cloud) |
| TTL | Auto |
- Click Save
⚠️ NOTE: Cloudflare will automatically detect that this is an apex CNAME and apply flattening. You do not need to configure anything additional — the feature activates automatically for apex CNAME records.
Step 2 — Verify CNAME Flattening is Active (Optional)
To confirm flattening is working, you can check via the Cloudflare dashboard:
- In DNS → Records, look at the record you just created
- The record type will show as CNAME in Cloudflare's UI
- Externally (via
nslookupordig), the record will resolve as an A record with an IP — this confirms flattening is active
# Run in PowerShell to verify — should return an IP address, not a CNAME
Resolve-DnsName atlantisits.ai -Type A
5. CNAME Flattening vs Standard DNS
| Scenario | Standard DNS | Cloudflare CNAME Flattening |
|---|---|---|
| Root domain → static IP | ✅ A Record works | ✅ A Record also works |
| Root domain → Vercel/Netlify CNAME | ❌ Not allowed by DNS standard | ✅ Supported via flattening |
| IP changes when provider scales | ❌ Must manually update A Record | ✅ Auto-resolves current IP |
| Works on subdomains | ✅ CNAME supported natively | ✅ Also supported |
| Requires Cloudflare | N/A | ✅ Yes — Cloudflare-specific feature |
6. Atlantis Domain Context
| Domain | Record | Method | Notes |
|---|---|---|---|
atlantisits.ai |
CNAME @ → cname.vercel-dns.com |
CNAME Flattening | Newly acquired AI domain — March 2026 |
atlantisits.co |
A Record @ → Vercel IP |
Standard A Record | Primary domain |
www.atlantisits.co |
CNAME www → cname.vercel-dns.com |
Standard CNAME | Subdomain — no flattening needed |
ai.atlantisits.co |
CNAME ai → Vercel target |
Standard CNAME | Roofing Lead Engine |
7. Troubleshooting
| Error / Symptom | Cause | Fix |
|---|---|---|
| "Cannot add CNAME at apex" error | Attempting this in a non-Cloudflare DNS provider | Migrate DNS to Cloudflare or use an A record with a static IP |
| Root domain resolves but www doesn't | www CNAME not added separately | Add a separate CNAME for www → cname.vercel-dns.com |
| Error 1014 on apex domain | CNAME cross-user conflict | See KB-004 — set Proxy Status to DNS Only |
| Site works on IP but not domain | DNS not propagated | Wait 5 minutes, then run Resolve-DnsName to confirm |
Cloudflare shows CNAME but nslookup shows A Record |
This is correct — flattening is working as expected | No action needed |
8. Quick Reference
| Item | Value |
|---|---|
| Feature name | CNAME Flattening |
| Who provides it | Cloudflare (automatic for apex CNAMEs) |
| When to use it | Pointing a root/apex domain to Vercel, Netlify, or any CNAME-based host |
| Record type in Cloudflare UI | CNAME |
| Record type seen externally | A Record (IP) — flattening resolves it |
| Proxy Status required | ☁️ DNS Only (Grey Cloud) for Vercel compatibility |
| Vercel CNAME target | cname.vercel-dns.com |
| Verify with PowerShell | Resolve-DnsName atlantisits.ai -Type A |
| Related error | Error 1014 → see KB-004 |
Document prepared by Gemi (Gemini — Atlantis AI Automations)
atlantisits.info | KB-003 | v1.0 | March 2026