Email flow testing for AI-built apps
Your agent tests every signup email. Then cleans up after itself.
Flowproof gives Claude Code, Codex, and Cursor throwaway users, catches every email your app sends, grades the whole flow, and deletes the test accounts from your database, Stripe, and anything else you connect when it’s done.
No subscription. No junk accounts in your real inbox. No cleanup script at 11pm.
- › start_session("signup + password reset")session s7k2ab open · addresses lt.s7k2ab.*@flowproof.dev · ttl 24h
- › new_address(persona="edge")lt.s7k2ab.obrien@flowproof.dev · "Siobhán O'Brien-Nguyen"
- › mark_step("submitted signup form")
- › wait_for_email(match="verify")arrived in 3.8s · verify link extracted · resolves 200
- › wait_for_email(match="welcome")warning: merge tag leaked · "Hi ," (first_name empty)
- › end_session(teardown=true)removed 1 WP user, 1 Stripe customer, 1 Supabase rowreport: B+ · 2 fixes · 1 missing email
The most tedious ten minutes of every build
You ship faster than ever with an AI agent. Then you hit the signup flow and it all slows down.
joel+test47@gmail.com
Your inbox becomes the test harness
Plus-addressing, a dozen tabs, and forwarding verification links to your agent by hand. Every single run.
users: 1,204 (real: 1,131)
Test users leak into everything
They end up in your database, your Stripe customer list, your newsletter, your analytics. Nobody goes back to delete them.
Subject: Hi , welcome to undefined
You only see the email you happened to check
Broken merge tags, staging URLs, reset links that work twice, and the password-changed notice that never gets sent.
How it works
One loop. Provision, run, grade, clean up.
Temp inboxes already exist. Nobody owns the whole loop, and the loop is the product.
01 · Provision
Sessions, not signups
Open a session and every address on your project subdomain is live instantly. Optional edge-case personas: long names, apostrophes, unicode.
02 · Run
Your agent drives the flow
It signs up, waits for the verify email, extracts the link or OTP, clicks it, and keeps going. Unhappy paths included: expired links, reused tokens, duplicate signups.
03 · Grade
A report on the whole flow
Latency, auth, broken links, merge tags, duplicate sends, missing emails, and copy suggestions ready to paste. Readable by the agent and by you.
04 · Clean up
Teardown everywhere they landed
Test users vanish from WordPress, Supabase, Stripe, and anything behind a webhook. You get an itemized receipt of exactly what was removed.
The report
Not “did it arrive.” Is the flow any good?
Deterministic checks catch the bugs. A critique pass grades the experience. And a lifecycle map flags the emails that should exist but don’t, the ones that are really security gaps.
- Arrival latency per email, with step-to-email timing
- SPF, DKIM, DMARC, and From / Reply-To sanity
- Leaked merge tags, staging URLs, http links, Gmail clipping
- Token behavior: reset links work once, verify links expire
- Checks that lack evidence say so, and never lower the grade
- Shareable report link, with every token and code redacted
Signup + password reset
Timeline
- 00:00.0Submitted signup form
- 00:03.8Confirm your emailPass
- 00:04.1Welcome to LeaderTreksWarn
- 00:22.0Requested password reset
- 00:41.3Reset your passwordSlow
- —Your password was changed (expected, never sent)Missing
Fixes, in order
- criticalNo notification when a password changes. Add one to the reset handler so a hijacked account can’t be silently taken over.
- warningWelcome email renders “Hi ,” when first_name is empty. Fall back to “Hi there” in the template.
- copySubject “Reset your password” is fine. The CTA “Click here” should say “Choose a new password” so the next step is obvious.
Teardown
The cleanup nobody actually does
Every test user is born on your Flowproof domain, and adapters receive the exact list of addresses the session minted. They can act on those and nothing else. Never a pattern delete, never a wildcard, always a dry-run preview and an itemized receipt.
WordPress / WooCommerce
Companion plugin flags test users, hides them from admin lists and Woo reports, and deletes users, orders, and meta on teardown.
Supabase / Postgres
A generated migration sets is_test from the email domain. A cleanup function removes rows and auth.users.
Stripe
Deletes session customers and cancels their subscriptions, in test mode or live.
Generic webhook
We POST the session's addresses to your endpoint. You send back a receipt. Covers anything custom.
Coming next: Clerk, Auth0, Firebase Auth, MailerLite, Mailchimp, Kit, HubSpot, Resend, Postmark.
- wordpress · users
- 3
- wordpress · orders
- 2
- stripe · customers
- 3
- stripe · subscriptions
- 1
- supabase · auth.users
- 3
- records outside session
- 0 touched
Completed 2026-09-19 14:02 · dry run reviewed by agent first
MCP first
The instructions live in the connection
Flowproof is a remote MCP server. The protocol ships inside the tool descriptions, so once it’s connected your agent already knows the rules: never use a real inbox, open a session before creating a user, verify every link, tear down when finished.
Run one command and it writes the config for Claude Code, Codex, and Cursor plus a short block for your CLAUDE.md and AGENTS.md. From then on, any time the agent touches auth or email code, it tests the flow this way without being asked.
✓ wrote .cursor/mcp.json
✓ wrote AGENTS.md block
✓ appended CLAUDE.md protocol
Before creating any user, call flowproof start_session.
Register users only with session addresses.
After each step, wait_for_email and verify the link works.
Test wrong code, expired link, reused reset, duplicate signup.
When done, end_session and read the report back to me.
And the parts that make it worth coming back to
Launch Watchcoming
After you ship, Flowproof replays the flow against production nightly and alerts you when the verify email stops arriving, slows down, or changes. Email breaks silently. This catches it.
Custom test domainscoming
Point test.yourclient.com at Flowproof. It gets past disposable-email blocklists and looks legitimate in client databases.
Regression snapshotscoming
Every run diffs against the last: "Welcome subject changed, the CTA now 404s, reset went from 4s to 41s." Each run is more useful than the one before.
Edge-case personas
O'Brien-Nguyễn, 60-character names, plus-addresses. The users that break flows and that agents won't think to test unprompted.
Client handoff PDFcoming
A one-page "flows verified" certificate for a client site. Something an agency can hand over and bill for.
Free Email Flow Grader →
No login. Sign up for your own app with a temp address, and get a public score card on every email you receive in the next ten minutes.
Pricing
Pay for the sprint, not the subscription
You test hard for a few weeks, then you ship. The pricing matches that.
Free
$0
For agents to discover it, not for humans to live on.
- 1 project, 1 active session
- 24-hour retention
- Deterministic checks
- Condensed report
- Webhook teardown
Flow Passno auto-renew
$29once · 30 days
Pay once while you build. We won't charge you again unless you ask.
- 3 projects, unlimited sessions
- Full AI report and fix suggestions
- All teardown adapters
- 1 custom test domain
- Extend 30 days for $19
Checkout opens at launch
Launch Watch
$9/ month / project
Your flows pass. Want us to keep watching them?
- Scheduled production flow runs
- Email and Slack alerts
- Full history and diffs
- Cancel any time
Checkout opens at launch
Agency
$79/ month
One caught broken signup on a client site pays for the year.
- Unlimited projects and client workspaces
- White-label reports and handoff PDF
- Unlimited custom domains
- Watch on 10 projects included
- 3 seats
Checkout opens at launch
Stop testing signup with your own inbox.
Grade your app’s emails free in ten minutes. Then connect Flowproof to your agent, run the whole flow, and never see a junk user again.