Menu
Practical guide

Why is your contact form not working?

Start at the first broken boundary. Check the HTML and browser request, then the server response and stored submission, then notification and final mailbox delivery. Skipping ahead hides the actual cause.

Create a free form

1. Check the browser request

Confirm the form uses POST, every submitted control has a name, the endpoint and public key are correct, and the browser console shows no blocked request.

  • No request: inspect submit handlers and native validation.
  • 404: check the endpoint or form key.
  • 422: compare field names with the published schema.
  • 429: review rate or quota limits.

2. Check storage

A 202 response should correspond to a stored request or receipt identifier. If the browser outcome is uncertain, search for that identifier before manually retrying.

3. Check delivery

If the message is stored, inspect recipient verification, provider configuration, attempt history, bounce or complaint events, and the controlled destination inbox. Do not resubmit the visitor's message merely to test delivery.

The form opens email or shows false success

A mailto action depends on the visitor’s software and usually asks them to finish sending. It does not provide server intake with history. For structured fields and verifiable confirmation, replace it with a POST to a form backend and test receipt.

In custom scripts, do not display Sent merely because fetch completed: verify HTTP status and response format. Clear input only after confirmed acceptance. Before publishing the fix, repeat tests on a phone and keep another contact method available.

Sources

Frequently asked questions

The page says sent but nothing arrived. What next?

Find the stored submission first, then inspect its notification history and recipient state.

Should I keep clicking submit?

No. Repeated clicks can create duplicate requests when the original outcome is uncertain.

What should I provide to support?

Include the affected form, test time, HTTP status, and displayed error. Do not copy customer messages, passwords, or private keys.

From example to your form

Create a free form