All platforms
CRM-matched DNS
SendGrid · 4 CNAME + 1 TXT · DKIM · LINK · DMARC
SendGrid DNS Checker
SendGrid sends from your domain using its own required records
, 4 CNAME + 1 TXT covering DKIM, LINK, DMARC. A generic SPF test
cannot see whether they match. We check your live DNS against
SendGrid’s spec, host by host, character by character.
Free, no account.
domain only, we strip email and protocol automatically
What SendGrid requires
SendGrid: 3 CNAME for DKIM/SPF + 1 CNAME for link branding + 1 TXT for DMARC. This is the exact table our verifier checks
your DNS against, not a generic template.
| Type | Host | Required value | Purpose |
| CNAME | s1._domainkey | s1.domainkey.uXXXXXX.wl.sendgrid.net | DKIM |
| CNAME | s2._domainkey | s2.domainkey.uXXXXXX.wl.sendgrid.net | DKIM |
| CNAME | em | uXXXXXX.wl.sendgrid.net | LINK |
| CNAME | url | sendgrid.net | LINK |
| TXT | _dmarc | v=DMARC1; p=none; rua=mailto:[email protected] | DMARC |
Segments shown as XXXXXX are account-specific, SendGrid generates them for your account. The checker treats them as wildcards: the structure must match, the account part is yours.
How SendGrid authenticates
SendGrid handles DKIM by delegation: you publish 2 CNAME records (selectors s1, s2) pointing into s1.domainkey.uXXXXXX.wl.sendgrid.net, and SendGrid hosts and rotates the actual signing keys on its side. You never see the public key, which also means a checker that only looks for TXT keys at _domainkey will wrongly report DKIM as missing here.
Note what is NOT in the table: SendGrid does not ask for an SPF include on this hostname. Its mail passes SPF on its own return-path domain, so adding one anyway does nothing for SendGrid and spends one of your ten SPF lookups.
The non-DKIM CNAMEs handle tracking or bounce domains. They carry no authentication themselves, but SendGrid's setup screen will not verify the domain until they resolve.
DMARC is yours, not the platform's: one record at _dmarc governs every sender on the domain. If another tool already publishes it, do not add a second; the spec row above shows the minimum this platform expects to find.
Mistakes we see on SendGrid domains
Publishing the CNAME target as a TXT record. The record type matters: a TXT with the right value still is not a delegation, and the key lookup dies at your zone.
Proxying the _domainkey CNAMEs through a CDN. They must resolve as plain DNS; an orange-clouded record answers with the CDN's addresses and the key disappears.
Why a generic checker misses this
A standard DNS tool tells you your SPF parses and your DMARC exists. It has no
idea SendGrid is in the picture. It cannot tell you a required CNAME points at
the wrong target, a selector is missing, or the include chain never reaches
SendGrid’s servers, which are precisely the failures that put
SendGrid mail in spam while every generic check shows green.
Common questions
What DNS records does SendGrid require?
SendGrid requires 5 DNS records: 4 CNAME + 1 TXT, covering DKIM, LINK, DMARC. The exact hosts and values are in the table above, they come from the same spec table our verifier checks against.
Why does a normal SPF checker pass my domain but SendGrid mail still fails?
A generic checker only tests whether your SPF record parses. It does not know which include SendGrid needs, which CNAME targets its DKIM keys live behind, or which selector names it signs with. We compare your live DNS against SendGrid’s required records character by character, so a missing include or a typo in a CNAME target is called out by name.
What do the XXXXXX parts in SendGrid’s records mean?
Those segments are account-specific, SendGrid generates them for your account and shows the exact values in its sending-domain setup screen. Our checker treats them as wildcards: the structure around them must match, the account-specific part is yours.
Will adding these records break my existing email?
The DKIM CNAMEs and the DMARC record are additive. SPF is the one to be careful with: a domain must publish exactly one SPF record, so if you already have one, merge the new include into it rather than adding a second record, two SPF records is an automatic PermError.
Keep going