Proxy Mail QA

Test Clerk emails

Clerk emails a verification code (or a link) at sign-up and sign-in, and a code to reset a password. Its test mode lets +clerk_test addresses skip the email with the code 424242, which is quick but never tests the email itself. To check what users actually get, sign up with a fresh Proxy Mail QA address: the code or link shows up on its row.

Updated

Details below are from Clerk’s documentation on 17 October 2026. Check it for current details.

What Clerk sends

Test mode skips the email

Development instances have test mode on: any address with +clerk_test (such as jane+clerk_test@example.com) verifies with the code 424242, and no code email is sent. That keeps tests fast, but nothing checks the email your users get: whether it arrives, its sender, its wording, or that the code in it works.

Development instances also cap Clerk-delivered email at 100 a month. Once it’s reached, sign-ups that need a code fail.

Test it by hand

  1. Create an address in Proxy Mail QA, with a persona and password if your sign-up asks for them.
  2. Sign up in your app with it.
  3. The code appears on the address’s row within seconds, with a countdown when the email says how long it lasts. Copy it into the form.

Automate it

signup.spec.ts
import { test, expect } from 'proxymail-qa/playwright';

test('Clerk sign-up sends a working code', async ({ page, qa }) => {
  const { address, password } = await qa.createAddress({ persona: true, password: true });
  const submitted = new Date();
  await page.goto('/sign-up');
  await page.getByLabel('Email address').fill(address);
  await page.getByLabel('Password').fill(password);
  await page.getByRole('button', { name: 'Continue' }).click();

  const { value } = await qa.waitForCode(address, { since: submitted });
  await page.getByLabel('Enter verification code').fill(value);
  await expect(page).toHaveURL(/dashboard/);
});

Match the labels to your sign-up page. Each sign-up uses one email from the development cap, so keep the +clerk_test addresses for the bulk of your suite and a real inbox for the tests about the email. More in Test sign-up emails in Playwright.

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 accountOpen the app

Questions

Should I use +clerk_test addresses or a real inbox?

Both, for different things. +clerk_test addresses with 424242 test your app's flow without sending a code. A real inbox tests the email: that it arrives, from the right sender, with a code that works and wording that makes sense.

Why did my Clerk development instance stop sending emails?

Clerk's docs say a development instance delivers up to 100 emails a calendar month; after that, requests that would email a code are rejected. Emails to +clerk_test addresses and apps on a paid plan don't count, and Clerk support can raise it.

Does Clerk send a code or a link?

A code by default; you can choose email links instead. Clerk's own testing docs suggest codes for end-to-end tests, as links are harder to automate. Proxy Mail QA handles both: waitForCode and waitForLink return them on their own.

See every email testing problem we solve

Clerk is a trademark of its owner. Proxy Mail QA is independent and isn't affiliated with or endorsed by them.