Sandbox
The sandbox is a production-shaped dead end: your app sends exactly as it would in production, Mailway records everything — SMTP transcript, parsed message, pipeline, preview — and no provider is ever dialed automatically. Point staging or CI at it and it cannot email a customer.
Two doors
Section titled “Two doors”| Door | Use it from | Credentials |
|---|---|---|
smtp.mailway.dev |
Anything that speaks SMTP | Your normal project SMTP credential — same config, different hostname. |
api.mailway.dev |
The Send API | A test key (mw_test_…). Live keys are rejected here, test keys are rejected in production. |
Captured mail lands in the console like any other mail, wearing a
SANDBOX badge and a paused state. The payload shape, the pipeline,
and the console treatment are identical to production — that’s the point:
what you inspect is what production would have sent.
Inspect, then decide
Section titled “Inspect, then decide”Open the capture in the console and you get the full production surface: rendered preview, text and headers, the raw message, the SMTP transcript, size and fingerprint. From there a capture has exactly three futures:
- It stays put. The default. Nothing leaves Mailway; retention eventually cleans it up like any other mail.
- Reject — the explicit discard. Terminal, same as rejecting any held mail.
- Release & send — the capture turns out to be the real thing, and you deliver it. Deliberately not a one-click action; see below.
Release & send — the way out, on purpose
Section titled “Release & send — the way out, on purpose”The typical story: a developer builds a one-off mail — say, a winner notification with one recipient — and sends it to the sandbox for the team to review. Approval lands a day later. Without release, the only path was to re-run the send against production and hope nothing changed since the review. With release, the exact bytes the team reviewed are what goes out.
Releasing a capture live:
- asks for confirmation in the console first — it shows the real recipient list, the provider route, and how old the capture is, and makes you acknowledge that this really delivers (for more than five recipients, you type the recipient count);
- sends through your project’s real providers, with your suppression list enforced exactly as in production;
- is one-way and audited — who released what, when, to how many recipients, in the team audit log;
- keeps the
SANDBOXbadge — provenance is data, and the mail’s history shows it was captured first and released later; - requires a pristine capture: parsed, never rejected, never released before, and never sent by any other path.
The guarantee, precisely
Section titled “The guarantee, precisely”Mail that arrives through a sandbox door never leaves Mailway on its own. No background job, no retry, no resume of a paused project will hand a capture to a provider. Delivery happens only when someone with moderation access confirms it in the console — explicitly, per mail, audited.
That’s the honest version of “staging that can’t email your customers”: it can’t, until a human who understands what they’re doing says this one specific mail should.