Contact forms

Contact form not sending email? Why it happens and how to fix it

The form says “Thank you” but no email arrives. Here are the five places a contact form email can fail, how to find which one it is in ten minutes, and the fix for each.

October 3, 2026 · 9 min read

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.

1 Visitor submits the form CAN FAIL HERE Blocked by a cache or security plugin 2 Form plugin builds the email CAN FAIL HERE Wrong “Send to” or a bad mail tag 3 WordPress wp_mail() CAN FAIL HERE PHP mail() disabled or rate-limited 4 Sending server delivers it CAN FAIL HERE No SPF / DKIM, so it is rejected 5 Your inbox receives it CAN FAIL HERE Spam folder, quarantine or a mail filter
The “Thank you” message only proves step 1 worked. The email can still fail at any of the next four.

Find where it breaks: a ten-minute check

Work through these in order. Each one rules out part of the path above.

  1. Search the receiving mailbox properly. Look in Spam or Junk, and search for the form’s subject line. In Gmail, search in:anywhere plus the subject so Spam and Trash are included. Also check mail filters and forwarding rules.
  2. 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).
  3. 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.
  4. Read the form’s notification settings. Check the recipient address for typos and make sure the notification is switched on for this form.
  5. 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:

Guides for your form plugin

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.

Related reading

Fix email delivery on your site

SecureSMTP delivers WordPress, Shopify, and custom form emails with SPF + DKIM + DMARC alignment. Free tier covers most small sites.