SPF, DKIM and DMARC Explained for Small Store Owners
If you send order confirmations, newsletters or promotions from your own domain, three short DNS records decide a lot about whether those emails reach the inbox: SPF, DKIM and DMARC. Gmail and Yahoo now require them from senders, and strictly from anyone sending in bulk. This guide explains what each one does in plain language, how they fit together, what the big mailbox providers ask for, and a safe order for setting them up, without assuming you’re a DNS expert.
Updated

Why these three records matter
Anyone can type any address into the “From” line of an email. That’s how phishing emails pretend to come from banks and well-known brands. Mailbox providers like Gmail and Yahoo need a way to check whether an email that says it’s from your-store.com was really sent with your permission.
SPF, DKIM and DMARC are that check. They are records you publish in your domain’s DNS (the settings at your domain registrar or DNS host). Receiving mail servers look them up and use them to decide whether to trust a message.
For a small store, setting them up does two things:
- Your real emails are more likely to be delivered. Gmail and Yahoo have published requirements that include these records. Mail that doesn’t meet them can be rejected or sent to spam.
- It’s harder for others to impersonate you. With DMARC enforced, a scammer sending fake “your order has shipped” emails from your domain is much more likely to be blocked.
The quick version
| Record | Question it answers | Where it lives | Plain-English analogy |
|---|---|---|---|
| SPF | Is this server allowed to send mail for this domain? | A TXT record on your domain, starting with v=spf1 | A guest list at the door |
| DKIM | Was this message signed by the domain, and was it changed on the way? | A public key in a TXT record at selector._domainkey.your-domain | A tamper-evident seal on the envelope |
| DMARC | Do SPF or DKIM pass for the domain in the From line, and what should happen if not? | A TXT record at _dmarc.your-domain | The house rules: what to do with guests who fail the check, and a report on who tried |
SPF: who is allowed to send
SPF (Sender Policy Framework) is defined in RFC 7208. You publish a list of the servers and services that are allowed to send email for your domain. A receiving server compares the server that delivered the message against that list.
An SPF record is a single TXT record that starts with v=spf1. A typical small-business record looks something like this:
your-store.com. TXT "v=spf1 include:_spf.your-mail-provider.example include:mail.your-newsletter-tool.example ~all"Each include: adds the servers of a service you use: your mailbox provider, your store platform’s order emails, your newsletter tool. The ending says what to think of everything else: -all means “not authorized” (fail), and ~all is a weaker “probably not” (softfail). Your providers will tell you exactly what to add; you rarely write one from scratch.
Three things about SPF trip people up:
- Only one SPF record per domain. RFC 7208 says multiple SPF records “are not permitted” for the same name, and having more than one produces an error (permerror). When you add a new service, edit the existing record to add another include:. Don’t create a second record.
- The 10-lookup limit. The RFC limits SPF evaluation to 10 DNS-querying terms (such as include, a, mx and redirect). Each include can contain more lookups inside it. Stack too many services and SPF fails with a permerror. If you’re near the limit, remove services you no longer use.
- SPF checks a hidden address, not the visible From. SPF checks the “envelope” sender (the MAIL FROM address used during delivery) and the HELO name, not the From address your customer sees. Many newsletter services use their own envelope domain, which is why SPF alone often doesn’t line up with your brand domain. DMARC, below, deals with this.
DKIM: a signature that proves the message is genuine
DKIM (DomainKeys Identified Mail) is defined in RFC 6376. In the RFC’s words, it lets an organization “claim some responsibility for a message by associating a domain name with the message.”
Here’s how it works in practice:
- Your email provider creates a pair of keys: a private key it keeps, and a public key you publish in DNS.
- When the provider sends your email, it adds a DKIM-Signature header, a cryptographic signature of key headers and the body, made with the private key. The signature includes d= (the domain taking responsibility) and s= (the selector, a name for the key).
- The receiving server looks up the public key at selector._domainkey.domain and checks the signature. If it matches, the message really came through a system holding your key and wasn’t changed in transit.
Selectors let one domain have several keys at once, so your mailbox provider and your newsletter tool can each sign with their own key without clashing. Providers usually give you one or two records to add, often as CNAME records pointing to keys they manage, which lets them rotate keys for you.
DKIM has two practical advantages over SPF. It survives normal forwarding, because the signature travels with the message, as long as the content isn’t modified. And the signing domain (d=) can be your own domain even when a third-party service sends the email. That’s what makes it the easiest path to DMARC alignment for newsletter tools.
Gmail’s sender guidelines say a DKIM key must be at least 1024 bits and recommend 2048 bits (Google). If your provider offers a choice, pick 2048.
DMARC: the policy that ties it together
DMARC (Domain-based Message Authentication, Reporting, and Conformance) builds on SPF and DKIM. It was first published as RFC 7489 in 2015 and is now on the Internet standards track as RFC 9989, which obsoletes RFC 7489. It adds two things SPF and DKIM don’t have on their own: alignment and a policy.
Alignment means the domain that passed SPF or DKIM must match the domain in the visible From line. A message from news@your-store.com with a valid DKIM signature for d=your-store.com is aligned. A message with a valid signature for d=newsletter-tool.example is authenticated, but not aligned with your brand, so it doesn’t pass DMARC for your domain.
In the default “relaxed” mode, subdomains count: a DKIM signature for your-store.com aligns with a From address on news.your-store.com. In “strict” mode, the domains must match exactly. Yahoo’s guidelines say relaxed alignment is acceptable, and most small senders don’t need strict mode.
The policy tells receivers what to do when a message fails DMARC. It’s published as a TXT record at _dmarc.your-domain:
_dmarc.your-store.com. TXT "v=DMARC1; p=none; rua=mailto:dmarc-reports@your-store.com"| Tag | Meaning | Typical values |
|---|---|---|
| v | Version, must come first | DMARC1 |
| p | Policy for mail that fails | none (monitor only), quarantine (treat as suspicious, often spam folder), reject (refuse it) |
| rua | Where to send aggregate reports | mailto: an address you (or a report service) read |
| sp | Policy for subdomains, if different | none, quarantine or reject |
| adkim / aspf | Alignment mode for DKIM / SPF | r (relaxed, the default) or s (strict) |
The reports are the part small senders overlook. With rua set, participating mailbox providers send you aggregate reports showing which servers sent mail using your domain and whether it passed. The reports are XML files and are hard to read raw, so many people send them to a DMARC report service that turns them into charts. They show you the services you forgot about (an old invoicing tool, a booking system) before you tighten your policy. DMARC.org recommends starting with p=none to collect data, then moving toward quarantine and reject as you gain confidence.
What Gmail and Yahoo require
Since February 2024, Gmail has enforced sender requirements, and Yahoo publishes matching rules. Both distinguish between all senders and bulk senders. Google defines bulk senders as those sending more than 5,000 messages a day to Gmail accounts (Google; Yahoo).
| Requirement | All senders | Bulk senders |
|---|---|---|
| SPF and DKIM | SPF or DKIM | Both SPF and DKIM |
| DMARC | Recommended (Google says to set up SPF, DKIM and DMARC) | Required; policy can be p=none |
| Alignment | — | From domain must align with SPF or DKIM domain |
| Spam rate | Below 0.3% (Google also recommends staying below 0.10%) | Same |
| One-click unsubscribe | — | Required for marketing and subscribed messages, plus a visible unsubscribe link in the body; Yahoo says to honor unsubscribes within 2 days |
| Other technical items | TLS for sending, valid reverse DNS (PTR), messages formatted per RFC 5322 | Same |
Google says messages that don’t meet the requirements may be rejected or marked as spam. Most small stores send far fewer than 5,000 emails a day to Gmail, but the bulk-sender rules are a good target anyway: they’re not hard to meet with a reputable email provider.
One-click unsubscribe is defined in RFC 8058. The message carries a List-Unsubscribe header with an HTTPS link and a List-Unsubscribe-Post: List-Unsubscribe=One-Click header, both covered by a valid DKIM signature. That lets a mail app unsubscribe the reader with a single action, without sending them to a web page. Your newsletter tool adds these headers; you just need to confirm with them that it does.
TLS, reverse DNS and message formatting are handled by your email provider’s servers. You don’t set them up yourself, but they’re a good reason to send through an established provider rather than a server you run on your own.
How to set them up: a safe order
You’ll need access to your domain’s DNS settings and admin access to each service that sends email for you. Take it one step at a time.
- List everything that sends email as your domain. Your mailbox (Google Workspace, Microsoft 365 or similar), your store platform’s order and shipping emails, your newsletter or marketing tool, help desk, invoicing, booking or review-request tools. Anything that puts @your-store.com in the From line counts.
- For each service, find its authentication instructions. Look in the service’s help center for “SPF,” “DKIM,” “domain authentication” or “sender authentication.” If you can’t find them, ask the service’s support team which records it needs. They will give you the exact values.
- Set up DKIM for every service. Add the records each service gives you, then complete its verification step. This is the most important step for alignment.
- Build one SPF record. Combine the include: values from each service into a single v=spf1 record. Check you have only one, and keep the lookup count under 10.
- Publish DMARC at p=none with reports. Add a _dmarc record with an rua address. Wait a few weeks and read the reports.
- Fix anything that fails. If reports show a legitimate service failing alignment, go back to step 2 for that service.
- Tighten the policy. When legitimate mail consistently passes, move to p=quarantine, and later to p=reject if you’re comfortable.
A worked example: a store with three senders
Imagine a small online shop at your-store.com. It uses a hosted mailbox for everyday email, its store platform for order confirmations, and a newsletter tool for promotions. All three put @your-store.com in the From line.
| Service | SPF | DKIM | Aligned for DMARC? |
|---|---|---|---|
| Mailbox provider | Its include: added to the single SPF record | Provider’s DKIM record added, signs as your-store.com | Yes, through SPF and DKIM |
| Store platform (order emails) | Its include: added, if the platform asks for one | Platform’s domain authentication completed, signs as your-store.com | Yes, through DKIM |
| Newsletter tool | Often uses its own envelope domain, so SPF may pass for the tool’s domain rather than yours | Tool’s domain authentication completed, signs as your-store.com | Yes, through DKIM |
The pattern is the important part. DKIM on your own domain is what makes every service line up, even when SPF can’t. Once all three show DMARC pass in the headers and in the reports, the shop can move from p=none to p=quarantine with confidence that its real mail won’t be caught.
How to check whether your emails pass
You don’t need special software for a basic check. Send an email from each service (a test newsletter, a test order confirmation) to a personal Gmail or Yahoo address. Open it and view the full message headers. Most webmail apps offer an option to show the original message or the message source. Look for the authentication results lines, which report spf=, dkim= and dmarc= as pass or fail, along with the domains involved.
What you want to see for each service: DKIM pass with your own domain, and DMARC pass. If DKIM passes but for the provider’s domain instead of yours, domain authentication for that service isn’t finished.
Google also offers Postmaster Tools, where domain owners can monitor their spam rate and authentication results for mail sent to Gmail.
Common mistakes
| Mistake | What happens | Fix |
|---|---|---|
| Two SPF records | SPF returns an error, so it effectively fails for every message | Merge them into one record |
| Sending from a free mailbox address through a marketing tool | The From domain (for example, gmail.com) isn’t yours, so you can’t authenticate it; Google says not to impersonate Gmail From headers | Use an address on your own domain |
| DKIM left on the provider’s default domain | DKIM passes but doesn’t align, so DMARC fails for your domain | Complete the provider’s domain authentication |
| Jumping straight to p=reject | A forgotten service’s mail (invoices, receipts) is refused | Start at p=none and read reports first |
| No one reads the DMARC reports | Problems go unnoticed until customers say emails didn’t arrive | Send reports to a monitored address or a report service |
| Unsubscribe links that don’t work quickly | Higher spam complaints, which can hurt delivery | Confirm your tool processes unsubscribes promptly and supports one-click |
Where marketingLABO fits
marketingLABO’s dashboard doesn’t include DNS or email authentication settings, so this setup happens with your domain host and with each service that sends email for you. For any email tool, including the one you use for newsletters, ask the provider which SPF and DKIM records it needs and whether it supports one-click unsubscribe.
Once your emails reliably reach the inbox, the next question is what people do with them. marketingLABO tracks email opens and link clicks, and journeys (Standard plan) can branch on whether someone clicked or came back to your site. People who unsubscribe don’t receive the remaining emails in a journey. Because privacy features in some mail apps inflate open counts, we recommend leaning on clicks and returns; see are email open rates still reliable? for why. For a first automated flow, see our welcome email series guide, and check pricing for which plan includes newsletters and journeys.
Frequently asked questions
I only send a few hundred emails a month. Do I really need all three?
Gmail and Yahoo’s minimum for all senders is SPF or DKIM, but Google’s guidance is to set up all three. They protect your domain from impersonation regardless of volume, and setting them up while your sending is simple is much easier than untangling it later.
Will DMARC p=none protect me from spoofing?
No. p=none only asks for reports; it doesn’t tell receivers to block anything. It’s the safe first step, and it meets the bulk-sender DMARC requirement, but protection against impersonation comes from quarantine or reject.
My store platform sends order emails. Do I need to do anything?
If those emails use your own domain in the From line, yes: the platform needs to be authorized in SPF and set up for DKIM on your domain. Check your platform’s help center for its domain authentication steps, or ask its support team.
Do these records affect my website?
No. They are TXT (and sometimes CNAME) records that only mail servers read. They don’t change your site, but take care not to edit or delete other DNS records while you’re there.
What about forwarded email?
Forwarding often breaks SPF, because the forwarding server isn’t on your list. DKIM usually survives if the message isn’t modified. That’s one more reason to make sure DKIM is set up and aligned for every service.
Checklist
- List every service that sends email using your domain.
- Set up DKIM on your own domain for each one (2048-bit if offered).
- Publish exactly one SPF record that includes every sending service, under 10 lookups.
- Publish DMARC at p=none with an rua address, and read the reports.
- Confirm your newsletter tool supports one-click unsubscribe and a visible unsubscribe link.
- Keep spam complaints low: send only to people who asked, and make leaving easy.
- Move to quarantine, then reject, once legitimate mail consistently passes.
Ready to see what happens after the email lands? Create a free account and start with site analytics and visitor history.
Sources
- Google Workspace Admin Help, “Email sender guidelines” (accessed October 12, 2026): https://support.google.com/a/answer/81126
- Yahoo Sender Hub, “Sender Best Practices” (accessed October 12, 2026): https://senders.yahooinc.com/best-practices/
- DMARC.org, “Overview” (accessed October 12, 2026): https://dmarc.org/overview/
- RFC 7208, Sender Policy Framework (SPF) (accessed October 12, 2026): https://www.rfc-editor.org/rfc/rfc7208
- RFC 6376, DomainKeys Identified Mail (DKIM) Signatures (accessed October 12, 2026): https://www.rfc-editor.org/rfc/rfc6376
- RFC 7489, DMARC (original, now obsoleted) (accessed October 12, 2026): https://www.rfc-editor.org/rfc/rfc7489
- RFC 9989, DMARC (standards track) (accessed October 12, 2026): https://www.rfc-editor.org/rfc/rfc9989
- RFC 8058, Signaling One-Click Functionality for List Email Headers (accessed October 12, 2026): https://www.rfc-editor.org/rfc/rfc8058
Start free — no credit card needed
Sign up freeMore articles

CAN-SPAM Compliance Checklist for E-commerce Emails
A practical CAN-SPAM checklist for online stores: which emails count as commercial, the FTC requirements, footer and unsubscribe setup, and a pre-send check.
Read the article →
GDPR and Email Marketing: Consent Basics for Small Online Shops
How GDPR and the ePrivacy rules apply to a small shop’s marketing emails: consent vs. the customer exception, sign-up form wording, records and unsubscribes.
Read the article →
How to Add Custom Code to the Head of a Wix Site (Settings > Custom Code)
Add a script to the head of every Wix page with Settings > Custom Code: plan and domain requirements, load options, code type, testing and fixes.
Read the article →
Squarespace Code Injection: Adding a Tracking Tag to Every Page
Use Squarespace code injection to add a tracking tag to the head of every page: which plans include it, where to find it in 7.1 and 7.0, and how to test it.
Read the article →
What Is Marketing Automation? A Plain-English Guide for Small Online Stores
Marketing automation in plain English: tracking, segments and triggered messages, with small-store examples, starter automations and the email rules to follow.
Read the article →
How to Add a Tracking Script to Your Shopify Store (theme.liquid, Step by Step)
Add a tracking script to your Shopify theme.liquid safely: back up, paste before </head>, test, roll back, and know what checkout and thank-you pages allow.
Read the article →