---
title: "Test sign-up and email verification flows · Proxy Mail QA"
description: "Create a fresh, private email address for every sign-up test and see the verification link or code the moment it arrives. No shared Gmail, no plus-address tricks."
url: https://proxymail.qa/solve/email-verification-testing
---

1. [Home](https://proxymail.qa/)
2. [What we solve](https://proxymail.qa/solve)

# Test sign-up and email verification without a shared inbox

Every sign-up test needs an email address nobody has used before, and the verification email has to land somewhere you can read it. Proxy Mail QA gives you both in one click.

Updated 12 October 2026

## Why verification emails are awkward to test

Sign-up is the first thing every user does, and the confirmation email is the first message your app ever sends them. It is also one of the hardest flows to test properly:

- **Every run needs a new address.** Reuse one and you get “this email is already registered”, so testers end up inventing addresses or deleting accounts between runs.
- **Shared inboxes mix things up.** With a team Gmail, five people’s confirmation emails land in one place. Someone clicks your link, or you use a code meant for someone else.
- **Plus-addresses aren’t what real users type.** Addresses like `name+test1@gmail.com` are rejected or quietly normalised by some sign-up forms, so the flow you test isn’t the one your users hit.
- **Local mail catchers stop at your laptop.** Tools like Mailpit only see mail your local stack sends. They can’t tell you whether staging or production email is really delivered, or what it really links to.

## How it works with Proxy Mail QA

1. **Create an address.** One click gives you a random, unguessable address such as `k3f9q2m8x7aa@mailclub.dev`. You can also pick a custom name, or create a whole batch, each with a generated name and username for the sign-up form.
2. **Sign up in the app you’re testing.** Use the address exactly as a real user would.
3. **Watch the row update.** Within seconds the Accounts view shows who emailed you and the action from the email: **Open link** and **Copy link** buttons for a link, or the code with a **Copy** button.
4. **Check the email itself.** Open the inbox to read the full message, with remote images blocked until you allow them, and every code and link that was found in it.

Nothing on our side ever opens or prefetches the links in your emails, so a single-use verification link is still unused when you click it.

## What to check in a verification email

A confirmation email can “work” and still be broken. Run through this list on every environment:

- It arrives within a few seconds, from a sender name your users will recognise.
- The link opens the right environment. A link to `localhost:3000` from staging is a bug, and [we flag it for you](https://proxymail.qa/solve/localhost-links).
- The link works exactly once. Clicking it again shows a helpful message, not an error page.
- An expired link explains what to do next, and **Resend** sends a fresh one.
- The subject line and opening sentence make sense in a crowded inbox, and there is a plain-text version.
- After confirming, the user lands somewhere sensible and is signed in (or told to sign in).

## Keep track of every test account

Each address keeps its own notes, tags and generated persona, plus the password you signed up with, encrypted and hidden until you reveal it. Weeks later you can still find “the youth account on staging” by searching notes or tags, instead of guessing which Gmail alias it was.

## Automating this?

Make it a test: waitForLink returns the verify link in one call, and countEmails checks the app sent one email, not two.

[Node.js client](https://proxymail.qa/docs/node) [Python](https://proxymail.qa/docs/python) [Set up your coding agent](https://proxymail.qa/docs/api#agent-setup)

## Try it on your next sign-up test

Free plan, no credit card. Create an address and watch the code or link arrive.

[Create a free account](https://app.proxymail.qa/?mode=signup&from=site-solve-email-verification-testing)

## Questions

### Do I need to set up a domain or mail server?

No. Addresses on mailclub.dev receive mail the moment you create them. There is nothing to configure in the app you are testing either: you just sign up with the address.

### How many test addresses can I create?

500 addresses in total on the Free plan, up to 50 a day, and no limit on the Team plan. You can create a batch of up to 50 in one go, each with its own test persona.

### What if the app I'm testing blocks disposable email domains?

Some apps block domains they consider disposable. Create the address on one of our other domains, enable.li or valida.te.it, instead (or make one the project's default), or allow mailclub.dev on your own staging environment. Receiving on your own domain, such as qa.yourcompany.com, is planned for later.

### How long do the addresses last?

You choose 1, 7, 15 or 30 days when you create one. After that, new mail is rejected, the address and its mail are deleted within an hour, and the name is never issued to anyone else.

## Related guides

- [Test OTP and one-time login codesCodes pulled out of the email with a Copy button and a countdown when the email says how long they last.](https://proxymail.qa/solve/otp-code-testing)
- [Test magic links and passwordless sign-inSingle-use links that are never opened or prefetched on our side, so they still work when you click them.](https://proxymail.qa/solve/magic-link-testing)
- [Test password reset emailsRequest, receive and use reset links, and keep the new password saved next to the test account.](https://proxymail.qa/solve/password-reset-testing)
- [Stop sharing one Gmail inbox for QAPrivate, disposable addresses for every tester instead of one shared mailbox and a pile of plus-addresses.](https://proxymail.qa/solve/shared-test-inbox)
- [Take QA notes by voice with Wispr FlowDictate what each test account is for, its state and what you found, straight into its notes, in seconds.](https://proxymail.qa/solve/voice-notes-wispr-flow)
- [Verification link points to localhost:3000Why emails from staging link to localhost, how to fix it in Supabase, Firebase and other stacks, and how we flag it.](https://proxymail.qa/solve/localhost-links)
- [Common Supabase sign-up and login problemsEmails that never arrive, links that expire or sign nobody in, and sign-ups that fail, with the fix for each.](https://proxymail.qa/solve/supabase-auth-problems)
- [Common Firebase sign-up and login problemsMissing verification and reset emails, verified users who still look unverified, failing links and sign-up limits, with the fix for each.](https://proxymail.qa/solve/firebase-auth-problems)
- [Sign-up and login problems in vibe-coded appsThe login bugs AI-built apps usually ship with: emails only you receive, links to the preview, missing pages, and what to ask the builder.](https://proxymail.qa/solve/vibe-coded-login-problems)
- [Test sign-up emails in PlaywrightA complete Playwright test for sign-up codes and links, from a fresh inbox to the report on the pull request.](https://proxymail.qa/solve/playwright-email-tests)
- [Test sign-up emails in CypressA complete Cypress test for sign-up links and codes, with the email waits running as Cypress tasks.](https://proxymail.qa/solve/cypress-email-tests)
- [Test sign-up emails with pytestA complete pytest test for sign-up codes and links, with Playwright for Python or Selenium and a one-file helper.](https://proxymail.qa/solve/pytest-email-tests)
- [Test coupon codes and welcome offersThe coupon with its discount, end date and arrival time, what checkout did with it, and a failure when an expired or reused one is accepted.](https://proxymail.qa/solve/coupon-code-testing)
- [Test unsubscribe links and one-click unsubscribeThe unsubscribe headers and link checked on every marketing email, and a watch that flags any marketing after unsubscribing, with no time limit.](https://proxymail.qa/solve/unsubscribe-testing)
- [Test that a welcome offer can't be claimed twiceVersions of one address that reach the same inbox, and a check that fails when the same person got the offer more than once.](https://proxymail.qa/solve/welcome-offer-abuse)

[Built your app with an AI tool? Pick yours](https://proxymail.qa/built-with)
