Skip to content
Back to blog
Plain English|4 min read

Why Isn't Your Website Contact Form Working?

A broken form is the quietest failure a website can have. The five ways forms die silently, the two-minute monthly test that catches all of them, and what our own contradictory records taught us about trusting a form nobody has tested.

The unsettling answer is that it may have stopped working long before you noticed, because a broken contact form is the quietest failure a business website can have. The customer sees a thank-you message and waits. You see a slow week and blame the season. Nobody sees an error, and nobody calls to tell you your form is down, because the people who tried to reach you are exactly the people who couldn't.

So the diagnosis has two halves: the short list of ways forms actually break, and the two-minute monthly test that catches every one of them.

The five quiet failures

The form was never wired. Site templates ship with placeholder forms that look complete and send nothing, and a launch checklist rarely includes "prove the form delivers." If your site went up in a hurry, this is the first thing to rule out, not the last.

The notifications go somewhere nobody reads. The form works, and its messages land in a spam folder, or at an address that belonged to a former employee, or in an inbox tab nobody opens. It did its job; the delivery failed on your side of it.

The form service changed underneath you. Most small-business forms run through a third-party service, and free tiers have monthly submission quotas, dormancy rules, and cards that expire. The form keeps rendering after the service stops forwarding, which is the treacherous part.

A phone can't submit it. A required field that's invisible on a small screen, an error message that renders below the fold, a button a thumb can't hit. On a desktop everything works, and most of your visitors are not on a desktop.

The thank-you fires without the send. Some forms show the success message as soon as the button is pressed, whether or not anything was actually delivered. The confirmation you trust is sometimes just a page transition.

The test that catches all five

Once a month, fill out every form on your site as though you were a customer, from your phone, off your own wifi. Then confirm three things. The submission arrived. It arrived somewhere a human checks. And when you hit reply on the notification, the reply goes to the customer's address rather than to the form service or to yourself.

That last check surprises people, and it matters most. A form that delivers but breaks the reply path produces the worst outcome available, a customer who wrote you, whom you answered, and who never heard back.

Put the test on the same calendar entry as your monthly fifteen minutes of instruments, because it belongs to the same discipline. A session-replay tool will also show you strangers struggling with a field, which is the between-tests early warning.

What our own records taught us

When we reconstructed the history of our own website this month, two documents disagreed about the contact form. The commit record shows a real form endpoint wired the day the site launched. A planning document written three months later refers to the same form as a placeholder that needed fixing. Both were written by people looking at the site. We cannot reconstruct which was true in between, and we are not going to pretend otherwise.

Sit with what that means. If the form was live the whole time, we spent months with a working form nobody had ever tested. If it wasn't, submissions went nowhere and left no trace. The two possibilities look identical from the inside, which is the entire argument for testing on a schedule. A silent failure writes no record, and a quiet month has a dozen innocent explanations. The only way to know which story your form is living is to send it something and watch.

We test ours now. The result is boring, which is the point.

What a working form still won't do

Delivery is half the path. The other half is what happens next, and it belongs to you rather than the plumbing. A message answered in an hour and a message answered on Thursday are different experiences of the same business, and the customer only remembers one of them. The same monthly test deserves to cover your booking link too, if you have one, since it fails just as silently and, for an appointment business, costs more when it does.

The forms item is one line on the baseline we run on our own properties. Send yourself a test, monthly, and confirm it arrives. It is the cheapest item on the list, it takes two minutes, and it is the only one where the cost of skipping it is invisible right up until you find out how long it wasn't.

Common questions

How do I test my contact form properly?

Submit it monthly as a customer would, from a phone, off your own wifi. Confirm the message arrived, that it arrived somewhere a human checks, and that hitting reply reaches the sender's address rather than the form service.

Why do form notifications go to spam?

Form services send mail on your behalf, and without the sending records (SPF, DKIM, DMARC) on your domain, mail providers treat those messages as suspect. Fixing the records fixes most of it; whitelisting the sender covers the rest.

How often should I test my forms?

Monthly, on a calendar entry, alongside your other fifteen minutes of instrument reading. Between tests, a session-replay tool shows visitors struggling with fields before the failure becomes total.

Is a form service better than a plain email link?

Usually yes: a form structures what you need from the customer and filters bots. The trade is a dependency that can lapse quietly, which is what the monthly test is for. An email link fails less mysteriously but invites less structure and more spam.

Rather have someone work through this with you?

The assessment is free. I pull your public data and show you what I see, and your numbers stay yours.