WordPress emails not arriving? We fix delivery, SPF, DKIM and DMARC.
Enquiries that never reach your inbox. Order confirmations in spam. Password resets that never come. WordPress says the email was sent, and nobody gets it. We reply within 30 minutes during business hours, diagnose for free and agree a fixed price in writing before we start.
"Sent" only means WordPress handed it over.
By default WordPress hands each message to PHPMailer and the web server's own mail system. Both report success as soon as the message is accepted, which WordPress's own documentation says does not necessarily mean anyone received it.
The web server's mail function
Without an SMTP setup, WordPress sends through PHP mail() on your host. Many hosts limit or quietly drop this mail, and PHP's manual is clear that "accepted for delivery" does not mean it will arrive.
A From address your domain never approved
If nothing sets a sender, WordPress sends from wordpress@ plus your domain. Many forms send "from" the visitor's Gmail address instead. Either way, the receiving server sees mail claiming a domain whose records never allowed your web server to send for it.
Missing or broken SPF
SPF is the DNS record that lists who may send for your domain, and a domain may have only one. Two SPF records, or one that needs more than ten DNS lookups, is a permanent error and protects nothing.
No DKIM signature
DKIM signs each message so the receiver can check it came from someone your domain trusts and was not changed. Mail from PHP mail() on shared hosting is usually not signed for your domain at all.
Website and mailboxes at different providers
Site on one host, mailboxes on Google Workspace or Microsoft 365. Every alert goes out as your domain, to your domain, from a server that is not your mail provider. It breaks quietly, as in our case study below.
Mailbox provider rules
Gmail and Yahoo (since February 2024) and Outlook.com (for high-volume senders, since May 2025) set authentication rules for senders. Mail that fails them goes to spam or is refused. The details are further down this page.
Four checks that narrow it down in ten minutes.
None of these changes anything, and together they tell you, or us, which cause it is.
Note which messages fail: form alerts to you, order emails to customers, password resets, or all of them. Then whether it is every recipient or only some. "Everything, to everyone" points at the server or the sending setup. "Only Gmail" or "only Outlook" points at authentication.
Check spam and junk where the message should arrive. Mail in spam was delivered and then judged, which is a different fix from mail that never arrived. Then check the site: if the form entry or order is saved but the email is not, the problem sits between WordPress and the inbox. If the entry is missing too, it is a form or site error.
Send a test to a Gmail address. If it arrives, even in spam, open it and choose More, then Show original. The Authentication-Results line shows whether SPF, DKIM and DMARC passed, and which domain the server actually used. That one line usually names the cause.
In your DNS, look for TXT records that start with v=spf1. There should be exactly one. A second one, often added by a newsletter tool or a new mail provider, breaks both. Merge them into one record instead of deleting the one that looks old.
What the three records do, and the rules behind them.
Most guides stop at "install an SMTP plugin". That moves the sending, but if the domain's records do not match the new sender, the mail still lands in spam. This is what we check and set.
One TXT record listing everything allowed to send as your domain: your mailbox provider, the website's sending service, your newsletter tool. Each include costs DNS lookups and the limit is ten, so we keep it to what you use.
Your mail provider or sending service signs each message with a private key, and a DNS record publishes the public key. We switch DKIM on for every service that sends as your domain, website included, and check it passes on real messages.
DMARC ties SPF and DKIM to the address in the From line and tells receivers what to do with mail that fails: none (deliver and report), quarantine or reject. Its aggregate reports show every server sending as your domain. Going straight to reject can block your own invoices or newsletters if one service was missed, so we start at none, fix every legitimate sender the reports show, and tighten over a few weeks.
Gmail and Yahoo, since February 2024: every sender needs SPF or DKIM, valid forward and reverse DNS, and a spam rate below 0.3%. Senders of about 5,000 or more messages a day to Gmail also need SPF and DKIM, DMARC at least at none with the From domain aligned, and one-click unsubscribe on marketing mail. Outlook.com, since May 2025: domains sending over 5,000 a day need SPF, DKIM and DMARC, or their mail goes to Junk. A small site is far below those volumes, but the first rule applies to every sender.
From missing emails to tested delivery.
A fixed price, not an hourly meter.
-
01
You tell us what is missing
The URL, which emails fail, to whom, and since when, and where your mailboxes are hosted: Google Workspace, Microsoft 365, your web host or elsewhere.
-
02
Free diagnosis
We reply within 30 minutes during business hours. Then we trace where the email stops and send you what needs to change and the fixed price, in writing.
-
03
Backup, then the fix
You approve the price. We back up the site, move sending to an authenticated route, set the From address and correct SPF, DKIM and DMARC. Then we send test messages and check each one passes.
-
04
Documented, with recurrence support
A short writeup of what was wrong, what changed and which DNS records now exist, plus 14 to 30 days of recurrence support: if the same problem returns in that window, we fix it again at no charge.
A real one: the log full of successes.
A maintenance client's enquiry form kept saving leads but stopped emailing anyone. Read the full case study.
Leads were still landing in the database, so the form worked. The send log showed PHP mail() returning true for about 1,800 submissions going back months, with no failures, including the client's own test that morning. The site's delivery-status field stored that same return value, so it could only ever say success.
The site was on shared hosting and the mailboxes on Google Workspace. Every notification went out as the company's domain, to the company's domain, from a machine that was not Google, and the domain's sender authentication was permissive and incomplete.
Authenticated SMTP straight into Google Workspace, with an automatic fallback so a half-finished deployment could not take the form offline, and real SMTP errors written to the log and the lead record. We also removed a stray send that mailed internal lead data to the visitor. Reported before 09:00, verified by 11:30 the same morning. No enquiry was lost: all were still in the database and went back to the team that day.
Three tiers, the same as every WordPress fix.
The free diagnosis shows which one fits. You get the fixed price in writing before we start.
Quick Fix
One sending problem- Form or site email moved to authenticated sending
- From address set for your domain
- Backup taken before deployment
- Same-day fix typically
- 14 days of recurrence support
- Documented fix
Emergency
Store emails failing or orders going unseen- Order or password emails not arriving
- Critical e-commerce errors
- Priority response
- Backup before any change
- Test orders to confirm customers receive them
- Documented fix
Multi-Issue
Several senders, or SPF, DKIM and DMARC for the whole domain- Up to 5 related issues
- Full site review
- Performance check included
- Security baseline established
- 30 days of recurrence support
- Prevention recommendations
All prices exclude VAT. Diagnosis is always free. A paid sending service, if you need one, is billed by that provider, not by us. Other problems: WordPress fixes and WooCommerce fixes.
No fix, no fee. In writing.
If we agree to fix your email delivery and cannot do it within the agreed scope, you do not pay. Diagnosis is always free, the price is fixed in writing before we start, and nothing is billed beyond that scope without your approval.
Questions about WordPress not sending email.
Tell us which emails are missing.
Send the URL, which emails fail, to whom and since when. We reply within 30 minutes during business hours.
- Free diagnosis before any quote
- Backup before we change anything
- DNS changes only with your approval
- No fix, no fee
Describe the problem
Write URGENT if customers are not getting order emails.