Conversion · 5 min read
Your contact form is broken. Here is how to find out today.
A contact form that fails silently is worse than no form at all. Here is how to test yours in five minutes, and what actually causes the failure.

Most businesses find out their contact form is broken from a customer who calls to ask why nobody replied to the message they sent three weeks ago. Or worse, they never find out at all. The enquiry disappears into a server log nobody reads, the visitor assumes they were ignored, and they book with whoever answered the phone that hour.
That's the expensive version of the problem. A single missed enquiry from someone ready to book a job, a table or an appointment is not a rounding error. It's revenue that walked to a competitor because a form quietly stopped doing the one thing it exists to do, and nobody was watching for it.
We pick this up often enough during site migrations and audits that we now treat it as a standard check, not a one-off diagnosis. WordPress sites still running the old PHP `mail()` function are the most common culprits, but plugin updates, spam filter changes at Gmail and Outlook, and expired SMTP credentials all cause the exact same silent failure.
Submitting is not the same as delivering
A form can say "Thank you, we'll be in touch" and still have sent nothing anywhere. That confirmation message is generated in the browser. It confirms your input was accepted, not that an email reached an inbox. This is exactly why the problem goes unnoticed for so long: everything on the visitor's side looks completely fine.
Why nobody notices for months
Two things make this failure invisible from the business side. First, most analytics tools track a form submission event the moment the page shows a success message, which happens whether or not an email ever sent. A dashboard full of green submission numbers can sit on top of a mail server that stopped delivering weeks ago.
Second, many form plugins log the entry in a WordPress admin table regardless of whether the email notification succeeded. So the record technically exists somewhere. It's just sitting in a place nobody checks, instead of an inbox someone opens every morning.
The forms that worry us most are the ones that never generate a single complaint. Silence usually means people gave up quietly, not that everything is fine.
The five-minute test to run today
- 1Open the site in an incognito or private window, so you are not logged in as an admin and seeing a cached version.
- 2Fill in the form with a real but disposable email address you can check, and a message that says "test" plus today's date so it is easy to find later.
- 3Submit it and note the exact time.
- 4Check the inbox that should receive it, including the spam and junk folders, for the next 15 minutes.
- 5If your form sends a confirmation copy to the sender, check the disposable address too.
Where contact forms actually break
| Cause | How common | What it looks like |
|---|---|---|
| Old PHP mail() function | Very common on older WordPress builds | Works for months, then stops with no error, often after a hosting migration |
| Expired SMTP credentials | Common after a password change or provider switch | Mail fails silently once the stored password no longer matches |
| Spam filtering at the receiving end | Increasingly common since 2024's tighter filtering | Mail sends successfully but lands in spam or is dropped before arriving |
| Plugin or theme update conflict | Common after routine updates | A form plugin update changes a setting or breaks a hook with no warning |
| Full mailbox or storage quota | Occasional, easy to miss | New mail bounces once the inbox hits capacity |
| Wrong recipient address | Rare, but persistent once it happens | Nobody notices for months, because the form technically works, it just posts to the wrong desk |
1 in 6
client sites we've audited had a contact form that was failing silently before we found it
Source: Lipsum Technologies internal site audits, 2026
What "fixed" actually means
A properly fixed contact form does three things reliably. It sends the message to an inbox someone actually checks. It lands outside spam. And it fails loudly if something changes later, rather than going quiet again in six months without anyone noticing.
The most reliable long-term fix is moving away from server mail functions entirely and sending through a dedicated transactional email service with delivery logging, so a failure produces an alert instead of silence. Pair that with a scheduled monthly test rather than a one-off check, since the causes in the table above can reappear on their own schedule: a plugin auto-updates, a password rotates, a spam filter tightens.
We handle this as part of website maintenance and support work, because a form that's quietly broken for a month can cost more in lost enquiries than a year of hosting. It's a small technical fix with a business-sized consequence, which is exactly the kind of gap that's cheap to close and expensive to ignore.
Don't wait for the phone call
If you haven't tested your own contact form in the last few months, do it before you finish reading this. Fifteen minutes now is cheaper than however many enquiries have already gone nowhere. We covered the wider pattern of quiet revenue leaks like this one in signs your website is losing you money, and the same logic behind fixing a broken enquiry route applies directly to lead generation automation: your own site is the highest-intent source you have, and it is usually the most under-instrumented.
Questions people also ask
How do I know if my contact form is sending emails?
Submit a real test message from an incognito browser window and check the receiving inbox, including spam, within 15 minutes. A success message on screen does not confirm delivery.
Why did my contact form stop working with no error message?
Most silent failures come from expired SMTP credentials, spam filtering changes at the receiving mailbox, or a plugin update that broke the mail function. None of these produce a visible error to the visitor.
What is the most reliable way to fix a broken contact form permanently?
Route form submissions through a dedicated transactional email service with delivery logging rather than a server's built-in mail function, so failures trigger an alert instead of disappearing silently.



