Mailbay for saaS teams
App email and the support inbox, in one product
Mailbay sends your product's email through a Resend compatible API and runs support@ as a shared inbox your team works from. One set of domains, one set of keys.
What gets in the way
The sending bill grows with every user, and support@ lives in a separate help desk with its own seats.
How it goes
- 1
Change the base URL
POST /v1/emails takes Resend's request body. Keep your code, swap two env vars.
RESEND_BASE_URL=https://api.mailbay.dev/v1 - 2
Point support@ at Mailbay
Conversations open in a shared inbox. Assign them, reply as support@, close them.
support@ · assigned to you - 3
Listen for events
Signed webhooks for queued, delivered, bounced, complained and received, or a WebSocket stream.
message.delivered message.received
The switch is two lines
If your app sends with the Resend SDK today, this is the migration. Fields Mailbay does not support are refused with a fix, never silently dropped.
RESEND_BASE_URL=https://api.mailbay.dev/v1
RESEND_API_KEY=mb_live_xxxxxxxxx # a Mailbay Sending only keyTested with resend 6.32.1 in a Next.js 16.4 route handler.
await fetch("https://api.mailbay.dev/v1/emails", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.MAILBAY_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
from: "Acme <noreply@acme.com>",
to: "ada@example.com",
subject: "Your receipt",
html: "<p>Thanks for your order.</p>",
}),
}); // { id: "eml_..." }message.queued message.delivered message.deferred
message.bounced message.complained message.failed
message.scheduled message.canceled message.receivedEach delivery is signed; the webhooks docs have the check in Node and Python.
Works with what you use
Every tool, with what we tested, is in the integrations directory.
What you get
Resend compatible sending
Same request body, batches of up to 100, scheduled sends and idempotency keys.
Resend alternativeA shared support inbox
Assign conversations, close and reopen them, and reply as support@. Your team can also use Apple Mail or Outlook over IMAP.
Roles per project
Admin, Developer, Support and Viewer, with inbox access per teammate. Support can read and reply, nothing else.
Roles, as agencies use themReceived mail is free
Inbound mail and support replies never count toward the sending allowance.
Our own mail servers
Sending and receiving run on servers we operate, so a bounce comes back with the receiving server's exact reply.
SMTP error reference
Questions
How much code changes when we move from Resend?
For sending with the Resend Node SDK: two environment variables, RESEND_BASE_URL and the key. Fields Mailbay does not support yet are refused with unsupported_field and a fix, so nothing is dropped silently.
Can the support team use their own mail app?
Yes. Each inbox can have app passwords for Apple Mail, Outlook or Thunderbird over IMAP and SMTP. Replies sent there stay in the same conversation.
How do we hear about bounces?
Register a webhook for message.bounced and the other message events. Each request is signed, and the event carries the receiving server's reply.
Is there a contract or an SLA?
Not yet. Mailbay is in private beta and free while it runs. The planned paid plans are on the pricing page.
Want the long version? Read Mailbay vs Resend and sending from Next.js, or see who else Mailbay is for.
Join the beta
Mailbay is in private beta and free while the beta runs: inboxes, sending, your own domains and MCP. We invite people in small batches and read every note on the form.