Step-by-step SPF, DKIM and DMARC setup for Google Workspace domains: the smtp.google.com MX record, include:_spf.google.com, a 2048-bit DKIM key with the google selector, and a safe DMARC rollout from p=none to quarantine and reject.
Home › Guides › Google Workspace email authentication
Last updated 17 October 2026
For a domain that sends mail only through Google Workspace, you publish three DNS records and turn on DKIM signing in the Admin console:
@ TXT v=spf1 include:_spf.google.com ~all google._domainkey TXT v=DKIM1; k=rsa; p=<key from the Admin console> _dmarc TXT v=DMARC1; p=none; rua=mailto:dmarc-reports@example.com
SPF and DMARC are DNS-only: Google says you don't need to do anything in the Admin console for them. DKIM needs both a key generated in the Admin console and a click on Start authentication after the TXT record is live. Once DMARC reports look clean, move from p=none to p=quarantine and then p=reject.
Google's sender guidelines require every sender to personal Gmail accounts to set up SPF or DKIM, and bulk senders (more than 5,000 messages a day) to set up all three. See the bulk sender requirements guide for the full checklist.
MX records control inbound mail, not authentication, but they are the first thing to confirm when you move a domain to Google Workspace. Google's current MX record is a single host:
Type: MX Name: @ Priority: 1 Value: smtp.google.com
aspmx. Google says those are still supported, so if mail works, no change is needed.smtp.google.com.); others add it for you.See what a domain publishes today with the MX Record Lookup, and confirm changes worldwide with the DNS Propagation Checker.
If Google Workspace is the only service that sends as your domain, add this TXT record at the root of the domain (host @):
v=spf1 include:_spf.google.com ~all
If other services send as you, put them all in the same record. Examples from Google's own table:
v=spf1 include:_spf.google.com include:spf.protection.outlook.com ~all (Google Workspace + Microsoft 365) v=spf1 include:_spf.google.com include:amazonses.com ~all (Google Workspace + Amazon SES) v=spf1 include:_spf.google.com include:servers.mcsv.net ~all (Google Workspace + Mailchimp) v=spf1 include:_spf.google.com include:_spf.salesforce.com ~all (Google Workspace + Salesforce)
v=spf1 is a permanent error and SPF fails._spf.google.com listed Google's IP ranges directly, so it cost one lookup. Google can change that, so recount after every edit with the SPF Record Checker.~all (soft fail). With -all, receivers are more likely to reject mail from unlisted servers, which also makes problems harder to troubleshoot; Google suggests using DMARC reports to find every sender if you go that way. Either way, your DMARC policy is what really decides what happens to spoofed mail.Combine senders with the SPF Record Builder. Google says SPF can take up to 48 hours to start working.
google, which Google recommends. Only enter a different prefix if your domain already has a DKIM key named google (for example from an older setup).google._domainkey) and a TXT record value in the form v=DKIM1; k=rsa; p=....If you have more than one domain in the Workspace account, repeat this for each one. Google says every domain needs its own unique DKIM key from the Admin console.
google._domainkey (most DNS hosts add your domain automatically, so don't type google._domainkey.example.com or you may end up with the domain twice). Value: the full v=DKIM1; k=rsa; p=... string."v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA...first part..." "...second part...IDAQAB"
Check that the record is live and complete with the DKIM Checker (it tries the google selector along with other common ones) and paste the value into the DKIM Record Explainer to confirm it is a 2048-bit RSA key. Google says it can take up to 48 hours for DKIM to start working after you add the key.
Authentication-Results you want dkim=pass with header.d= your domain, plus spf=pass.If the header has no DKIM line at all, messages aren't being signed: re-check the Admin console status and the TXT record.
Google says to have SPF and DKIM authenticating mail for at least 48 hours before you turn on DMARC. Then create a dedicated group or mailbox for reports (you can get many each day) and publish a TXT record at host _dmarc:
Host: _dmarc Type: TXT Value: v=DMARC1; p=none; rua=mailto:dmarc-reports@example.com
v and p tags must come first.rua needs the mailto: prefix. For several addresses, separate them with commas and put mailto: before each one.example.com sent to reports.example.net need TXT example.com._report._dmarc.reports.example.net with value v=DMARC1;. Third-party DMARC report services already do this.ruf tag has no effect there.adkim=r, aspf=r). Google says relaxed typically gives enough spoofing protection, and strict alignment can send mail from your own subdomains to spam or get it rejected.Build the record with the DMARC Record Generator and check what's live with the DMARC Record Checker.
Google's recommended rollout:
p=none for about one week and read the reports daily. Google says a week is usually enough for the reports to show all your mail streams. Fix any legitimate sender that fails SPF and DKIM alignment.p=quarantine for a small percentage of mail with pct. Google's example is v=DMARC1; p=quarantine; pct=5; rua=mailto:dmarc@example.com. It suggests a small organization might start at 10% and a large one at 1%.pct over time until the policy covers 100% (leaving pct out means 100%).v=DMARC1; p=reject; rua=mailto:dmarc-reports@example.com, where receivers refuse mail that fails DMARC.The newer DMARC standard (RFC 9989) drops pct, so some receivers may apply your full policy even while you publish a percentage. Only raise the policy when your reports are clean. The DMARC rollout guide covers pct, t=y and np= in more detail. If you plan to use BIMI, Google requires p=quarantine or p=reject with pct=100; the BIMI Record Generator builds the record.
sp= tag, subdomains inherit the parent domain's DMARC policy. SPF and DKIM are different: each sending subdomain needs its own SPF record and its own DKIM key.spf.protection.outlook.com) when the domain actually sends through Google, or the reverse.google prefix when another service already publishes a DKIM key at google._domainkey for your domain. Google says to enter a different prefix in that case.@) instead of _dmarc, or leaving out mailto: in rua.p=reject before reports show every legitimate sender passing.Need SPF, DMARC and MX checks across a whole client list? Run the Bulk SPF / DMARC / MX Auditor on Apify ($2 per 1,000 domains).
Check the whole domain with the Email Deliverability Checker, look up MX records with MX Record Lookup, build and test SPF with the SPF Record Builder and SPF Record Checker, find and grade DKIM keys with the DKIM Checker, and create and verify DMARC with the DMARC Record Generator and DMARC Record Checker. Read test messages in the Email Header Analyzer. Related guides: Gmail, Yahoo and Outlook bulk sender requirements and, for Microsoft 365 domains, SPF, DKIM and DMARC.
If Google Workspace is your only sender, publish v=spf1 include:_spf.google.com ~all as a TXT record at the domain root. Add other senders to the same record, for example include:spf.protection.outlook.com for Microsoft 365, and keep the whole record under 10 DNS lookups.
The default prefix selector is google, so the DKIM key is published as a TXT record at google._domainkey.yourdomain. Google recommends keeping the default unless your domain already has a DKIM key with that name.
Use 2048-bit if your DNS host supports it, because longer keys are more secure. A 2048-bit key is longer than 255 characters, so split it into several quoted strings in one TXT record. Choose 1024-bit only if your DNS host cannot store the longer key.
You must be signed in as a super administrator, and Google says to wait 24 to 72 hours after turning on Gmail for your organization. Generating a key earlier can fail with an error that the DKIM record was not created.
After SPF and DKIM have been working for at least 48 hours, publish v=DMARC1; p=none; rua=mailto:dmarc-reports@yourdomain at host _dmarc. Watch reports for about a week, then move to p=quarantine with a small pct value, raise it to 100 and finish at p=reject.
Runbooks, checklists and helpdesk templates: IT Admin Packs on Gumroad.