Adding DMARC, SPF, and DKIM records at any provider
When trustyourinbox does not have a one-click integration with your DNS host, you can still apply every fix yourself. The mechanics are nearly identical everywhere once you know the three field names and the one rule that changes per provider. Here is the universal version.
Step 1: Find who actually hosts your DNS
This is the step everyone skips, and it is the number one reason a record edit appears to do nothing. Where you bought the domain is not always where its DNS is answered. You might have registered at GoDaddy but moved DNS to Cloudflare, or bought through a reseller whose records live with the web host. The only reliable source of truth is the domain's NS records:
dig +short NS yourdomain.com
No terminal? Use dns.google with type NS, or any “DNS lookup” site. Then match the suffix of the answer (ignore the ns1 / ns01 prefix, which varies) to its owner:
domaincontrol.comis GoDaddyregistrar-servers.comis Namecheap (butnamecheaphosting.commeans your DNS is in cPanel)ns.cloudflare.comis Cloudflarens-cloud-*.googledomains.comis Google Cloud DNSazure-dns.com/.net/.org/.infois Azure DNSawsdns-*(across.com/.net/.org/.co.uk) is AWS Route 53squarespacedns.comis Squarespace (where Google Domains moved)dns-parking.comis Hostingerui-dns.*is IONOSbluehost.comis Bluehostovh.netis OVHcloudwixdns.netis Wixdigitalocean.comis DigitalOcean*.ns.porkbun.comis Porkbun
Each provider above has its own step-by-step guide. If yours is not listed, the steps are the same everywhere: the editor, the four record shapes, and the verify step below.
Step 2: Add the record
Every DNS editor, whatever it calls things, gives you the same handful of fields:
- Type is always
TXTfor DMARC, SPF, DKIM, and the MTA-STS pointer. (Some DKIM setups use a CNAME instead, but your provider tells you which.) - Name (sometimes Host or Hostname) is the prefix. Enter only the part before your domain; the panel appends the domain for you.
- Value (sometimes Data or Content) holds the record string.
- TTL controls how long resolvers cache the answer. A short value (300 to 3600 seconds) is fine while you set up.
The one thing that genuinely differs by provider is how you write the apex (your root domain, for the SPF record). Most panels (GoDaddy, Namecheap, Cloudflare, and the like) use @. A few cloud providers (AWS Route 53 and Google Cloud DNS) want the name field left blank instead, and reject @. When in doubt, check the provider guide.
DMARC
Type: TXT Name: _dmarc Value: v=DMARC1; p=none; rua=mailto:you@yourdomain.com
Start at p=none to watch, then move past p=none. The DMARCbis update (RFC 9989, published 2026) keeps the v=DMARC1 string and the _dmarc name unchanged, so existing records keep working.
SPF
Type: TXT Name: @ (or blank on Route 53 / Cloud DNS) Value: v=spf1 include:_spf.yourprovider.com ~all
Exactly one v=spf1 record per domain. A second one is a failure that makes all your authorized senders look unauthorized, so edit the existing record rather than adding another. Keep it under ten DNS lookups; our SPF builder handles that.
DKIM
Type: TXT Name: selector._domainkey Value: v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG... (your full public key)
Your sending provider supplies the selector and key. A 2048-bit key is longer than the 255-character limit for a single DNS string, so it has to be split into multiple quoted pieces. Providers differ on how: some split it for you (Azure, GoDaddy), some need you to split it by hand (Route 53, Google Cloud DNS). One subtlety: the leading v=DKIM1 tag is recommended rather than strictly required, but if it is present it must come first. And an empty p= value does not mean “no key”; it signals a revoked key, so never publish one by accident.
MTA-STS pointer
Type: TXT Name: _mta-sts Value: v=STSv1; id=20260623000000
This TXT record is only a pointer. The policy itself is a file served over HTTPS at mta-sts.yourdomain.com, which trustyourinbox can host for you. TLS-RPT (_smtp._tls) is the same TXT shape.
The traps that catch everyone
- Editing DNS at the registrar when it lives elsewhere. Step 1 exists for exactly this. Confirm the NS records first.
- Typing the full domain in the Name field. Almost every panel appends your domain, so
_dmarc.yourdomain.combecomes_dmarc.yourdomain.com.yourdomain.com. Type only the prefix. - Two SPF records. Merge into one
v=spf1record. - Smart quotes. Copying from a document can turn straight quotes into curly ones, which many panels reject. Paste from a plain-text editor.
Step 3: Verify it published
dig +short TXT _dmarc.yourdomain.com dig +short TXT yourdomain.com | grep spf1 dig +short TXT selector._domainkey.yourdomain.com
Or paste the hostname into dns.google (type TXT), or use whatsmydns.net to watch it propagate across the world. The record is correct the moment your own lookup returns the new value. Other resolvers may serve the old answer until the previous TTL expires, which is normal, not a mistake.
Tell trustyourinbox to recheck
Each per-domain protocol tab has a Recheck button next to the current record. Click it once your edit resolves and we re-run the lookup against Cloudflare and Google in parallel, then refresh the dashboard.
Keep reading
Run a free DMARC audit
Paste your domain and read your published SPF, DKIM, and DMARC back in plain English.
GoDaddy step by step
On GoDaddy specifically? Here is the exact current path.
How we change DNS safely
The safety layers behind an automated fix, and why a hand edit deserves the same care.
DMARC record builder
Generate the exact _dmarc value to paste, whatever panel you are in.
Last verified 2026-06-23 against the DMARC standard (RFC 7489).
Free for one domain. Set up in five minutes. We parse the reports; you read plain-English summaries.