WordPress

Why Your WordPress Contact Form Stops Sending Emails

The worst website failure is the silent one: the contact form looks fine, says "Thanks, we’ll be in touch," and delivers nothing. Businesses discover it weeks later, usually when a customer mentions "I tried your form," after a month of leads evaporating. If your WordPress contact form is not sending emails, here’s why WordPress email breaks, why it breaks silently, and the fix that ends it permanently.

A broken contact form doesn’t look broken. It looks like a quiet month, right up until you learn it wasn’t quiet.

Illustration of a web page loading fast, with a speed gauge, Why Your WordPress Contact Form Stops Sending Emails
WordPress contact form not sending emails?

Why WordPress email is fragile by design

Out of the box, WordPress sends mail through PHP’s mail() function: the server just flings the message into the world with no authentication, no delivery confirmation, and no error reporting. To Gmail and Outlook, a message from a random shared server claiming to be from your domain looks exactly like spam, because that’s precisely how spam is sent.

Sometimes it lands in inboxes, sometimes in junk, sometimes nowhere, and WordPress reports success in every case, because "success" only means the server accepted the handoff. Every form plugin hands its message to the same wp_mail function, so changing form plugins rarely helps. The weak link is the delivery route, not the form.

Why it breaks after working fine

The frustrating pattern ("it worked for two years!") has mundane triggers. Your host migrates you to a new server with a worse IP reputation. Another site on your shared server gets flagged for spam, poisoning the shared IP. Gmail and Microsoft tighten authentication rules (the 2024-era requirements made unauthenticated mail dramatically less deliverable). Or your domain’s DNS records changed during some unrelated update and the fragile arrangement collapsed. Nothing on your site changed; the world around the shortcut did.

The shared IP problem has the same root as slow budget hosting: you share one server with neighbours you never chose. If your site is also slow to respond, my guide on how to reduce TTFB on cheap shared hosting deals with that side.

The real fix: authenticated SMTP

Stop sending mail like spam and start sending it like mail. An SMTP plugin routes your form messages through a real, authenticated mail service, your business email account or a transactional provider, so receiving servers see verified, reputation-backed mail instead of anonymous server output.

Setup is a plugin (WP Mail SMTP and its peers), your mail service’s credentials, and one test send. Pair it with correct SPF and DKIM records on your domain, your mail provider lists the exact DNS entries, and deliverability problems drop to near zero.

The setup, step by step

  1. Choose the sending account: your business mailbox on Google Workspace or Microsoft 365, or a transactional email service.
  2. Install one SMTP plugin and enter the server details or API connection your provider gives you.
  3. Set the From address to a real address on your own domain, such as website@yourdomain.com.
  4. Add the SPF and DKIM records your provider lists, and a DMARC record once those pass.
  5. Send a test to a Gmail address, open it, and use "Show original" to confirm SPF, DKIM and DMARC all say PASS.

Mistakes that keep forms failing after SMTP

  • Using the visitor’s address as the From address. Your server is not allowed to send as their Gmail account, so receiving servers reject or junk it. Put the visitor’s address in Reply-To instead, and replies still go to them.
  • Two SPF records. A domain may have only one. Adding a second for the new provider breaks both, so merge them into a single record.
  • A changed mailbox password. If the plugin logs in with a password and someone changes it, sending stops. An app password or API key avoids this.
Infographic summarising “Why Your WordPress Contact Form Stops Sending Emails”: Why WordPress email is fragile by design; Why it breaks after working fine; The real fix: authenticated SMTP; Belt and suspenders: never rely on email alone; If your form is not sending right now; Once the emails arrive
The article at a glance.

Belt and suspenders: never rely on email alone

Even fixed pipelines deserve a backup, because leads are too expensive to trust to one channel:

Store every submission in the database

Most form plugins can save entries in the WordPress admin. Even if an email vanishes, the lead exists somewhere you can see.

Test the form monthly

A real submission through the live form, confirmed received, thirty seconds that catches silent failures within days instead of months. It’s a standing item on my maintenance checklist for exactly this reason.

Add a notification fallback

A second recipient address, or a WhatsApp/SMS ping on submission, means one broken channel never equals zero notice.

If your form is not sending right now

Check the form plugin’s stored entries first: the leads are probably sitting there, recoverable. Send a test to a Gmail address and check the spam folder; if it’s landing in junk, SMTP plus SPF/DKIM is your fix. If nothing arrives anywhere, your host may be blocking mail functions entirely: five minutes with their support confirms it, and authenticated SMTP bypasses the block anyway.

An hour of setup ends the whole category of failure, cheap insurance for the form your entire website funnels into. If you’d rather not touch DNS records yourself, you can hire a WordPress developer to set up SMTP, authentication and a monthly test in one go.

Once the emails arrive

Delivery is half the job. The other half is whether people fill the form in at all. If submissions are rare even when everything works, read why visitors don’t fill out your contact form.

One more thing worth checking while you are in the form settings: many form plugins load their styles and scripts on every page, not only the page with the form. That adds weight across the whole site. Loading those files only where the form appears is the same idea I describe in stopping render-blocking CSS in WordPress.

Questions people ask

Why is my WordPress contact form not sending emails?

By default WordPress sends mail through the server's PHP mail function, with no authentication. Gmail and Outlook treat that like spam, so messages land in junk or disappear, while the form still shows a success message. Routing mail through authenticated SMTP with SPF and DKIM records fixes it.

Why did my contact form stop working when nothing changed?

Usually something around the site changed. The host moved you to a server with a worse IP reputation, another site on the shared server was flagged for spam, mail providers tightened authentication rules, or your DNS records were edited. The unauthenticated setup was fragile all along.

What From address should my contact form use?

Use a real address on your own domain, such as website@yourdomain.com, and put the visitor's email in the Reply-To field. Sending as the visitor's own address fails authentication, because your server is not allowed to send mail for their email provider.

How can I check if my form emails are authenticated?

Send a test submission to a Gmail address, open the message and choose Show original. Gmail lists the SPF, DKIM and DMARC results at the top. All three should say PASS. If any fails, fix the DNS record your mail provider gives you for it.

Are my lost form submissions gone for good?

Not always. Many form plugins can store every entry in the WordPress admin, so check the plugin's entries screen first. If storage was switched on, the leads are there even though the emails never arrived. If it was off, turn it on now so this cannot happen again.

Comments

Leave a comment

0 / 3000
Comments are moderated. Links are not clickable and your email is never published. See the privacy policy.
keep reading

Related articles

Usually replies within a day
let’s talk

Tell me what you want to build

A website, an app, some automation, or something you’re still figuring out. Tell me the problem and I’ll give you a straight answer on what it takes. No pressure, no sales team.