A contact form can look completely healthy while losing enquiries.
The visitor fills it in, taps Send, sees a green success message and assumes the business received the message. Meanwhile, nothing reaches the inbox.
That is more dangerous than an obviously broken form because nobody knows there is a problem.
If your website says a contact form was sent but no email arrives, do not begin by redesigning the page. Trace the lead through the system and find the first boundary that failed.
TL;DR: a success message is not proof of lead delivery
Treat a contact form as a small transaction:
visitor → form endpoint → validation/spam check → stored enquiry → notification provider → recipient mailbox → human follow-up
Test each transition separately.
A useful rule is simple: the website should not tell the visitor “sent” until the server has accepted the enquiry successfully. For important business leads, the enquiry should also have a durable record that does not depend on one email reaching one inbox.
1. Submit the form like a real prospect
Start outside your development setup.
Use the production website on a real phone, preferably on mobile data. Complete the form with a fresh email address and realistic information. Do not stay logged into an admin account while testing.
Record four things:
- Did the submit button respond?
- Did the browser receive a successful server response?
- Did the website show a success message?
- Did the enquiry appear anywhere outside the browser?
That fourth question matters most.
A frontend can display “Thank you” because JavaScript reached the wrong branch, because an API returned a generic 200 response, or because the notification step was never awaited. The interface is evidence, not proof.
2. Check whether the enquiry exists before checking the inbox
The first architectural question is whether the form stores submissions anywhere.
If the only action is “send an email to the business owner,” then an email-delivery failure can erase the practical record of the lead. The visitor believes the message was delivered, while the business has nothing to recover.
For enquiries that have commercial value, I prefer separating lead capture from lead notification:
- validate the request;
- save the enquiry or hand it durably to the system of record;
- trigger the notification;
- return an appropriate success state;
- monitor notification delivery separately.
This does not mean every brochure site needs a complicated CRM. It means the business should know where the authoritative copy of an enquiry lives.
If your form already writes to a database, CRM or form provider, search there first. If the lead exists there, the capture layer worked and the problem is downstream.
3. Inspect the email provider, not just your spam folder
If the enquiry was captured but the notification did not arrive, check the sending provider’s logs.
You want to distinguish several states:
- the application never requested an email;
- the provider rejected the request;
- the provider accepted the message;
- the message bounced;
- the message was suppressed;
- the receiving mailbox accepted it but filtered it.
Modern transactional-email providers expose these states. Resend, for example, provides delivery events and webhooks for email lifecycle events, and its 2026 tooling exposes suppression status separately when delivery is intentionally prevented after previous bounces or complaints.
That is much more useful than repeatedly submitting the form and refreshing Gmail.
Also verify the sending domain. SPF, DKIM and DMARC configuration affect whether receiving systems can authenticate mail from your domain. A form can be technically correct while its notification channel is poorly authenticated.
4. Do not use the visitor’s email address as your From identity
A common contact-form mistake is trying to send the notification from the email address the visitor typed.
Your website does not control that visitor’s domain, so pretending to send as them can conflict with email authentication.
Use an authenticated address on a domain you control as the sender. Put the visitor’s address in the reply-to field when your email provider supports that pattern.
Then when the business clicks Reply, the response can still go to the prospect without your server impersonating their domain.
5. Check spam protection as its own boundary
Spam protection can fail in two opposite directions: it can let bots through, or it can reject genuine prospects.
If you use Cloudflare Turnstile, Cloudflare currently requires server-side Siteverify validation. The client-side widget alone is not the security decision. Turnstile tokens also expire and are single-use, so a stale or replayed token can legitimately fail validation.
Your form handler should therefore distinguish a validation failure from an email failure.
Do not show a success message after a failed spam check. Give the visitor a usable error state and a way to retry. Log enough diagnostic information to identify the failure without storing unnecessary sensitive data.
6. Verify that analytics measures the real success event
Analytics can make a broken form look successful too.
If your conversion event fires when someone clicks the submit button, you are measuring attempts, not successful enquiries.
For a useful funnel, distinguish at least:
- form viewed;
- form started;
- submission attempted;
- server accepted submission;
- qualified enquiry, where your process can support that distinction.
This matters when a business says, “Google Analytics shows leads, but we are not receiving them.” The tracking event may simply be attached to the wrong moment.
Measurement should follow business state, not button animation.
7. Test the response process after delivery
Sometimes the website works and the business process fails.
The lead reaches a shared inbox but nobody owns it. A CRM receives it without assigning a person. The notification goes to an employee who left. The auto-reply promises a response within a day, but there is no follow-up workflow.
So the final production test is not “did I receive an email?”
It is:
Can a real visitor submit an enquiry and can the business reliably find it, understand it and respond?
That is the actual job of the contact journey.
When this needs a repair, not a redesign
If the page already attracts the right visitors, explains the service clearly and gets people to start the form, a broken notification pipeline is usually a repair problem.
Do not pay for a visual redesign to solve an email-delivery defect.
On the other hand, if the form works technically but almost nobody starts it, the problem may be messaging, trust, offer clarity, mobile usability or friction. That is a different diagnosis.
My website redesign vs rebuild guide explains how to identify which layer actually needs changing before replacing the whole site.
If you want the customer journey checked from page to submission, delivery and measurement, see my web design service or contact me.



