The symptom
- Customers say they never received the order confirmation; support asks "did my order go through?".
- Gmail shows a red "?" avatar or "be careful with this message" on your emails.
- DNS has no
v=spf1TXT record, no_dmarcrecord, or WooCommerce sends via PHPmail()from the web server.
Why it matters
Since 2024 Gmail, Yahoo and Outlook require SPF and DKIM alignment plus a DMARC policy for bulk senders and increasingly for everyone. Unauthenticated mail is filtered or rejected. A shop whose confirmations vanish loses repeat customers and gets chargebacks.
Without DMARC, anyone can send mail "from" your shop domain — phishing your customers with your brand.
How to check it yourself
- Look up TXT records for your domain and
_dmarc.yourdomain: e.g.dig TXT yourstore.comanddig TXT _dmarc.yourstore.com, or use MXToolbox. - Send a test order to a Gmail address and open *Show original*: SPF, DKIM and DMARC should each say PASS.
- The free Aivoma check reads your SPF and DMARC records live.
How to fix it
- Send through an authenticated SMTP or API service (Brevo, Postmark, Amazon SES, Mailgun, or your mail provider) using WP Mail SMTP or FluentSMTP — never PHP mail() from the web host.
- SPF: one TXT record on the root domain listing every sender, e.g.
v=spf1 include:spf.brevo.com include:_spf.google.com ~all. Only one SPF record is allowed; max 10 lookups. - DKIM: add the CNAME/TXT keys the service gives you; enable signing for the exact From domain used in WooCommerce → Settings → Emails.
- DMARC: start with
v=DMARC1; p=none; rua=mailto:[email protected], review reports for two weeks, then move top=quarantineand finallyp=reject. - Set the WooCommerce "From" address to the authenticated domain (not gmail.com), and add a reply-to that is monitored.