SPF, DKIM and DMARC for online stores: meeting Gmail and Yahoo sender rules
What SPF, DKIM and DMARC do, what Gmail, Yahoo and Outlook.com require from senders, how to set them up on Shopify and WooCommerce, and how to reach p=reject.
FixReports editorial team10 min read
To meet Gmail and Yahoo sender rules, every online store needs SPF or DKIM on its sending domain, and bulk senders need both, plus a DMARC record of at least p=none with the visible From domain aligned to SPF or DKIM. Bulk senders must also offer one-click unsubscribe on marketing email and keep their reported spam rate below 0.3%. On Shopify that means authenticating your sender domain in the admin and adding a DMARC record; on WooCommerce it means sending through an authenticated email provider. Once DMARC reports show all your legitimate mail passing, you can move the policy towards p=reject.
Key points
- Since 1 February 2024, Gmail requires all senders to set up SPF or DKIM, and bulk senders to set up SPF, DKIM and DMARC (Google (opens in a new tab)).
- Gmail treats you as a bulk sender once you send close to 5,000 messages to personal Gmail accounts in 24 hours, and that status does not expire (Gmail FAQ (opens in a new tab)).
- Starting November 2025, Gmail ramped up enforcement on non-compliant traffic, including temporary and permanent rejections (Gmail FAQ (opens in a new tab)).
- Outlook.com has required SPF, DKIM and DMARC from domains sending more than 5,000 emails a day since 5 May 2025 (Microsoft (opens in a new tab)).
- SPF allows at most 10 DNS-querying terms per check; going over returns a
permerror(RFC 7208 (opens in a new tab)). - DMARC was updated in May 2026: RFC 9989 (opens in a new tab) obsoletes RFC 7489 and replaces the
pcttag witht.
What do SPF, DKIM and DMARC actually do?
SPF lists who may send for your domain, DKIM signs each message, and DMARC ties both to the From address your customers see.
| Record | What it proves | Where it lives | Standard |
|---|---|---|---|
| SPF | The sending server is authorised for the domain used in the envelope (MAIL FROM) | TXT record on the domain | RFC 7208 (opens in a new tab) |
| DKIM | The message was signed by the domain and not changed in transit | TXT record at selector._domainkey.example.com | RFC 6376 (opens in a new tab) |
| DMARC | SPF or DKIM passed for a domain aligned with the visible From domain; tells receivers what to do on failure and where to send reports | TXT record at _dmarc.example.com | RFC 9989 (opens in a new tab) |
Alignment is easy to miss. Your email platform can pass SPF for its own bounce domain while your From address shows your store's domain. That message passes SPF but fails DMARC unless DKIM is signed with your domain.
What do Gmail and Yahoo require from senders?
Both require authentication from every sender and add stricter rules for bulk senders.
For all senders, Gmail requires SPF or DKIM, valid forward and reverse DNS, TLS, RFC 5322 formatting and a spam rate below 0.3% in Postmaster Tools (Google (opens in a new tab)). Yahoo requires at least SPF or DKIM and a spam rate below 0.3% (Yahoo Sender Hub (opens in a new tab)). For bulk senders:
| Requirement | Gmail | Yahoo |
|---|---|---|
| SPF and DKIM | Both | Both |
| DMARC | Required; policy can be none | Valid policy of at least p=none, and DMARC must pass |
| Alignment | From domain aligned with SPF or DKIM domain | Same; relaxed alignment accepted |
| One-click unsubscribe | Marketing and subscribed messages, per RFC 8058, plus a visible link | List-Unsubscribe header with one-click support for marketing and subscribed messages |
| Honour unsubscribes | Within 48 hours (recommended) | Within 2 days |
| Spam rate | Below 0.3%; Google recommends below 0.10% | Below 0.3% |
Some details matter for stores:
- Gmail counts by domain. Messages from the same primary domain count towards the 5,000 limit, so order emails, marketing and support replies add up.
- Only personal Gmail accounts count. The guidelines don't apply to messages sent to Google Workspace accounts.
- Transactional mail is exempt from one-click unsubscribe. Order confirmations still need authentication.
One-click unsubscribe uses two headers defined in RFC 8058 (opens in a new tab), which also requires a valid DKIM signature covering them:
List-Unsubscribe: <https://example.com/unsubscribe/opaquepart>
List-Unsubscribe-Post: List-Unsubscribe=One-Click
To confirm your marketing platform adds them, open the raw source of one of your own campaigns.
What changed after February 2024?
Enforcement has tightened in steps, and other mailbox providers have adopted similar rules.
| Date | Change | Source |
|---|---|---|
| February 2024 | Gmail and Yahoo requirements take effect (Yahoo rolled out enforcement gradually) | Google (opens in a new tab), Yahoo (opens in a new tab) |
| June 2024 | Gmail: bulk senders with a spam rate above 0.3% become ineligible for mitigation | Gmail FAQ (opens in a new tab) |
| 1 June 2024 | Gmail deadline for one-click unsubscribe for senders that already had an unsubscribe link | Gmail FAQ (opens in a new tab) |
| 5 May 2025 | Outlook.com requirements for domains sending over 5,000 emails a day; Microsoft's 29 April update says failing messages are rejected with 550 5.7.515 | Microsoft (opens in a new tab) |
| November 2025 | Gmail ramps up enforcement, including temporary and permanent rejections | Gmail FAQ (opens in a new tab) |
| May 2026 | RFC 9989 obsoletes RFC 7489 as the DMARC specification | IETF (opens in a new tab) |
Outlook.com's rules apply to its consumer addresses (outlook.com, hotmail.com and live.com) and require SPF and DKIM to pass and DMARC of at least p=none aligned with SPF or DKIM.
How do you set up SPF, DKIM and DMARC on Shopify?
Authenticate your sender domain in the Shopify admin, then add one DMARC record at your DNS host.
Shopify's email setup guide (opens in a new tab) says that as of 1 February 2024, Gmail and Yahoo require an authenticated domain and a DMARC record to send from a branded address. If authentication records aren't configured, Shopify rewrites your sender address to the store+123@shopifyemail.com format. The steps:
- In the Shopify admin, go to Settings > Notifications.
- In the Sender email section, click authenticate your domain.
- Add every CNAME record shown at your DNS provider. The number can vary. Shopify says these records handle SPF and DKIM for your sender address, and that you don't need to add IP addresses.
- Allow up to 48 hours for DNS changes.
- Add a TXT record with the name
_dmarcand the valuev=DMARC1; p=none;, which Shopify uses as its default.
If you bought your domain from Shopify or transferred it there, Shopify manages these records for you. Shopify also warns that a domain can have only one DMARC record, and that strict alignment settings (adkim=s or aspf=s) should be removed or changed to r.
Shopify's authentication covers mail Shopify sends. If you use another platform for campaigns, a help desk, or Google Workspace for staff mail, each one needs its own DKIM setup and, where it uses your domain for bounces, its own SPF entry.
How do you set up email authentication for WooCommerce?
Send WooCommerce email through a dedicated provider that signs with your domain, as WooCommerce's own documentation recommends.
WooCommerce sends mail using the WordPress wp_mail() function, and its email FAQ (opens in a new tab) recommends a dedicated SMTP provider as more reliable than your own server's mail function. A typical setup:
- Choose a transactional email provider and verify your domain with it. The provider gives you the DKIM records and the SPF include to publish.
- Connect WordPress to that provider with an SMTP or API plugin.
- Set the From address in WooCommerce > Settings > Emails to an address on your own domain. WooCommerce warns that a public address such as one on Gmail or Yahoo is likely to land in spam or be blocked.
- Publish a DMARC record at
_dmarc.yourdomain. - Check WooCommerce > Status > Logs and filter for the
transactional-emailssource to see which messages were sent or failed.
If your web host also sends mail for the domain, authenticate it or switch it off. Any system that sends as your domain without aligned SPF or DKIM will fail DMARC.
What is the SPF 10-lookup limit and how do you stay under it?
An SPF check may use at most 10 terms that need DNS queries; one more and the result is permerror, so SPF does not pass.
RFC 7208, section 4.6.4 (opens in a new tab) lists the terms that count: the include, a, mx, ptr and exists mechanisms and the redirect modifier. The ip4, ip6 and all mechanisms do not count. Includes nested inside your includes count too, because the limit applies to the whole evaluation. The RFC also recommends limiting "void lookups" (queries that return no answer) to two, and says the ptr mechanism should not be published.
Ways to stay under 10:
- Remove includes for services you no longer use.
- Use
ip4orip6for servers you run with fixed addresses. - Move marketing mail to a subdomain such as
news.example.com, which has its own SPF record and its own count. - Never publish two SPF records. RFC 7208 forbids multiple records and evaluation returns
permerror.
example.com. TXT "v=spf1 include:_spf.google.com include:spf.example-esp.com ~all"
news.example.com. TXT "v=spf1 include:spf.example-marketing.com ~all"
spf.example-esp.com and spf.example-marketing.com stand in for whatever your providers tell you to use.
How do you move DMARC from p=none to p=reject?
Start at p=none with reporting, fix every legitimate source the reports reveal, then tighten the policy.
| Stage | Record | Goal |
|---|---|---|
| 1. Monitor | v=DMARC1; p=none; rua=mailto:dmarc@example.com | Collect aggregate reports on who sends as your domain |
| 2. Fix | No change | Make each legitimate source pass aligned SPF or DKIM |
| 3. Quarantine | v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com | Failing mail goes to spam |
| 4. Reject | v=DMARC1; p=reject; rua=mailto:dmarc@example.com | Failing mail is refused |
Move to the next stage only when reports show your store platform, marketing tool, help desk and staff mail all passing. Aggregate reports are defined in RFC 9990 (opens in a new tab). If the rua address is on another domain, such as a reporting service, that domain has to publish a record authorising the reports.
Older guides suggest rolling out with pct=25 or pct=50. RFC 9989 removed pct (its registry entry is now "historic") because values other than 0 and 100 were applied inconsistently. In its place, t=y asks receivers to apply the next-lower policy, for example quarantine instead of reject. Use t=y rather than partial percentages if you want a trial step.
_dmarc.example.com. TXT "v=DMARC1; p=quarantine; t=y; rua=mailto:dmarc@example.com"
_dmarc.example.com. TXT "v=DMARC1; p=reject; sp=reject; rua=mailto:dmarc@example.com"
An enforced policy also opens up BIMI, which displays your logo in supporting inboxes. Gmail requires DMARC at p=quarantine or p=reject and a Verified Mark Certificate or Common Mark Certificate for it (Google (opens in a new tab)). For mail coming in to your domain, MTA-STS (RFC 8461 (opens in a new tab)) lets you tell sending servers to refuse delivery to your mail servers if they don't offer TLS with a trusted certificate.
How can you check your store's records?
Query the three record types with dig, or use a checker that reads them for you.
dig +short TXT example.com
dig +short TXT _dmarc.example.com
dig +short TXT selector._domainkey.example.com
The DKIM selector comes from your provider, and you can find it in the s= value of the DKIM-Signature header on a message you sent. The Email Deliverability Report reads your public DNS, counts SPF lookups, tries common DKIM selectors and checks DMARC policy, rua, pct, BIMI and MTA-STS. Correct records help, but no record set guarantees inbox placement, because mailbox providers also weigh spam complaints and sending behaviour.
Frequently asked questions
Do I need DMARC if my store sends fewer than 5,000 emails a day?
Gmail only requires DMARC from bulk senders, but Shopify notes that Gmail and Yahoo require an authenticated domain and a DMARC record to send from a branded address. A p=none record is low risk and gives you reports, so most stores should publish one.
Can my domain have two SPF records?
No. RFC 7208 says a domain must not have multiple SPF records, and when it does, SPF evaluation returns permerror. Merge all senders into one record.
Will p=reject block my Shopify order emails?
Not if Shopify's CNAME records are in place and your DMARC reports show Shopify mail passing aligned DKIM. Check the reports before moving past p=none, and keep alignment relaxed as Shopify recommends.
Is the DMARC pct tag still valid?
RFC 9989, published in May 2026, removed pct and introduced t=y for test mode. Google's BIMI guidance still asks for pct=100, which is the default when the tag is absent, so leaving pct out is the simplest choice for new records.
Does passing SPF, DKIM and DMARC guarantee my emails reach the inbox?
No. Authentication is a requirement, not a guarantee. Gmail and Yahoo also look at spam complaint rates, unsubscribe handling and message formatting.
Sources
- Email sender guidelines (opens in a new tab), Google, accessed 22 October 2026
- Email sender guidelines FAQ (opens in a new tab), Google, accessed 22 October 2026
- Sender best practices (opens in a new tab), Yahoo Sender Hub, accessed 22 October 2026
- Strengthening Email Ecosystem: Outlook's New Requirements for High-Volume Senders (opens in a new tab), Microsoft Tech Community, 2 April 2025, updated 29 April 2025
- Setting up your email (opens in a new tab), Shopify Help Center, accessed 22 October 2026
- Email FAQ (opens in a new tab), WooCommerce documentation, accessed 22 October 2026
- RFC 7208: Sender Policy Framework (SPF) (opens in a new tab), IETF, April 2014
- RFC 6376: DomainKeys Identified Mail (DKIM) Signatures (opens in a new tab), IETF, September 2011
- RFC 7489: Domain-based Message Authentication, Reporting, and Conformance (DMARC) (opens in a new tab), IETF, March 2015 (obsoleted by RFC 9989)
- RFC 9989: Domain-Based Message Authentication, Reporting, and Conformance (DMARC) (opens in a new tab), IETF, May 2026
- RFC 9990: DMARC Aggregate Reporting (opens in a new tab), IETF, May 2026
- RFC 8058: Signaling One-Click Functionality for List Email Headers (opens in a new tab), IETF, January 2017
- RFC 8461: SMTP MTA Strict Transport Security (MTA-STS) (opens in a new tab), IETF, September 2018
- Set up BIMI (opens in a new tab), Google Workspace Admin Help, accessed 22 October 2026
All guides
- Accessibility overlays and the FTC's accessiBe order: what store owners should knowThe FTC's 2025 order made accessiBe pay $1 million over WCAG compliance claims. What the order says, what it doesn't, and what stores using overlays should do.
- Core Web Vitals for online stores: LCP, INP and CLS explainedWhat LCP, INP and CLS measure, the good and poor thresholds at the 75th percentile, lab vs field data, and the usual fixes on Shopify and WooCommerce stores.
- Got an ADA website demand letter? What to check firstWhat ADA website demand letters usually allege, how WCAG fits in, what to gather, why overlays don't fix code, and when to call a lawyer. Not legal advice.