WordPress Emergency

Why Your WordPress Forms Stopped Sending Email (And the Leads You're Silently Losing)

WHWynand HoltzhausenJul 04, 2026
Why Your WordPress Forms Stopped Sending Email (And the Leads You're Silently Losing)

Here's an uncomfortable question: when did you last test your own contact form?

If the answer is "when we launched the site," you might want to do it now. We'll wait.

This is the most dangerous WordPress problem there is, not because it's hard to fix (it isn't), but because it's invisible. Your site looks perfect. Pages load. The form displays beautifully. Visitors fill it in, click submit, see a friendly thank-you message... and the enquiry evaporates. No error on your end. No warning. Just silence, which you interpret as "quiet month," not "broken pipeline."

We've seen businesses discover their forms had been failing for five days. We've seen six weeks. Every one of those enquiries was a real person with a real budget who concluded you couldn't be bothered to reply, and called your competitor instead.

This is not a disturbance in the Force you can sense. You have to go looking for it.

Why this happens (it's probably not your form)

The form plugin usually gets the blame. It's usually innocent. The real problem is how WordPress sends email.

Out of the box, WordPress uses PHP's mail() function through your web server. Your web server is built to serve pages, not send mail; it has no reputation with Gmail or Outlook, often no proper SPF or DKIM records, and frequently sits on a shared IP address alongside hundreds of strangers' websites. If one of those strangers sends spam, the whole IP gets flagged, and your form notifications go down with the ship.

So the five usual suspects, roughly in order of likelihood:

  1. Your emails are sending but landing in spam, or being rejected silently. The server sends; Gmail shrugs and bins it. This is the classic. Missing SPF, DKIM, and DMARC records on your domain make your notifications look exactly like spoofed mail.
  2. Your host disabled or throttled PHP mail. Many hosts quietly block or rate-limit mail() to fight spam. They don't always tell you.
  3. An update broke something. WordPress core, your form plugin, and PHP itself all update on their own schedules. A combination that worked yesterday can stop agreeing today. If your forms died recently, check what updated recently.
  4. A plugin conflict. A security, caching, or SMTP plugin intercepting mail, or two plugins both trying to handle it.
  5. The "from" address is the problem. Forms sending "from" the visitor's own email address (a common default) fail modern authentication instantly, because your server has no right to send mail on behalf of @gmail.com.

First: find out how many leads you've lost

Before fixing anything, get the damage report. Most form plugins can tell you.

  • WPForms, Gravity Forms, Formidable: entries are stored in the database. Go to the entries screen and compare submission dates against emails you actually received.
  • Contact Form 7: by default it stores nothing, submissions that didn't email you are gone forever. Install Flamingo (by the same developer) today so this is never true again.

If you find a gap (entries in the database, nothing in your inbox), you have your answer, and a number to put on it. If you close even one in five enquiries and your average job is worth R15,000, three missed submissions a week is roughly R470,000 a year leaking out of a form that "works fine."

The fix: stop letting your web server send email

The permanent solution takes about 30 minutes:

Step 1: Route mail through SMTP. Install a dedicated SMTP plugin (WP Mail SMTP and FluentSMTP are both solid) and connect it to a proper mail service rather than PHP mail().

Step 2: Use a transactional email service. For a business site, connect the SMTP plugin to a service built for deliverability: Brevo, Postmark, SendGrid, or Amazon SES. Most have free tiers that comfortably cover form notifications. Google Workspace SMTP also works for low volumes.

Step 3: Fix your DNS records. Add SPF and DKIM records for whichever service you chose, and a DMARC policy. This is the step most tutorials skip, and it's the one that actually keeps you out of spam. Your email provider's documentation will give you the exact records; they go into your domain's DNS.

Step 4: Send from your own domain. Notifications should come from forms@yourdomain.com, not from the visitor's address. Put the visitor's email in Reply-To instead; you can still hit reply, and authentication stops failing.

Step 5: Test like you mean it. Submit the form. Check delivery to Gmail, to Outlook, and to the spam folders of both. One test to one inbox proves very little.

Make it impossible to miss next time

Fixing today's failure is half the job. The other half is making sure a future failure can't stay invisible:

  • Store every submission in the database (see Flamingo above, or a plugin with built-in entries). The email is a notification; the database is the record.
  • Add a second notification channel. A Slack message, a Telegram ping, or a webhook to your CRM. Two independent channels rarely fail on the same day.
  • Put a monthly form test in someone's calendar. Boring. Effective. Two minutes.
  • Better: send leads straight into a CRM, so a human response is triggered by a system, not by someone remembering to check an inbox. (That's a whole article of its own, how to connect WordPress forms to your CRM.)

When WordPress is the wrong tool for the job

Honest moment. If your relationship with your website is "forms into an inbox, someone replies when they see it," WordPress plus the fixes above will serve you well, and anyone who tells you otherwise is selling something.

But if this article hit a nerve because your business runs on those enquiries (you're routing leads to different departments, qualifying them, triggering quotes, syncing to a CRM, and duct-taping it all together with five plugins and a Zapier account), you've outgrown what WordPress was built for. WordPress is a content management system doing an impression of a business application. Every plugin in that chain is another thing that can silently break, and you already know what silent breakage costs.

At that point a custom-built solution (a lead pipeline designed around your actual sales process, with proper monitoring, delivery guarantees, and no plugin roulette) usually costs less over three years than the maintenance, patches, and lost leads of forcing WordPress to do it. We build both, so we have no incentive to push you either way: if WordPress fits, we'll fix your WordPress. If it doesn't, we'll tell you straight.

Fix it once, then stop thinking about it

Do this today: test your form, check your entries against your inbox, and if there's a gap, install an SMTP plugin and connect a real email service before you close your laptop.

Or don't close your laptop alone. Our emergency debugging service will diagnose your forms, fix the mail routing, set up the DNS records, and add monitoring, usually same-day. Because "the form looked fine" is the most expensive sentence in web development.

May the Code Be With You.


WordPress Pro builds, fixes, and maintains WordPress sites, and builds custom solutions for businesses that have outgrown them. [Book a form health check →]

Share transmission
inX
WH

Wynand Holtzhausen

Senior engineer at WordPress Pro. Rescues struggling sites, rebuilds them stronger, and writes about how it is done.

Related transmissions