# Why Is My Contact Form Not Working? Find the Fix Fast A debugging checklist for broken contact forms. Find out why nothing submits, why submissions arrive empty, or why the email never shows up, with fixes. Nine times out of ten, a broken contact form is **one of five problems**: the button never actually submits, the fields have no `name` attributes, the action URL can't receive anything, the request gets blocked with a 405 or CORS error, or the form works fine and it's the email notification that's broken. This is the checklist I use to figure out which one it is. Quickest checks first. If you'd rather skip the manual work: paste your form's HTML into our [free contact form checker](/tools/contact-form-checker) and it names most of these defects automatically, then hands you a fixed version. The rest of this post is for understanding what actually went wrong, and for the failures no static checker can see. ## Start with the Network tab Before touching any code, **open your browser's DevTools (F12), switch to the Network tab, and click submit once**. What you see there tells you which section to jump to. This works even on WordPress or Squarespace where the markup isn't yours: the request doesn't care who wrote the form. | What you see | The problem | Go to | | --- | --- | --- | | No request at all | The form never submits | [Nothing happens](#nothing-happens-when-you-click-submit) | | A request with an empty payload | Missing `name` attributes | [Submissions arrive empty](#the-page-reloads-and-the-submission-arrives-empty) | | Your email app opens | A `mailto:` action | [The action can't receive anything](#the-action-url-cant-receive-anything) | | A red request: 404, 405, CORS | The endpoint rejects it | [The request is blocked](#the-request-is-blocked-404-405-or-cors) | | A green 200, but no email | Delivery is the problem | [The email never arrives](#the-form-works-and-the-email-is-whats-broken) | ![Moss from The IT Crowd calmly typing while a fire burns next to him](https://media.giphy.com/media/13HgwGsXF0aiGY/giphy.webp) *That's the map. Now the fixes.* ## Nothing happens when you click submit No request in the Network tab means the browser never tried. Four causes cover almost every case. **The button opts out of submitting.** A ` ``` **The button isn't inside the form.** If your markup closes `` before the button (easy to do with nested divs), clicking it does nothing. Move it inside, or wire it up explicitly with the `form` attribute: `