865,000+ emails on the record since 2020

Every emailyour app sends,accounted for.

Point your SMTP config at Mailway and keep sending the way you always have. Behind it: automatic failover across your providers, a delivery timeline for every message, and an archive that can still prove what you sent years later, if it comes to that.

private beta  ·  EU-hosted  ·  bring your own providers  ·  watch it fail over →

m.01j9zk3vq7delivery record
sample record
from billing@yourapp.comto customer@gmail.comsubj Invoice #2041
09:41:02.113Received via SMTP :587 · TLS 1.3
09:41:02.1292 rules matched → route ses-eu
09:41:02.351Amazon SES → 535 credentials rejected
09:41:07.371Retry 1 → SendGrid · after 5 s
09:41:07.513250 OK — accepted · 142ms
09:41:07.540Record complete · bytes archived · searchable
strategy: failover · 3 providersyour app saw: 250 OK
0K+
emails routed
since 2020
0%
accept rate
provider-confirmed
0ms
avg handoff
to the provider
0yr+
in production
real customer volume

Bring your own keys, the providers you already pay for

Works with Amazon SES, SendGrid, Mailgun, Postmark, Mailtrap, Brevo, Mandrill, Gmail, and any SMTP provider.

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 },
});
1

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.

2

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, with no deploy and no DNS archaeology.

3

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.

Join the waitlistprivate beta · invites go out one at a time
What happens next

One invoice.
One bad password.

  1. 01 · The handoff

    Your app sends the way it always has.

    Plain SMTP to smtp.mailway.net on port 587, over TLS. Same mailer, same library. The host is the only line that changed.

  2. 02 · Written down first

    Nothing is acknowledged until it's on disk.

    Mailway writes the message to its ingest queue, and only then answers 250 OK. Your app moves on in milliseconds.

  3. 03 · The rules

    Your rules read it before any provider does.

    The subject contains “Invoice”, so it picks up the billing tag and takes the project's chain: Amazon SES first, SendGrid behind it.

  4. 04 · The failure

    Amazon SES rejects the credentials.

    Someone rotated the SMTP password and one config missed it. A 535 during login is about your provider account, not the recipient, so Mailway files it as an auth failure and keeps the message queued.

  5. 05 · The retry

    Five seconds later, the next provider takes it.

    The problem is Amazon, not your message, so there's no point waiting on it. The retry goes to the next provider in your chain, and SendGrid accepts in 142 ms. No deploy, no code change, nobody paged.

  6. 06 · The inbox

    The invoice lands. Your customer never knew.

    And the record doesn't claim more than it knows: SendGrid confirmed acceptance, so it says accepted. Delivered is a separate fact, recorded when a provider reports it.

  7. 07 · On the record

    Every attempt, every answer, the bytes themselves.

    Months from now, when someone asks whether that invoice went out, you look it up instead of guessing.

m.01j9zk3vq7Invoice #2041 · billing@yourapp.com → customer@gmail.com
illustration · real sequence
your app
host: smtp.mailway.net
sending…✓ 250 OK · moved on
retry in 5 s
queue ✓rulesrouter
if subject contains "Invoice"→ tag billing
Amazon SES
primary535 auth failed
SendGrid
fallback250 accepted
Postmark
standing by
customer@gmail.com
Invoice #2041
delivery recordin flightaccepted · sendgrid
09:41:02.113Received via SMTP :587 · TLS 1.3
09:41:02.118Written to the ingest queue → 250 OK to your app
09:41:02.129Rule matched → tag billing · chain ses → sendgrid
09:41:02.351Amazon SES → 535 credentials rejected · next provider in 5 s
09:41:07.513Retry 1 → SendGrid · 250 accepted · 142ms
archived · 48 KB raw · sha-256 9f2c…a41e · searchable
09:41:07.513

scroll to scrub · or press play

The Email Notary

Not just sent.
Provable.

A delivered message can be minted into a certificate: the content's SHA-256, the sender's DKIM verdict, the provider's acceptance, the mailbox-side delivery event. All of it is sealed with Mailway's signature and countersigned by an independent timestamp authority, so not even we could back-date one. It verifies offline, with standard tools, and it names who attested each claim: Mailway for the stored bytes, your provider for the delivery.

And where proof runs out, the certificate says so: accepted and delivered are different claims, never blurred.

How the notary works
Mailway · Email Notary
Certificate of Delivery
content sha-256 9f2c…a41e ✓ match
sender dkim d=yourapp.com ✓ verified
accepted SES · 250 OK
delivered mailbox event · 09:41:03Z
sealed ed25519:Kx4v…9dQ=
countersigned RFC 3161 timestamp
The difference

Not another provider

Mailway doesn't replace SES, SendGrid, or Postmark. It sits in front of them and makes them interchangeable, which changes what they can do to you.

Without Mailway
Hardcoded to a single provider
Provider goes down = your emails stop
Switching providers means a code change
No single view of what was sent
Each provider only knows its own bounces
Days of retention, nothing to show a dispute
Locked into one provider's pricing
With Mailway
Route through any provider, or all of them
Automatic retry on the next provider
Switching is a dashboard action
Every email searchable, with a full timeline
Outcomes pool: a reported bounce protects every provider in the project
Months-to-years archive + signed proof of delivery
Free tiers spent first, volume spread across providers

your providers · your keys · one gateway in front

the full comparison →
Built in Europe

Your email stays
on European soil

EU data residency

Your mail is ingested, routed, and archived inside the European Union, on Mailway's own servers in Germany. Not "EU region available". EU, full stop.

Encrypted in transit & at rest

TLS on every SMTP connection, both STARTTLS and implicit TLS. Stored payloads compressed and encrypted at rest.

Your keys only

Pure BYOK. Your mail rides your own provider accounts, never pooled with other Mailway customers. Your reputation stays yours.

Proven in production

5+ years of real customer volume, 865,000+ messages, 99.6% provider-accept rate. Not a weekend project.

one EU region today, with additional regions on the roadmap as we grow

Your mailer config has
one line to change

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

read the docs meanwhile →

join the waitlist — mailway.net

Your invite, one email away.

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