Follow the email back into your application.

Test signups, email codes and magic links with a remote inbox. Save the email body to a named variable, extract a code or link with your regex, then continue in the browser.

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

email_body = "Your code is 831204."

Extract with your regexcode = "831204"
inbox.extract text=${email_body} pattern="code is ([0-9]{6})" group=1 -> code

The first regex group becomes code. The browser uses that value below.

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
  • Email bodies and explicit regex results
  • 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, save its body, then run an explicit regex extraction. Ambiguous messages or matches fail.

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
---

inbox.address name="signup" -> email
open /login
fill label="Email" ${email}
inbox.cursor name="signup" -> before
click role=button name="Send code"
inbox.capture name="signup" after=${before} from="noreply@" subject="Sign-in code" timeout=30 -> email_body
inbox.extract text=${email_body} pattern="code is ([0-9]{6})" group=1 -> code
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.