Interactive demo

One email.
The whole journey.

STEP 1 / 7The message
outbox — yourapp.com
From
billing@yourapp.com
To
customer@gmail.com
Subj
Invoice #2041
Body
HTML + text alternative · 140 KB
Route
then
simulation — nothing real is sent
SMTPorHTTPS API
yourapp.com
TLS 1.2+
smtp.mailway.net
:587

shown over SMTP — the HTTPS API (POST /v1/send) takes the same handoff over TLS and answers once the mail row is stored; rules, routing, failover, and events work the same from here

inside Mailway — ingest
yourapp.comwaiting for the 250…
smtp.mailway.net
:587
Mailway record — database + archive, seconds later
m.01jqx7r2m4

Written down first, acknowledged second — only then does your app's send() return. The record — id, database row, archived bytes — follows within seconds. If everything after this failed, the message would already be queued, not lost.

WHENsubjectcontains"Invoice"THEN?
Mailway vault
Mailway routing
billingpausedpinned
—
—
standing by
—
—
standing by
Mailway — routing
rejected
inbox — customer@gmail.com
— no new mail —
——
Mailway — the record
yourapp.comwebhook endpoint
The end of the journey

Delivered — and provable.

  • It arrived

    One provider account ran out of credits; the email didn't stop. Mailway handed it to your next provider five seconds later, and no code changed.

  • It's on file

    Queued byte-for-byte before your app got its 250, archived seconds later, and searchable for your plan's full retention.

  • Your app knows

    A signed webhook reported the confirmed delivery back to your endpoint — the loop closed, on the record.

m.01jqx7r2m4 — the whole journey, one search away
Join the waitlist

It runs on its own — but it's yours to steer: pick the route, pause the send for a human, fail the first provider or let it through, choose what reports back. Every fork is a real Mailway behavior, and the wire carries what the machines say meanwhile. A browser-only simulation — the shapes match production.

The same journey, in prose

What happens in the demo, step by step.

1 · The message, and the chain that will carry it

It starts where every transactional email starts: an application has a message ready — here, an invoice — and a provider chain to route it through. You pick the primary and the fallback from real providers (Amazon SES, Mailtrap, Postmark, Mailgun); with the fallback strategy, the order you choose is the order failover walks later.

2 · The SMTP handoff

The app connects to the Mailway relay exactly as it would to any SMTP server — same protocol, same libraries. The connection is encrypted before credentials cross it, and the message travels the standard path: your mailer already speaks this. Adopting the gateway is the config change you see here, not a migration.

3 · Written down before the 250

This is the ordering that matters most in the whole demo: Mailway writes the message to its ingest queue on disk, flushed to the disk itself and not left in memory, and only then answers 250. The acknowledgment is a receipt, not a hope — within seconds the mail has its id, a database record and its archived bytes, whatever the providers do next.

4 · The rules gate

Before any provider sees the message, your routing rules read it. In the demo you make the call a rule would make: tag it for billing, pause it for review, or pin it to one provider per policy. A paused mail waits untouched until a teammate resumes it — the review flow used for high-stakes sends.

5 · The provider doors — and the failure

The message walks to the first provider in your chain, and you decide how that provider answers. If it accepts, done. If it refuses for a reason another provider can fix (in the demo, a 451 from an account that ran out of credits; in real life also a rejected key or a throttle), watch the point of the product: Mailway reads the error, classifies it, and hands the mail to the next provider in your chain five seconds later. A permanent 550 for the only recipient stops instead. The failure becomes a retry instead of a missing email.

6 · What flows back

A provider accepting the handoff is not the end of the story. Delivery events — delivered, bounced, complained — flow back asynchronously from providers that report them, land on the message's timeline, and can reach your own app as a signed webhook. Accepted and delivered stay two separate facts, labeled as such.

7 · Delivered — and provable. Or stopped — and honest.

Both endings are wins. Delivered leaves you a timeline, the archived bytes, and the option of a signed proof-of-delivery certificate. Stopped leaves you the truth: a permanent 550 is classified, marked rejected with no retry, and reported to your app as mail.failed; when a provider that reports bounces (every supported provider except Gmail and Any SMTP server) sends one back, the address is suppressed so it never hurts your reputation twice. What Mailway never leaves you is a mystery.

The whole run takes about a minute. When you want the real thing instead of the simulation, the quickstart gets a first send through the relay in about five minutes, and how it works covers the architecture the demo is dramatizing.

join the waitlist — mailway.net

Your invite, one email away.

Mailway is in private beta, and we onboard teams one at a time. Leave your email and your invite arrives when it's your turn.