What breaks
Why is my form not submitting: find the step
The send button is there, the form gives no sign it went, and the lead never arrives. Mimiq sends a simulated visitor through the same form and shows the step where it stopped.
Why is my form not submitting?
A form that does not submit has stopped at one of three points: the browser never sends a request, the browser sends one and the server refuses it, or the request goes out and the page ignores the reply. Open the developer tools, press Send, and read the Network tab and the Console to see which point it is. A simulated visitor fills the form the way a stranger would and shows the exact field or button where the run stopped.
What this looks like in a report
“I typed my name and number and pressed Send. The button went gray and then nothing else happened. I could not tell if they got it, so I called a different clinic.”
The fix. Make the send button a real submit control, and attach its handler after the page loads. Show a message under the button whenever the request fails, and name the field whenever validation blocks the send.
An illustration. Run a test to see your own.See a real sample report
The form sends nothing, and the page gives no reason
Most forms that stop submitting fail before any request leaves the browser. A required field is empty or hidden, so the browser blocks the send and tries to show its message on a field the visitor cannot see. A script that runs on page load can fail partway, which means the handler that catches the click was never attached, and the button falls back to doing nothing. A form can also post to an address that changed in the last release, or to a form service that an ad blocker cancels. The owner usually tests on a laptop, signed in, with the fields already filled, so the form looks fine.
- Press Send with the Network tab open. Is there a request to the form's address at all?
- Leave one required field empty, press Send, and check that a message appears beside that field.
- Read the Console on page load for a red error. A script that fails early stops the submit handler from attaching.
- Does the form's address still exist? A moved address returns an error or a blank page.
- Turn off extensions and try a private window. A blocked request never reaches your server.
Three points where a submit can stop
A submit can stop at three points, and each leaves a different trace. Before the request, the browser checks the required fields and may block the send. During the request, the browser passes the data to the form's address, and the network can refuse or cancel it. After the request, the server answers, and the page either shows the answer or ignores it. A visitor sees the same silence at all three points, which is why the owner cannot tell them apart by looking at the button. Each point leaves its own trace, and the trace is what you read in the browser.
Read the Network tab after pressing Send
Open the developer tools before you press Send, and keep the Network tab visible. If no request to the form's address appears, the submit stopped before the send, so look at the Console and at the required fields. If a request appears with a status such as 404 or 500, the address or the server is the problem, and the response usually names the cause. If the request is listed as blocked or cancelled, an extension or an ad blocker stopped it. Test once in a private window with extensions turned off, so the answer is clear.
Hidden required fields and the message nobody sees
A required field inside a closed panel, an accordion, a tab, or a later step the visitor has not reached is the most common silent failure. The browser refuses to submit, looks for the field to show its message, and cannot focus it because it is hidden. Chrome's Console can name the control it could not focus. Open the form, expand every section, and press Send with each field empty in turn. The first empty field that stays hidden is the one to fix, usually by moving it out of the closed panel or by showing its message as text near the button.
Run the form as a stranger would
Your own test is weak evidence here, because your browser remembers the fields, you are signed in, and your extensions allow requests that a stranger's browser may block. A simulated visitor starts from an empty form, arrives from a search or an ad, and types the way a first-time visitor types. The run records failed app requests and JavaScript errors on the step where they happen, so the report shows the step where the run stopped, the error recorded there and a screenshot, with a fix prompt you can paste into a coding agent. If the form leads to a confirmation email, the visitor's inbox can receive it.
What you get with Mimiq
- 01
Run it by hand, or on every pull request
Paste a link and a task in the app and watch the visitors work. Or run them on every preview deploy: the GitHub Action comments on the pull request, any other CI can call the MCP endpoint, and your coding agent can run it too.
- 02
Bugs and usability problems in one report
The browser records errors and failed or slow requests on the step they happened. The visitors say where the wording or the steps confused them, and where they left.
- 03
Visitors that behave like your audience
Each visitor is a different profile with a reason to be there, matched to who the page is for, described by you, or built from your own customers.
- 04
A prompt to fix each problem
Every problem comes with a fix to paste into Cursor, Claude Code, Lovable or any coding agent, and one prompt hands over the top problems at once. Then send the same visitors through again.
- 05
Follow every visitor
See each visitor's whole path, step by step with screenshots, and what it was thinking at every step. Ask any visitor a question.
The browser records relevant JavaScript errors and failed or slow app requests encountered during the run, attached to the step where they occurred. The visitors are simulated: they find problems, they do not predict how many real people will convert.
A new required field or a moved address can stop the form again
A form that works today can stop after the next release, when someone adds a required field, renames an input or moves the address it posts to. Rerun the same simulated visitors after each change to see who got past the form. If the form sits behind a login, test it with a test account, and check each preview deploy before it reaches the live site.
Starter
Try it on one launch
About 4 tests of 5 visitors
- Visitors on your landing page, signup and checkout
- Where they left and why, with a fix to copy for each problem
- Run it in the app or on every pull request
- Ask any visitor a question, included
- Test accounts and protected previews
Builder
Test every build
About 20 tests of 5 visitors
- Everything in Starter
- Credits refill each month, and what is left rolls over once
- Cancel anytime
Pro
Test every release, as a team
About 60 tests of 5 visitors
- Everything in Starter
- Credits refill each month, and what is left rolls over once
- Cancel anytime
Scale
Test at scale, every day
About 240 tests of 5 visitors
- Everything in Starter
- Credits refill each month, and what is left rolls over once
- Priority support
- Cancel anytime
Questions
Can a test tell me which cause I have?
It shows the step where the form stopped, any error recorded on that step, and a screenshot of the page at that moment. That is usually enough to pick the cause. The test does not read your server logs, so a 500 error still needs the server's own log. It does not predict how many real visitors would give up at the same field.
Why does the form work for me but not for visitors?
Your browser probably has the fields remembered, you are signed in, and your extensions may allow a request that a stranger's browser blocks. A new visitor arrives with none of that. Open a private window with extensions off, and fill in the form from empty before you decide it works.
What if my form has a bot check?
A CAPTCHA or other bot protection can stop a simulated visitor. The report then marks that visitor as blocked by the site, not as a fault in the form, so you know the form never got a chance to run. A check like that is one reason a form can fail for some visitors and not for you.
Should a form with a silent failure get an error message?
Yes. Show each validation message as text beside its field, and show a message under the button when the request fails. A form that stays quiet after a failed request gives the visitor no reason to try again, and gives you no lead to find later.
Keep reading
Send visitors and see what breaks first.
Your first test is free: sign in with Google and it starts right away. Last checked 2026-11-02.