The short answer
Most of the time the form works and the email is the problem: WordPress hands the message to your web server, which sends it without proving it comes from your domain, so Gmail or Outlook junks or rejects it. Check whether the form saved the entry, then set WordPress up to send through a proper mail account (SMTP) with SPF, DKIM and DMARC records in place.
A contact form that shows “Thank you, your message has been sent” only tells you the form accepted the message. It doesn’t tell you the email went anywhere. Between the form and your inbox there are three separate steps: the form, WordPress’s own mail sending, and the mail systems at both ends. The fix depends on which step is failing, so it pays to work out which one first.
Is this what you’re seeing?
- Visitors get the “message sent” confirmation, but nothing arrives in your inbox.
- Enquiries used to arrive, then stopped after a plugin update or a move to new hosting.
- Some messages arrive and some don’t, or they turn up hours late.
- Enquiries arrive in your junk or spam folder, or not at all for Gmail or Outlook addresses.
- Customers say they never got their confirmation email from your site.
- Your shop’s order emails arrive, but the contact form’s don’t (or the other way round).
What usually causes it
WordPress sending mail with no proof it’s from you
Out of the box, WordPress sends email through your web server’s basic mail function. It doesn’t sign in to a mail account, so the receiving mail service has no reason to trust it. Since 2024, Gmail and Yahoo have tightened their rules, and Microsoft has followed for Outlook.com. Mail that can’t show it really came from your domain is far more likely to be junked or refused. How to tell: install an email log plugin (or use the log in your SMTP plugin), send a test, and see whether WordPress says it sent the message. If it says “sent” but nothing arrives, the problem is delivery, not the form.
The From address doesn’t match your domain
Many forms are set up to send the email “from” the visitor’s own address, so you can hit Reply. That looks to Gmail like your web server pretending to be Gmail, and it’s exactly what anti-spoofing rules are designed to block. How to tell: open the form’s notification settings. If the From field is the visitor’s email (often a tag like [your-email] or {field_id="2"}), that’s a problem. The From address should be one on your own domain, with the visitor’s address in Reply-To instead.
Missing or wrong SPF, DKIM and DMARC records
These are DNS records on your domain that tell other mail services which servers may send email for you (SPF), let them check each email is signed (DKIM) and say what to do with mail that fails (DMARC). If your site sends mail but your SPF record only lists Microsoft 365 or Google, your website’s mail fails the check. How to tell: look up your domain with a free DNS lookup tool, such as MXToolbox or Google’s Admin Toolbox. Check there’s one SPF record (starting v=spf1) and a DMARC record at _dmarc.yourdomain, and that they cover whatever your site sends mail through.
The notification is going to the wrong place, or is switched off
Form plugins send a “notification” to an address set in the form, not necessarily the one you think. It might be an old staff address, the address of whoever built the site, or a typo. Notifications can also be switched off altogether. How to tell: open the form’s notification or mail settings (it’s called “Notifications” in WPForms, Gravity Forms and Forminator, and the “Mail” tab in Contact Form 7) and check the To address and that it’s turned on.
Your host blocking outgoing mail
Some hosts limit or block email sent straight from the web server, and some cloud servers, AWS Lightsail among them, block the usual mail port by default. How to tell: your email log shows errors such as “could not connect” or “SMTP connect() failed”, or your host’s documentation says outgoing mail needs to go through an external service.
A plugin update or hosting move changed things
After a move, the new server may not be allowed to send mail, and your SPF record still lists the old one. An update to the form plugin or an SMTP plugin can reset settings or need you to reconnect an account. How to tell: the problem started on a date you can tie to the move or an update.
Spam protection catching real messages
reCAPTCHA, Cloudflare Turnstile, Akismet and honeypot fields all decide whether a submission is genuine. Set too strictly, or with keys for the wrong domain after a move, they can block real people or quietly file them as spam. How to tell: check the form plugin’s spam list, if it has one, and try the form yourself from a phone on mobile data.
What you can safely try
Take a backup first. Every step here can be undone.
- Check your junk or spam folder, and if you use Microsoft 365, the quarantine too.
- Look in the form plugin’s entries screen to see whether the message was saved. Forminator and Gravity Forms save entries as standard. WPForms only does on its paid version. Contact Form 7 doesn’t save them unless you add a plugin such as Flamingo. If the entries are there, the form works and the email is the problem. If they’re not, the form itself (or spam protection) is.
- Check the form’s notification settings: the To address, that the notification is on, and that the From address is on your own domain.
- Install an email log plugin, send a test enquiry, and see whether WordPress tried to send it and whether it reported an error.
- Look up your domain’s SPF and DMARC records with a public lookup tool, and note what they say. Don’t change DNS records unless you’re sure what they do, because a wrong SPF record can stop all your email, not just the website’s.
- Install an SMTP plugin, such as WP Mail SMTP, FluentSMTP or Post SMTP, and connect it to a real mail account or a sending service. With Google Workspace, use the plugin’s Google connection or Google’s SMTP relay. Microsoft 365 is moving away from simple username-and-password SMTP, so use the plugin’s Microsoft connection if it has one. Send its test email. You can switch it off again if it doesn’t help.
When to stop and get help
- You’d need to add or change DNS records and aren’t sure what’s there now. Getting SPF wrong can stop your normal email working.
- Order or booking emails are affected, and customers think they haven’t paid or booked.
- The form isn’t saving entries either, so you don’t know what you’ve already missed.
- Your site is sending lots of email you didn’t write. That’s a sign of spam or a hacked site, not a settings problem.
- You’ve set up SMTP and it still doesn’t arrive.
A real example
The pattern I come across most often has nothing to do with the form. The form works and saves every entry. WordPress hands each notification to the web server, which sends it “from” the visitor’s address, with no sign-in and no DKIM signature, on a domain whose SPF record only lists the office email provider. Gmail and Outlook have every reason to reject it. It worked for years, until the big mail providers tightened their rules, which is why it seems to have broken for no reason. The fix is in three parts: send from an address on your own domain, send through a proper mail account, and get the domain’s records right so the mail can be trusted.
Getting it fixed
I’ll check whether the form, WordPress or the email set-up is failing, then fix the part that’s broken: the notification settings, SMTP, and your domain’s SPF, DKIM and DMARC records, tested with real enquiries to Gmail and Outlook addresses. See WordPress forms and email for what’s covered. A WordPress repair is a fixed £119, which covers finding the problem and up to 90 minutes of fixing it. Most repairs fit in that, and you’re never charged more without agreeing first.
If you’re missing enquiries right now and can’t wait, there’s a fixed-price emergency fix for a contact form that isn’t sending. See emergency WordPress support.
Questions
My form stopped working after a plugin update. What changed?
Often a setting was reset, a new required field was added, or a connected SMTP or spam-protection plugin now needs reconnecting. Check the form’s notification settings and the email log first. If the whole site broke after the update, see finding what caused a critical error.
Enquiries stopped arriving after we changed hosting. Why?
The new server sends mail differently. It may block outgoing mail, it isn’t in your SPF record, or the SMTP plugin’s connection didn’t survive the move. Setting up SMTP through your own mail account usually fixes it, because the mail no longer depends on the server.
Can I get back the enquiries I missed?
If your form plugin saves entries, yes: they’re in its entries screen, even though the emails never arrived. If it doesn’t save entries, the messages are usually gone, which is a good reason to switch entry saving on now.
Why do my shop’s order emails arrive but the contact form’s don’t?
They’re often set up differently. WooCommerce sends from your shop’s own address, while the contact form may send “from” the visitor’s address, which fails anti-spoofing checks. Fix the From address and set up SMTP, and both go out the same, trusted way.
Do I need a paid email service?
Not usually. A small business site can send through the Google Workspace or Microsoft 365 account you already have, or through a sending service’s free tier. What matters is that the mail is sent by a proper account, not the bare web server.
Is it safe to give you access to my email account?
You don’t need to. I can set up sending through a separate mailbox or a sending service, and if your DNS needs changing, I’ll tell you exactly what to add, or you can add me to the DNS account for the job.
Written by Peter Claridge, who fixes WordPress sites for businesses across the UK from Reading. Last checked on WordPress 7.1, November 2026.