Apex domain (naked / root domain)
The bare domain without any subdomain prefix. The DNS standard doesn't allow CNAME records here, which is the root cause of a lot of custom-domain setup pain.
An apex domain (also called naked domain or root domain) is the bare hostname: example.com. Compare with a subdomain: www.example.com or shop.example.com.
Why the apex is special
DNS allows CNAME records only on non-apex hostnames. The apex has to use:
- A record (IPv4) or AAAA record (IPv6) pointing at a literal IP, or
- NS records (delegating the zone), or
- No record (which means the apex doesn't resolve).
You cannot do example.com CNAME edge.someapp.com at the apex. RFC 1034 says so. Every major SaaS that supports custom domains has a help-doc paragraph about this.
Why this matters for SaaS
Your customer's first instinct is to point their bare domain (janesbakery.com) at your app. Your standard instruction is "add a CNAME to edge.yourapp.com." They try. Their DNS provider rejects it with "CNAME not allowed at root." They blame your app.
The three workarounds
- Use
www.instead. Tell customers to pointwww.janesbakery.comat your app via CNAME, then 301-redirect the apex to www at their registrar. Most reliable. - CNAME flattening. Some DNS providers (Cloudflare, DNSimple, Route 53 with ALIAS) let you "fake" a CNAME at the apex by resolving it server-side and returning A records. See CNAME flattening.
- A record to your edge IPs. You publish a small set of fixed edge IPs, customer adds A records pointing at them. Works, but you can never rotate those IPs without breaking every customer.
Most custom-domain APIs default to (1) and offer (2) as a paid tier or recommendation if the customer's DNS provider supports it.