What the records mean
Theverification_records array on a freshly-connected domain contains one or more entries. Each entry is one DNS record you need to publish.
type | Why it’s there |
|---|---|
A | Apex domain (acme.com) routing — value is the IP edge addresses traffic should hit. |
CNAME | Subdomain routing (scans.acme.com, support.acme.com) — value is the host edge addresses traffic should hit. |
TXT | Ownership proof for domains that already exist on another account. Less common — only appears when the upstream needs explicit ownership confirmation. |
The records returned are upstream-specific. Always read them from
verification_records on your response — don’t hard-code IPs or hostnames.Apex vs subdomain
Thedomain shape determines which record you publish:
www.<apex> 308 redirect — point www at the same CNAME target and visitors to either form land on the canonical apex.
Propagation
DNS changes propagate at the speed of your provider’s TTL. Common timings:- Cloudflare, Vercel DNS, Route 53: under 5 minutes
- Squarespace, GoDaddy default: 10–30 minutes
- Cached intermediaries (some corporate networks): up to ~24 hours
verified without you doing anything. If you want a faster signal, call POST /custom-domains/{id}/verify after publishing the records — it’s safe to retry as often as you like.
Troubleshooting
- Status stuck on pending
- check_error mentions another account
- Verify returns error
DNS hasn’t propagated yet. Confirm the records resolve with If these return nothing or the wrong value, the record isn’t live yet — give it more time or check your DNS provider’s UI.
dig:Once verified
Onceverified: true, the TLS cert provisions in the background (usually within 30 seconds) and the domain starts serving traffic. Visitors hitting the hostname see whatever you’ve configured via Custom Domain Routes.
A verified domain with no routes returns a generic “domain configured but no routes” placeholder. Set up at least one route — typically a default route at slug "" — to start serving content.
