Built by Waybound · EU region live, US next
Email infrastructure that goes your way.
Send transactional and broadcast email across all your domains, inspect exactly what was sent, track delivery in real time, and choose where your email data lives. Amazon SES underneath, a control plane you'll actually enjoy on top.
import { Waymail } from "waymail";
const waymail = new Waymail(process.env.WAYMAIL_API_KEY);
// The key carries its region, so this reaches eu.api.waymail.app directly.
const { id } = await waymail.emails.send({
from: "Waybound <hello@waybound.ai>",
to: "user@example.com",
subject: "Verify your account",
html: "<h1>Hello from Waymail</h1>",
});
// → { id: "em_eu_01K4…", status: "queued" } · returns in ~40 ms
What you get
Everything above the SMTP layer, done properly.
Every domain you own
Domains and subdomains are first-class. Add news.example.com
beside example.com with separate tracking and DNS state for each.
See exactly what was sent
The rendered message, the plain-text part, the raw HTML, the headers — and every link, extracted and one click from being opened.
Delivery you can trace
Queued, sent, delivered, delayed, bounced, complained — as a timeline per message, with the SMTP response and diagnostic code attached.
Broadcasts that can't block a reset
Newsletters run on a separate queue with their own concurrency, so a hundred-thousand-recipient send never delays a password reset.
Suppression that understands intent
Unsubscribing from your newsletter stops the newsletter. It does not stop the account-security email that same person still needs.
Webhooks and MCP
Signed webhooks with replay, plus a regional MCP endpoint so an agent can find a message and pull the verification URL out of it.
Data residency
Choose your region. We won't move it.
A workspace is EU or US, permanently. Your API, queues, database, message bodies, encryption keys and logs all live in that region — and an EU workspace is never failed over to the US.
We say this carefully. Waymail stores and processes your email data within your selected region until it is delivered to the recipient's mail infrastructure. Once Gmail or Outlook accepts a message, where they process it is their decision, not ours — so we don't claim otherwise.
- eu.api.waymail.app
- Frankfurt · eu-central-1
- us.api.waymail.app
- N. Virginia · us-east-1
The SDK reads the region from your API key and connects straight to that endpoint. No global router sees your message bodies on the way.
Developer experience
Built for the person who gets paged.
Retries that can't send twice
Pass an Idempotency-Key and a repeated request
returns the original message instead of a second one. Same key, different body, and you get a
409 rather than a surprise.
await waymail.emails.send(email, {
idempotencyKey: `welcome:${user.id}`,
});
Find the link, fast
"I never got the verification email." One call gets you every link in the message that was actually delivered — no digging through raw HTML.
const [email] = (await waymail.emails.list({
recipient: "user@example.com",
})).data;
await waymail.emails.links(email.id);
// → [{ text: "Verify account", url: "https://…" }]
p95 < 300 ms
to accept and durably queue a message. Delivery happens after we've answered you.
100 per batch
messages in a single call, each with its own id and delivery history.
RFC 8058
one-click unsubscribe on marketing mail from day one — never on your password resets.
Pricing
Simple, and honest about what it costs.
Waymail is in private alpha and not yet sold. Commercial pricing lands with the beta. In the meantime, here is what the underlying delivery actually costs, so you can do the arithmetic yourself.
| Volume | Transport cost | Notes |
|---|---|---|
| 10,000 | ~$1 | Amazon SES at $0.10 per 1,000 |
| 100,000 | ~$10 | plus roughly $15–25/month of surrounding AWS |
| 1,000,000 | ~$100 | shared IP pool; dedicated IPs available later |
Private alpha
Waymail runs Waybound's own products first. We're opening it to a small number of teams who send transactional email and care where it lives.
hello@waymail.app