Records to publish
Hosts are full names, with {domain} standing for your domain; most DNS panels want only the part before it (@ for the domain itself). Anything else in {braces} is specific to your Klaviyo account: copy it from Klaviyo's setup screen, which shows the exact record.
| For | Type | Host | Value |
|---|---|---|---|
| Domain verification | TXT | {domain} | klaviyo-site-verification={public-api-key}On the root domain; if a TXT value already exists there, you can append Klaviyo's. |
| Sending subdomainDynamic routing (recommended) | NS | {sending-subdomain}.{domain} | {four name servers shown in Klaviyo}Four NS records on a subdomain such as send.{domain}; Klaviyo then hosts DKIM and the rest of that zone. |
| Sending subdomainStatic routing | CNAME | {sending-subdomain}.{domain} | {value shown in Klaviyo}The sending subdomain itself, such as send.{domain}; Klaviyo's values differ per account. |
| DKIMStatic routing | CNAME | km1._domainkey.{domain} | {value shown in Klaviyo}Marketing domains; transactional domains use kt1/kt2, service domains ks1/ks2, and a second domain takes the next pair. |
| DKIMStatic routing | CNAME | km2._domainkey.{domain} | {value shown in Klaviyo} |
| DMARC | TXT | _dmarc.{domain} | v=DMARC1; p=none; rua=mailto:{report-address}Klaviyo calls DMARC a requirement for branded sending to Gmail and Yahoo, and offers to add p=none if you have none. |
SPF
No SPF change is needed on your root domain. Klaviyo says the SPF its branded sending domain needs comes with the sending subdomain's CNAME or NS records, and it bases DMARC on DKIM rather than SPF.
DKIM
With static routing, two CNAMEs on the root domain point to klaviyodns.com: km1._domainkey and km2._domainkey for marketing (kt1/kt2 transactional, ks1/ks2 service; static domains set up before send types keep kl1/kl2). With dynamic routing, Klaviyo serves the DKIM records inside the delegated subdomain. Klaviyo shows the exact values in its setup screen, and they differ per account.
DMARC alignment
DKIM: once a branded sending domain under your From address's root domain is active, Klaviyo signs with your own domain (in addition to a shared Klaviyo domain), so DMARC passes. Klaviyo doesn't promise SPF alignment.
Common mistakes
- Use the root domain in the From address, not the sending subdomain: Klaviyo says not to send from @send.yourbusiness.com.
- With dynamic routing, records you add for the subdomain at your DNS host won't take effect; add them in Klaviyo's Manage DNS zone instead.
- Disable proxying (Cloudflare and similar) for Klaviyo's records and keep it disabled.
- DNS hosts that append the root domain turn values into something.klaviyodns.com.example.com, so add a trailing period.
- On Klaviyo's shared sending domain, mail from a DMARC-protected From domain is always misaligned; a branded sending domain fixes that.
- Klaviyo doesn't apply a verified domain automatically, and new accounts or domains registered within the last 30 days must warm up first.
Check that it worked
DNS changes can take a few minutes to show. Then run the free checks, no account needed:
How EmailSecOps recognises Klaviyo
A domain check names the services it finds in your DNS, leftovers from older setups included, so you can see which senders are set up and which are missing a key:
- Default DKIM selectors: km1, km2, kt1, kt2, ks1, ks2, kl1, kl2
- DKIM keys delegated (CNAME) to *.klaviyodns.com
Questions
What SPF record does Klaviyo need?+
What are the DKIM records for Klaviyo?+
Does Klaviyo mail pass DMARC?+
Do I need a separate DMARC record for Klaviyo?+
Sources
- How to set up a branded sending domain (Klaviyo Help Center)
- DNS and SPF setup troubleshooting in Klaviyo
- How to manage DNS records for a dynamic branded sending domain
- Understanding email authentication
- Understand the domains that play a role in email deliverability
- Troubleshooting branded sending domain issues
- Email deliverability FAQs