A visitor fills in your contact form, sees “Thank you for your message” — and the email never reaches you. It’s one of the most common WordPress problems, and one of the most costly, because nobody notices until an enquiry is missed.
The good news: the cause is usually one of a handful of things, and the fix is durable once it’s in place.
First: check whether submissions were saved
Many form plugins store entries in the database as well as sending them by email. Check the plugin’s entries screen. If the submissions are there, the form works and the problem is email delivery. If they aren’t, the problem is the form itself — a script conflict, a spam filter or a broken submit button.
The most common causes
- The server’s default mail function. WordPress sends email through PHP on the web server by default. Many hosts restrict it, and many inboxes distrust it.
- Missing domain authentication. Without SPF, DKIM and DMARC records, receiving servers can’t confirm your site may send for your domain.
- A mismatched “From” address. Sending “from” a Gmail address or a different domain through your server is a classic spam signal.
- Form notification settings. A changed recipient address, a typo, or notifications switched off after an update.
- Spam filtering on your side. The email arrives but goes to spam, or is quarantined by a company mail filter.
How to find which one you have
- Send a test submission with an address you control, and check spam and quarantine folders.
- Check the form’s notification settings: recipient, “From” address and reply-to.
- Send a test email from WordPress itself — most SMTP plugins include a test tool and an email log.
- Look up your domain’s DNS records for SPF and DKIM.
The durable fix: send through a real email service
Instead of relying on the web server, route WordPress email through an authenticated service — your company’s email provider or a transactional service such as Postmark, Mailgun, Brevo or Amazon SES. An SMTP plugin (for example WP Mail SMTP or FluentSMTP) connects WordPress to it.
- Choose a sending service and verify your domain with it.
- Add the SPF, DKIM and DMARC records it provides to your DNS.
- Configure the SMTP plugin and send a test email.
- Enable the plugin’s email log, so failures are visible in the future.
Keep it working
Email delivery can break again later: an API key expires, DNS changes during a migration, or a new plugin overrides the settings. A regular check of your main form catches the page-side problems — see how we monitor WordPress forms and what a weekly check can and can’t prove. And every so often, send yourself a real enquiry from your phone.
Frequently asked questions
Why does my WordPress form say it was sent when no email arrives?
The form plugin saved the submission and handed the message to WordPress successfully — but the email was then blocked, filtered as spam or rejected by the receiving server. The form did its job; delivery failed afterwards.
Do I need an SMTP plugin?
For most business sites, yes. Sending through a proper email service with authentication makes delivery far more reliable than the server’s default mail function.
What are SPF, DKIM and DMARC?
DNS records that prove your domain allows a service to send email on its behalf. Without them, messages from your site are much more likely to be rejected or marked as spam.
Can I still see messages that never arrived?
Often, yes. Many form plugins store entries in the WordPress database. Check the plugin’s entries screen before assuming enquiries are lost.