What breaks

Contact form 7 not showing success message: why

The form seems to send, and the thank-you line never appears under it. Mimiq sends a simulated visitor through the form and shows whether the reply box fills in on a laptop and on a phone.

5 visitors try to .
First test free with an accountRun it from your coding agent

Why is Contact Form 7 not showing a success message after sending?

Contact Form 7 writes its reply into a box below the form, so a missing message usually means one of three things: the mail step failed and the plugin recorded an error, the plugin's script did not run on the page, or the theme or a redirect hides the box. Open the browser inspector after you press Send and read the class on the reply box, which says what the plugin recorded. A simulated visitor shows whether the box fills in for a stranger on a laptop and on a phone.

What this looks like in a report

Who
Keiko, asking a bakery whether it makes gluten free wedding cakes
How they arrived
Searched for wedding cake bakers near her and opened the first site
Where they stopped
Contact page, after pressing Send on the inquiry form

“The button went gray for a second and my fields stayed filled. No thank you, no error, nothing under the form. I could not tell if they had it, so I sent a short email from my phone instead.”

The fix. Make sure the reply box is on the page and visible at phone width, and that no redirect replaces the page after a send. Put a plain line such as 'Thanks, we got your message' in that box when the send succeeds.

An illustration. Run a test to see your own.See a real sample report

The reply box stays empty, so a sent message looks like a failed one

Contact Form 7 sends the form in the background and then writes one line into an empty box under the fields. When that line never appears, the visitor cannot tell whether the message left. Some visitors press Send again, so the owner may receive two copies while the visitor still sees no confirmation. The owner checks the inbox, sees the mail arrived and concludes the form is fine. A theme, a caching plugin or a redirect rule can empty the box without touching the mail at all.

  • After Send, inspect the reply box and read its class. It names the status the plugin recorded.
  • Check your host's mail log for the minute you pressed Send. A failed send can leave an entry there.
  • Look in the console for a script error on the page, and confirm the plugin's script is loaded.
  • Search the theme's stylesheet for the reply box class. A display none rule hides the message.
  • Remove any redirect or thank-you page rule, then send once and see whether the box fills.

Three things stop the thank-you line from appearing

The first is mail. The form sends the message to your server, the server hands it to your mail system, and if that hand-off fails, the plugin records an error status and writes an error line where the thank-you should be. Hosts sometimes block the default mail function, so the message never leaves the server. The plugin cannot show a thank-you for a message it failed to hand over.

The second is a script that did not run. Contact Form 7 uses its own JavaScript to send the form in the background and fill the reply box. If a caching or minify plugin delays or combines that script, or a page builder replaces the form output with its own, the form can send with the reply box never filled. A stale cached copy of the page can also carry an old copy of the form's script.

The third is hiding. A theme stylesheet can hide the reply box, and a redirect or thank-you page rule can send the visitor away before the line appears. In both cases the mail arrives, the visitor sees nothing, and the owner concludes the form works. A redirect that fires on every send, not only on success, hides a failure line in the same way.

Read the status on the reply box

After Send, open the browser inspector and find the element whose class begins with wpcf7-response-output. That is the box under the form, and its classes say what the plugin recorded. A success class with an empty box points at CSS or a redirect. An error class points at a field or the mail step. If the box is missing from the page entirely, the form was rendered without the plugin's markup, which points at the theme or the page builder.

Read the console and the network tab at the same moment. A failed request to the form's endpoint means the page never reached the plugin. A successful request with an empty box means the reply came back and the page did not show it, which points at a script or a stylesheet. Note which of the two you see before you change anything.

A simulated visitor reports whether the line appears

Start the visitor on the contact page with the task of asking one question. It fills in the fields, presses Send and waits for the reply box to change. The report records what the box showed: a thank-you line, a line under one field, or nothing at all, along with any failed request or script error on that step and a screenshot.

Run it on a laptop and on a phone, because a theme can hide the box at one width only. The test does not read the mail log or your inbox, so it cannot say whether the message reached you. Check that in your mail settings and your own inbox after each run, then run the visitor again to see the reply box change.

What you get with Mimiq

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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 plugin update or a theme change can empty the reply box again

Plugin and theme updates change the scripts and the stylesheet that fill the reply box, so the line can go missing after a routine update. Rerun the same visitor after each change, on a laptop and a phone, and check every preview deploy before it goes live. Owners whose site sits behind a password add the password to the run, so the visitor reaches the form the way a real customer would.

Starter

Try it on one launch

$9 once
120 credits, never expire

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
Buy 120 credits

Builder

Test every build

$19 a month
500 credits every month

About 20 tests of 5 visitors

  • Everything in Starter
  • Credits refill each month, and what is left rolls over once
  • Cancel anytime
Choose Builder

Pro

Test every release, as a team

$49 a month
1,500 credits every month

About 60 tests of 5 visitors

  • Everything in Starter
  • Credits refill each month, and what is left rolls over once
  • Cancel anytime
Choose Pro

Scale

Test at scale, every day

$149 a month
6,000 credits every month

About 240 tests of 5 visitors

  • Everything in Starter
  • Credits refill each month, and what is left rolls over once
  • Priority support
  • Cancel anytime
Choose Scale
$0for your first test, with a free account (Google sign-in, no card). It includes 50 credits, enough for 10 visitors. After that a visitor uses 5 credits, and packs start at $9 for 120 credits.
See a sample report

Questions

Why does my inbox get the message when the page shows nothing?

The mail step and the page step are separate. The message can leave the server and arrive while the reply box is hidden by CSS or never filled by the script. Check the box's class in the browser inspector, and compare what your inbox received with what the page showed.

Should I send visitors to a thank-you page instead?

A thank-you page works when the redirect runs only after a successful send and the new page loads. Test that path with a simulated visitor, and confirm the page loads on a phone, because a redirect that never fires looks the same as a missing message.

Will a simulated visitor show me the mail that was sent?

No. A run sees the page the visitor sees, not your mail log. It cannot tell you whether your server sent the message or whether it landed in spam. Check your mail settings and your inbox for that.

Does the test predict how many visitors will send a message?

It does not predict how many visitors send a message, or how many give up at the form. It shows the step where a visitor saw no confirmation, with a screenshot of the page at that moment.

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.

5 visitors try to .