Mailway sits between your app and the providers you already pay for — routing, failover, a searchable archive, and proof of delivery, without changing how you send.
An email gateway sits between your application and its email providers: your app hands a message to one endpoint, and the gateway decides which provider carries it, retries when one fails, and keeps the record. Mailway is that layer for transactional email — a config change to adopt, standard SMTP or HTTP in, your own provider accounts out.
The four pillars below are the product: a byte-for-byte archive, automatic failover, a per-message timeline, and signed proof of delivery. Everything is BYOK — Mailway routes and records, your providers deliver, and delivery is billed by them at their prices.
How it works
The whole migration is a config change.
the migration — mailer config
const transporter = nodemailer.createTransport({
- host: "smtp.sendgrid.net",
+ host: "smtp.mailway.net",
port: 587,
auth: { user, pass },
});
01connect
Point your app at Mailway
Swap host, port, and credentials in the mailer you already use — Nodemailer, Laravel, Rails, smtplib, whatever ships your mail today. 7 SMTP ports open, so it works even where your cloud blocks the usual ones. Prefer HTTP? There's a REST API.
02configure
Paste in the keys you already have
Add your provider API keys, assign them to projects, pick failover, free-first, round-robin, or random per project. All from the dashboard — no deploy, no DNS archaeology.
03relax
Mailway takes it from here
Routing, retries, suppression, logging, archive. The next time someone asks about an email, you look it up instead of guessing — and switching providers never touches your code again.
Your app doesn't have a sent folder. Mailway gives it one.
Every mail client keeps what you send. Your app — which sends more consequential email than you do — keeps nothing: receipts, reset links, and contracts vanish the instant SMTP takes them. Mailway archives each message exactly as sent and makes it searchable like a mailbox. So when finance asks about an invoice from last March, you open the email itself — not a log line that mentions it.
storedthe raw message, byte for byte — headers, attachments, original DKIM signature intact
foundfull-text plus operators — state:delivered, before:2024-06, rescued:
openedrendered · plain text · headers · raw source · attachments — years later, unchanged
Your app hands off once, gets 250 OK, and moves on. Mailway reads whatever the provider says back — a timeout, a rate limit, an empty credit balance — and reroutes in milliseconds. Here's a genuinely bad day, handled without a single page going out:
Four routing strategies
reliability
Failover
Primary provider first. On timeout, rate limit, or outage, the next one takes over automatically — with exponential backoff.
cost
Free-first
Spend every provider's free tier before a single paid send — paid rates only kick in once the free capacity is gone. Exhausted providers stay available for failover.
balance
Round-robin
Distribute volume evenly across providers. Balance spend, spread sender reputation, and stay under per-provider rate limits.
simplicity
Random
A coin flip per message. For when you want the volume spread and nothing else to think about.
Not all errors are equal
provider saysclassmailway does
550 user not foundhard bouncestop · suppress · log
401 credits exhaustedbilling / quotafailover · flag the account
429 rate limitedsoft bouncefailover to next provider
421 timeoutconnectionfailover with backoff
Hard bounces are never retried — the address goes straight to your suppression list, where it stops hurting your sender reputation. Everything recoverable fails over. Nothing gets retried into a blocklist.
03 · Observability
250 OK is not the whole story
Most providers stop at "accepted" and wish you luck. Mailway follows the message the rest of the way — every attempt, every provider response, every error code, down to the raw SMTP session. So when support asks "did that email go out?", you answer with a timeline, not a shrug.
And because every provider you use reports back into the same gateway, outcomes land in one normalized delivery history — an SES bounce and a Mailgun bounce read the same, side by side. No single provider can see across your whole sending; the gateway in front of them can.
Search by subject, sender, recipient, or state
Real outcomes — delivered, bounced, complained — in one vocabulary across providers
A hard bounce learned on one provider blocks the address on all of them
The raw SMTP session, kept for every connection
Per-project analytics and 30-day volume
console.mailway.net
invoice to:customer@
all projects
Invoice #2041
customer@gmail.com
SendGriddelivered2m
Password reset
anna@outlook.com
SESdelivered9m
Order confirmation
old-address@fake.io
SESbounced14m
Weekly digest
team@company.eu
Mailgundelivered22m
Shipping update
leo@proton.me
SESqueued31m
Delivery timeline — Invoice #2041
● accepted via SMTP :587 09:41:02
● SES 421 timeout →failover: SendGrid
● delivered · 142ms · DKIM sealed · archived
Mailway · Email Notary
Certificate of Delivery
message m.01J9ZK3VQ7
content sha-256 9f2c…a41e ✓ match
dkim d=yourapp.com ✓ verified
accepted SendGrid · 2026-04-10T09:41:02Z
delivered 2026-04-10T09:41:03Z
signature ed25519:Kx4v…9dQ=
verifymailway.to/m/f3XK…
SEALED · ED25519 · MAILWAY ·
04 · Notary
"I never got that email." Here's the receipt.
Every message is archived with its raw MIME and original DKIM signature, and can be turned into an Ed25519-signed proof-of-delivery certificate, countersigned by an independent time authority so it can't be back-dated. The signature verifies in anyone's browser — no need to trust our database, or us. Share the rendered email itself with a privatemailway.to link, and settle the dispute instead of having it.
Retention on paid plans
SendGrid paid
3 days
Mailgun Foundation
5 days
Postmark (best-in-class)
45 days
Mailway
90d → years
90 days on Pro, 6 months on Team, 1 year on Business, unlimited on Enterprise — with 3-to-7-year add-ons for SOX, HIPAA, and FINRA record-keeping. All of it EU-hosted, all of it searchable.
MAILWAY · EST. 2020 · EU ·
Your mailer config has one line to change
Mailway is in private beta — we onboard teams one at a time. Leave your email and we'll send your invite when it's your turn.
250 you're on the list
We onboard teams one at a time — your invite will arrive from hello@mailway.net.
We run ads. Knowing whether they work needs your OK — one cookie each from Google and Reddit, used only to tie a signup back to the ad that brought it. Analytics here is cookieless either way, and declining changes nothing else.
Change your mind any time — "Cookie choices" in the footer. Details in the privacy policy.