Skip to content
Website Maintenance

WordPress Contact Form Not Working: How to Fix It

A WordPress contact form not working is the most expensive silent failure a small website has. Nothing looks broken. The form submits, the thank-you message appears, and the visitor walks away believing they have contacted you. The email never arrives, and it reads on your side like a slow month.

Most people find out weeks later, usually from somebody who says they wrote and never heard back. A contact form not sending email is not a visible fault, which is exactly why it runs for so long.

First: find out where it is breaking

There are three separate stages, and knowing which one failed saves most of the work.

Stage one — does the form record the entry? Most form plugins can save submissions in the WordPress dashboard as well as emailing them. Turn that on if it is not already, then submit a test. If the entry appears in the dashboard but no email arrives, the form is fine and the problem is email delivery. If nothing is recorded at all, the problem is in the form itself.

Stage two — is the site sending the mail? WordPress hands the message to the server and considers the job done. It does not know whether the message left.

Stage three — is the mail being accepted? Plenty of forms send perfectly well and the message is rejected or filed as spam at the other end. Check the spam folder of the receiving address before assuming anything.

The usual causes, in the order they turn up

The site sends from an address it does not own. This is the big one. By default WordPress sends from something like wordpress@yourdomain.com, an address that often does not exist. Receiving servers increasingly reject mail from a domain whose records do not authorise the sender, so the message is dropped before it reaches anyone.

The notification is going to an address nobody reads. Check the form settings for where notifications are sent. On sites that have changed hands this is frequently a previous developer or a staff member who left.

A plugin update changed something. Form plugins update often, and settings occasionally reset or move. If the form worked last month and does not now, look at what was updated in between.

The spam filter is eating real enquiries. Aggressive spam settings on the form itself will silently discard submissions that look automated — which includes a lot of genuine people who type quickly and paste their message in.

The host limits outgoing mail. Shared hosting often caps how many messages a site can send per hour. A busy form or a newsletter plugin can use that allowance up, and everything after it disappears.

What to do the moment you find out

Before fixing anything, find out how long it has been broken and who you missed. If the form plugin stores entries in the dashboard, you may have every submission sitting there unread — in which case the enquiries are not lost, only late, and a same-day apology usually recovers most of them.

If nothing was stored, work out roughly when it broke by looking at when the last enquiry arrived, then check what was updated around that date. Anyone who wrote in that window heard nothing back and assumes you ignored them. If you have any other record of them — a call, a WhatsApp message, an abandoned quote — it is worth reaching out.

While you sort the form out, put a phone number or WhatsApp link on the contact page as a visible fallback. A form that might be broken is worse than no form at all.

Why blocking spam costs you real enquiries

Most form spam protection works by scoring how automated a submission looks, then silently discarding anything above a threshold. That word — silently — is the problem. A rejected genuine enquiry produces no bounce, no error and no record.

Several ordinary behaviours look automated to a scoring system: filling the form very quickly, pasting a prepared message, submitting from a shared office network, or writing from a country the filter treats as suspicious. None of those are spam and all of them can be scored as such.

Two settings make this safer. Keep every submission stored in the dashboard even when it is judged to be spam, so you can look through the rejected pile occasionally. And prefer a challenge the visitor can pass over a filter that silently drops them. Losing an hour a month to reviewing spam is cheaper than losing one real customer a quarter.

The fix that solves most of these permanently

Send through a proper mail service instead of the web server. An SMTP plugin routes form mail through an authenticated mailbox — your Google Workspace or Microsoft account, or a dedicated sending service — so the message comes from an address that genuinely exists and is genuinely authorised to send.

Two things change immediately. Delivery becomes reliable, because the receiving server can verify the sender. And you get a log, so the next time somebody says they wrote to you, you can check whether the message ever left.

The records that authorise a sender are worth understanding once — our guide to WordPress not sending emails covers the mechanics in full.

Test it on a schedule, not when you remember

This is the part that actually prevents the problem. A form is not something you check once after building it. Submit a real test through it every month, from a phone rather than the computer you built it on, and confirm the email lands in the inbox rather than the spam folder.

It takes two minutes and it is the only way to catch a silent failure before your customers do. It is also one of the things monthly checks on a live site exist to cover, precisely because nobody remembers to do it themselves.

Is Your Website Working Properly?

Get a free website health check from WebMaintor. We'll review your website's speed, security, forms, and technical health — and tell you exactly what needs attention.

No obligation. No automated reports. A real review by our team.