Follow the email back into your application.

Test signups, email codes and magic links with a remote inbox. Capture the address, code or link as a flow variable and continue the journey in the browser.

reflow / Mailbox · email sign-inIllustrative example
Request a fresh codesign-in.md
capture before = inbox.cursor name="signup"
click role=button name="Send code"
New message after the cursorMatched
From
noreply@example.test
Subject
Sign-in code

Your verification code is 831204.

Captured variablecode = "831204"

The browser uses the code to continue the sign-in journey.

fill label="Verification code" ${code}

Give the test an inbox of its own.

A named inbox keeps its address across plans, applies and partial reruns. Flows in the same team and execution group can share that name; separate names keep independent journeys apart.

  • An address that lasts until reset
  • Codes and links captured as variables
  • Named inboxes shared across dependent flows

Keep the account. Request a fresh message.

Mark the inbox cursor immediately before the action that sends mail, in the same step. Wait for a new message using the required sender and subject filters, then capture its code or link. An ambiguous match fails instead of picking one for you.

Taint and rerun a check with the same address. Use an explicit reset when you need a new inbox and new generated test values. Reset does not delete accounts or other data in your application.

Bring the evidence into PR review

From the inbox to the next browser step

This example assumes an existing test account for the returned address. Connect the Mailbox plugin to your Reflow team and keep its token in private bindings. Captured values are team-visible execution evidence, so use disposable test accounts.

Your agent can inspect the installed plugin’s commands and write the flow using your application knowledge. Select the plugin version in the flow’s requirements.

Flow excerptMailbox
---
providers:
  ui: Browser
  inbox: Mailbox
---

capture email = inbox.address name="signup"
open /login
fill label="Email" ${email}
capture before = inbox.cursor name="signup"
click role=button name="Send code"
capture code = inbox.wait_code name="signup" after=${before} from="noreply@" subject="Sign-in code" timeout=30
fill label="Verification code" ${code}
click role=button name="Verify"

Plugin requirements and private connection settings are configured separately.

Check the rest
of the application.