WordPress not sending emails: 7 causes and how to fix each one

Form notifications, order emails and password resets that never arrive usually trace back to one of seven causes. How to find which one you have, and the fix for each.


October 5, 2026 · Formitor

A WordPress site that stops sending email rarely shows an error. The contact form still says thanks. The order still goes through. The message just never reaches anyone. Before you change anything, find out where the email stops, because the fix depends on it.

First, find where the email stops

Install a mail logging plugin, or use the log inside your SMTP plugin if it has one. Submit the form once and look at the log.

  • Nothing in the log. WordPress never tried to send. The problem is in the form or its notification settings (causes 5 and 6).
  • Logged as failed. WordPress tried and the server refused. Look at causes 1 and 7.
  • Logged as sent, but nothing arrived. The message left the site and was dropped or filed as spam on the way. Look at causes 2, 3 and 4.

1. The site still uses PHP mail

Out of the box, WordPress hands every email to the web server’s own mail function. Nothing signs those messages, and the server that sends them is a web server with no reputation as a mail sender. Many hosts limit this function or switch it off.

Fix: send through a real mail service over SMTP or an API. Plugins such as WP Mail SMTP, FluentSMTP and Post SMTP connect WordPress to providers like Google Workspace, Microsoft 365, Amazon SES, Postmark, Brevo or Mailgun.

2. The From address is on the wrong domain

This is the most common cause on sites that already use SMTP. The form puts the visitor’s address in the From field, or an address at gmail.com, or an address on an old domain. Receiving servers see mail that claims to come from one domain and was sent by another, and they reject it.

Fix: set From to an address on the site’s own domain, for example forms@clientsite.com. Put the visitor’s address in Reply-To. Replies still go to the visitor.

3. SPF, DKIM or DMARC is missing or broken

These three DNS records tell receiving servers which services may send mail for the domain. If the record does not list the service the site uses, or the DKIM key was never published after a provider change, the mail fails authentication. Gmail, Yahoo and Microsoft now enforce these checks.

Fix: run the domain through the SPF, DKIM and DMARC checker. Add the missing record, or add the sending service to the record that exists. There is a plain-language guide to the three records if you need one.

4. The email arrives, in the spam folder

Search the recipient’s spam and quarantine folders for the form’s subject line before you assume the email is lost. A message with correct authentication can still be filed as spam if the content looks like spam or the sending domain is new.

Fix: fix causes 2 and 3 first, since they explain most spam placement. Then use a plain subject line and keep links out of the notification body where you can.

5. The notification settings are wrong

A typo in the recipient address. An address for someone who left the company. A second notification that was switched off during testing and never switched back on. Conditional logic that only sends when a field has a certain value.

Fix: open the form’s notification settings and read every field. Send to more than one recipient if a single mailbox is a risk. Plugin-specific steps: Contact Form 7, Elementor forms, WPForms, Gravity Forms, Ninja Forms. For store emails, see WooCommerce not sending emails.

6. The form never submits

If the mail log is empty, check that the submission happens at all. A JavaScript error from another plugin can stop the submit button from working. A cached page can serve an expired security token, so the server rejects the submission. A hidden required field can block it with no visible message.

Fix: submit the form with the browser console open and look for errors. Exclude pages with forms from page caching. See when a form looks fine but won’t submit.

7. The host limits or blocks outgoing mail

Shared hosts often cap the number of emails per hour, and some block the outgoing SMTP ports. Mail works during testing and fails on a busy day.

Fix: ask the host what the limits are. Send through an API-based mail service, which uses normal web traffic and is not affected by blocked SMTP ports.

Why the fix does not stay fixed

Each of these causes can come back without anyone touching the form. A host migration changes the sending server. A plugin update resets a setting. Someone edits DNS and removes a record. A mailbox fills up. The form keeps showing its success message through all of it.

That is the problem Formitor was built for. It sends a tagged test lead through each form on a schedule and checks that the notification email reaches a real inbox. When one does not, you get the alert, not the client. The free plan covers 2 sites.

Keep reading

Troubleshooting · Oct 5, 2026

Contact Form 7 not sending email: how to find the cause and fix it

Contact Form 7 tells you a lot through the color of its response message. What each color means, the Mail tab settings that break delivery, and how to keep it fixed.

Read post
Troubleshooting · Oct 5, 2026

Elementor form not sending email: what to check, in order

An Elementor Pro form can save the submission and still never email anyone. The Email action settings to check, the From address mistake that causes most failures, and how to test it.

Read post
Troubleshooting · Oct 5, 2026

Gravity Forms not sending email: read the entry notes first

Gravity Forms records what happened to each notification on the entry itself. How to read that, the notification settings that block delivery, and how to resend what was missed.

Read post
Troubleshooting · Oct 5, 2026

Ninja Forms not sending email: check the actions first

Ninja Forms sends email through actions attached to each form. Which action to check, the From address mistake that blocks delivery, and how to confirm the email arrives.

Read post
Troubleshooting · Oct 5, 2026

WooCommerce not sending emails: where order emails get lost

A store can take the payment and never send the order confirmation or the new order notice. How to tell whether WooCommerce skipped the email or the email was lost in delivery.

Read post
Troubleshooting · Oct 5, 2026

WPForms not sending email: the settings to check first

When WPForms notifications stop arriving, the cause is usually in the form's notification settings or in how the site sends mail. The checks to run, starting with the fastest.

Read post

Catch the failure before the client does.

Free plan: 2 sites, every feature, no card. See what it finds.