Before you launch or pay for traffic
Password reset best practices: check the link
A visitor asks for a reset, opens the email on a phone and taps a link that says it has expired. The link may be fine, and the page that opens it may be the problem.
What should a password reset flow do?
A password reset flow should send a link on your live domain, let that link open in any browser, including one on a different device, and show the same message whether or not the address has an account. The new password step should accept a new password and sign the visitor in, or say clearly that they should sign in next. Failed resets often trace back to the link's domain, a cookie set on the request device, or an expired link with no way forward. A simulated test requests a reset, opens the email as a visitor would, and reports each step with a screenshot of the page the link opens.
What this looks like in a report
“The link opens a page that says it is invalid. I asked for it on my laptop, so maybe that is why. I do not want to ask again and get another email with the same problem.”
The fix. Set the address the app uses to build reset links to your live domain, not a staging value, and send a test reset to a test account before launch. Let the link open in any browser, and show the request as sent whether or not the address has an account.
An illustration. Run a test to see your own.See a real sample report
A reset link that works for you may not work for a stranger
You test resets from your own inbox, on the device where you already typed the request, and you know the domain you are on. A visitor who forgot their password is often on a phone, with the request made on a laptop hours earlier, or with a mail app that opens links in its own browser. Their link may point at a staging address you set up months ago, or at a page that expects a cookie the laptop set and the phone does not have. They see an invalid link message, and the first thing they do is ask for another email, which arrives with the same problem.
- The link in the email starts with the live domain, and with nothing from a test address.
- The link opens in a fresh browser on another device, not only the one that asked.
- The request page gives the same message for a known address and an unknown one.
- An expired link shows a short reason and a button to request a new one.
- After the new password is saved, the visitor can sign in with it straight away.
The link carries the domain of wherever it was built
A reset link is a web address the server assembles, and the server takes the domain from a setting. If that setting still holds a staging or preview address, every link in every email points there, whatever domain the visitor used on the form. The fault is easy to miss, because your own tests may run on the same staging site. Open a reset email and read the link before you click it. The domain should be the one on your sign in page. A staging name, a localhost address or a preview name means the setting is wrong, not the visitor. Fix the setting, then send one reset from the live site to see the new link.
Opening the link on another device should still work
Some reset flows store a small piece of state in a cookie on the request device, then check it again on the reset page. A visitor who asks on a laptop and opens the mail on a phone has no such cookie, so the page treats the link as stale. A common design puts the reset token in the link itself, which lets any browser complete the reset. Test it as a visitor would: request on the laptop, open the mail on the phone, and tap the link. If the page asks for a new link, the reset depends on the first device, and that is a fault to fix.
The same message for a known address and an unknown one
A request page that says no account exists for that address tells a stranger whether the address is one of your customers. A common alternative says that, if an account exists, a reset link is on its way. The message should match for both cases, and the wait before it appears should not reveal which case it was either. Test it with an address you know is in the system and one that is not, then compare the words and the wait. The report shows the request page and the screen after it for each address, so you can compare them.
The new password step, and the sign in after it
Once the link works, the new password screen has its own rules, and a common fault is a rule that refuses a password the visitor just used, with an error that does not say why. Check that the screen names its rules before submit, as the visitor types. After the password is saved, the visitor should either land signed in or see one clear line that says to sign in with the new password. A screen that returns to the old sign in form with no message looks like the reset failed. Test that path after the link, with a password that differs from the old one.
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 email domain or sender can send links to the wrong place
A reset flow depends on the domain setting, the mail sender and the redirect after the new password. Moving domains, changing the sender or adding a preview can change one of them without touching the form. After each of those changes, request a reset from a new visitor's inbox, open the link on a phone, and read its domain first. With paid credits, visitors can open a preview address behind a site password.
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
Should a reset link expire?
Yes. A reset link should expire and work only once. The test shows whether an expired link gives a clear reason and a button to ask again. It does not tell you how long a real person takes to open their mail, so choose the length from your own support requests.
Can the test reset a password for an account made with Google?
Not in the test. Visitors cannot sign in with Google or single sign on, so an account made that way has no password for the test to reset. A reset you offer for those accounts is a separate path, and you need to check it yourself.
Does the test check how passwords are stored?
No. It does not look at how a password is stored, how many reset requests an address can make, or whether someone could guess a link. Those need a security review. The test shows what a visitor sees and whether they get back into the account.
Should the test run on the live site?
Use a staging or preview address with a test account, not a live account that holds real customers and orders. A reset sent to a live address goes to a real person's inbox. Point the test at the staging address for the flow, then check the live domain once with an account you own.
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.