Someone fills in your contact form, the page says “Thank you, your message has been sent”, and nothing arrives in your inbox. No error, no bounce. You only find out weeks later, when a customer asks why you never replied.
The thank-you message is misleading. It only proves the form accepted the submission. The email still has four more steps to get through, and it can fail silently at any of them.
Find where it breaks: a ten-minute check
Work through these in order. Each one rules out part of the path above.
- Search the receiving mailbox properly. Look in Spam or Junk, and search for the form’s subject line. In Gmail, search
in:anywhereplus the subject so Spam and Trash are included. Also check mail filters and forwarding rules. - Check whether the submission was saved. Most form plugins can store entries: Flamingo for Contact Form 7, CFDB7, WPForms Entries, Gravity Forms Entries, Elementor Submissions, Jetpack Feedback. If the entry is there, the form worked and the problem is the email (steps 2 to 5). If it is not there, the submission itself failed (step 1).
- Test WordPress email on its own. Request a password reset for a test user, or send a test from your SMTP plugin. If that also never arrives, the fault is how WordPress sends mail, not your form.
- Read the form’s notification settings. Check the recipient address for typos and make sure the notification is switched on for this form.
- Look for an error. Contact Form 7 shows “There was an error trying to send your message” when WordPress could not send the email. SMTP plugins keep a log with the exact reason.
Entries saved but no email? That narrows it down a lot. See form submissions saved but no email arrives.
Cause 1: WordPress sends with PHP mail() and no authentication
By default, WordPress passes every email to the web server’s built-in PHP mail() function. The email leaves your server with no SPF approval and no DKIM signature for your domain. Gmail, Outlook and Yahoo treat unauthenticated mail as suspicious, so it is rejected, sent to spam, or quietly dropped.
Fix: send through an authenticated mail service using an SMTP plugin, or a plugin that sends through a mail API. The service must be allowed in your domain’s SPF record and sign with DKIM. Our step-by-step guide is how to fix WordPress not sending email, and the background on the three records is in SPF vs DKIM vs DMARC.
Cause 2: the From address is the visitor’s email
Many forms are set up to send the email from the person who filled it in, for example [email protected]. Your server is not allowed to send for gmail.com, so the receiving server sees a forged message. Some providers reject it outright and the rest send it to spam.
Fix: set the From address to an address on your own domain and put the visitor’s email in the Reply-To field, so pressing Reply still reaches them. Settings for each plugin are in why your form must not send from the visitor’s email.
Cause 3: your host blocks or limits outgoing mail
Shared hosts often disable PHP mail(), cap how many emails an account can send per hour, or block outgoing connections on port 25. Cloud servers frequently block port 25 by default. The form submits fine and the email is refused before it leaves the server.
Fix: send through an outside service on port 587 (with TLS) or over an HTTPS mail API, which hosts rarely block. Your host’s mail log or support team can confirm a block.
Cause 4: the notification settings are wrong
- A typo in the “Send to” address, or an old address that no longer exists.
- The notification for this form is switched off, or conditional logic skips it.
- A mail tag points at a field that was renamed or deleted, so the recipient or From address comes out empty.
- The email goes to the site’s administration email, which nobody reads. Check Settings → General.
Fix: open the form’s notification or mail settings and compare them with a form that works.
Cause 5: a cache or security plugin breaks the submission
Forms submit in the background using AJAX or the WordPress REST API. A security plugin that blocks the REST API, a firewall rule, or a page cache serving an expired security token can stop the submission before the form plugin runs. Usually the visitor sees an error or a spinner that never finishes, but not always.
Fix: test the form in a private browser window, check the browser console for failed requests, exclude the contact page from page caching, and temporarily disable security plugins one at a time to find the conflict.
Cause 6: the email arrives but gets filtered
If your logs show the email was delivered, the receiving side filed it somewhere you are not looking: spam, a quarantine set by your company’s admin, or a mail rule. These guides cover the two big providers:
- Contact form emails not reaching Gmail or Google Workspace
- Contact form emails not reaching Outlook or Microsoft 365
Guides for your form plugin
- Contact Form 7 and its “error trying to send your message”
- WPForms: WPForms not sending email
- Elementor forms: Elementor form not sending email
- Gravity Forms: notifications not sending
- Fluent Forms
- Forminator
- Jetpack forms
How SecureSMTP fixes this
The SecureSMTP WordPress plugin replaces PHP mail() for every email your site sends, including all of the form plugins above. Each message is sent from an authenticated address and signed with DKIM, and the visitor’s address is placed in Reply-To automatically. Every email appears in your delivery log as delivered, bounced or deferred, and you get an email if a notification address turns out not to exist. You can stop guessing whether the form is working.
Frequently asked questions
Why does my form say the message was sent when no email arrived?
The success message only means the form accepted the submission. Sending the email is a separate step that happens afterwards, and most form plugins show “Thank you” even if that step fails or the email is later filtered.
Do I need an SMTP plugin for my WordPress contact form?
In most cases, yes. Without one, WordPress hands the email to the server’s PHP mail function, which sends it without SPF or DKIM authentication. Gmail and Outlook reject or spam-folder a lot of that mail. An SMTP plugin or sending service sends it as an authenticated message.
Why do my contact form emails go to spam?
Usually because the email is not authenticated for the domain in its From address, or because the From address is the visitor’s own email. Send from an address on your own domain, through a service listed in your SPF record and signing with DKIM, and put the visitor’s address in Reply-To.
How can I test whether WordPress can send email at all?
Request a password reset for a test user, or use the “send test email” button in your SMTP plugin. If that email does not arrive either, the problem is how WordPress sends mail, not the form.
Why do some forms on my site send email and others do not?
Each form has its own notification settings. Compare the “Send to”, From and Reply-To fields of a working form with the broken one. A typo in the recipient, a disabled notification or a mail tag that points at a field that no longer exists will stop just that form.