Guide

How to tell if your contact form is quietly broken

A broken form and a quiet week produce exactly the same evidence: an empty inbox. That is what makes this failure so expensive — the signal that something is wrong is the absence of a signal, and absence is easy to explain away.

Why you cannot rely on noticing

Enquiry volume is naturally lumpy. Three quiet days in a row is completely normal for most small businesses, so nobody investigates until a fortnight has passed and someone rings to ask why their message was ignored.

By then the trail is cold. If the data never reached the server, there is nothing to go back and recover.

Check 1 — submit it yourself, from outside

Not from the editor, not from a preview, not while logged in as an administrator. Open the live public URL in a private window, on mobile data if you can, and send a real submission.

Logged-in administrators often bypass caching and see markup no visitor is served.

Check: Private window, live URL, real submission. Then confirm it arrived — do not assume.

Check 2 — inspect for fields with no name

Right-click each field, Inspect, and read the name attribute. If any is empty, that field is discarded by the browser and has never once been submitted.

Pay closest attention to email and phone. Those are the fields that make a lead contactable, and a lead you cannot reply to is not a lead.

Check: Any name="" in the form is a field that has never worked.

Check 3 — watch the network request

Devtools, Network tab, submit. You want to see a request go out and come back 200. A 404, 419, 422 or 500 tells you where to look. No request at all means JavaScript failed before it sent anything.

Check 4 — check every template, not just one page

Sites rarely have one form. They have a contact page, a sidebar, a footer, a landing page and a popup, and those are often four different templates that drifted apart over the years.

We swept one client estate and found fourteen broken forms across six sites. Several sites had a working contact page and a broken footer form on every other page.

Check: List every page with a form. Test each one. The one you never test is the one that is broken.

Check 5 — do it again next month

Forms break without anyone touching the form: a plugin updates, a theme changes, a cache rebuilds, a spam key expires, a domain is added. A test proves the form worked at the moment you tested it and says nothing about next Tuesday.

This is the argument for monitoring rather than testing. A check that only runs when you remember to run it is a check that runs least often when you are busiest.

FormHam runs these checks against every page of every site we look after, every night, and tells you the morning a form stops being able to submit — not the fortnight after somebody complains.


Frequently asked

Is there a quick way to check without devtools?
Submit from a private window with a real address and see whether it arrives. It is the crudest test and it still catches most faults.
How often do forms break on their own?
More often than people expect, because the usual causes are plugin updates, theme changes, cache rebuilds and expiring keys — none of which involve editing the form.
What is the most commonly missed fault?
A field with an empty name attribute. The browser discards it, so nothing is logged anywhere and no amount of checking your inbox will ever reveal it.

Want us to check it for you?

We will test every form on your site and tell you exactly what we find. If nothing is wrong, we will say so.

Talk to us