Compare
FutureMail vs Resend
FutureMail speaks Resend's API, so your sending code moves over with a new base URL and key. On top of sending, you get real inboxes on your domain, agent inboxes and a remote MCP server. Here's what matches, what's different, and what we don't have yet.
Resend features on FutureMail
Where FutureMail stands on each of Resend's main features today.
| Feature | FutureMail | Notes |
|---|---|---|
| Send API (single, batch, scheduled, cancel, reschedule) Same requests and responses under /resend, or the native /v1 API. | Yes | Same requests and responses under /resend, or the native /v1 API. |
| Domains and API keys Through /resend or /v1. DNS records are FutureMail's own (three DKIM CNAMEs, MX, MAIL FROM, DMARC). | Yes | Through /resend or /v1. DNS records are FutureMail's own (three DKIM CNAMEs, MX, MAIL FROM, DMARC). |
| Templates Send with template: { id, variables }. Create and edit them in the dashboard or with /v1/templates. | Yes | Send with template: { id, variables }. Create and edit them in the dashboard or with /v1/templates. |
| Webhooks Similar event names, but FutureMail's own payload and HMAC signature instead of Svix, so resend.webhooks.verify() won't work. | Differs | Similar event names, but FutureMail's own payload and HMAC signature instead of Svix, so resend.webhooks.verify() won't work. |
| Idempotency keys, tags, test addresses delivered@, bounced@, complained@ and delayed@test.futuremail.dev simulate outcomes. | Yes | delivered@, bounced@, complained@ and delayed@test.futuremail.dev simulate outcomes. |
| Open and click tracking A per-domain setting; reported through email.opened and email.clicked webhooks. | Yes | A per-domain setting; reported through email.opened and email.clicked webhooks. |
| Receiving email Through the /v1 API, webhooks, the CLI, MCP and the web inbox (not under /resend). | Yes | Through the /v1 API, webhooks, the CLI, MCP and the web inbox (not under /resend). |
| SDKs Use the official Resend Node SDK (verified end to end). Other Resend SDKs work if they let you override the base URL. No FutureMail-specific SDKs yet. | Differs | Use the official Resend Node SDK (verified end to end). Other Resend SDKs work if they let you override the base URL. No FutureMail-specific SDKs yet. |
| SMTP Not available yet. Send over HTTP. | No | Not available yet. Send over HTTP. |
| Contacts, audiences, topics and broadcasts Not available. FutureMail is for transactional and person-to-person email, not marketing email. | No | Not available. FutureMail is for transactional and person-to-person email, not marketing email. |
| Free tier Paid only: Pro is $20/month for 50,000 recipients a month. | No | Paid only: Pro is $20/month for 50,000 recipients a month. |
More than a sending API
FutureMail hosts the email on your domain, so it can receive, store and search it too.
A real inbox on your domain
Every address lands in a fast, keyboard-first web inbox with threading and search. Replies to your transactional mail come back to you, not to a void.
Unlimited addresses
support@, billing@, alerts@: addresses are routes into a mailbox, so make as many as you need, with catch-all and plus-addressing.
Agent inboxes
Give each AI agent its own mailbox, address and scoped API key. wait_for_email blocks until mail arrives and pulls out one-time codes and links.
Remote MCP server
Connect Claude, Cursor or any MCP client to the hosted server: 20 tools to send, read, search, wait for mail and manage domains.
Teams without per-seat fees
Owner, admin, developer and viewer roles with an audit log, for one flat price.
Migrate in four steps
- 1. Subscribe and add your domain. Start Pro ($20/month), add the domain you send from and copy the DNS records FutureMail shows you. The DKIM and MAIL FROM records use different names from Resend's, so both can be set up while you switch. The MX record decides where the domain receives mail.
- 2. Create your addresses and an API key. Your From addresses must exist in FutureMail. Create a key in Settings → API keys.
- 3. Change the base URL and key. Point the Resend SDK at
https://api.futuremail.dev/resend. Request bodies, responses and errors stay the same. - 4. Move your webhooks. Recreate them in Settings → Developers and verify the
FutureMail-Signatureheader instead of Svix's.
New accounts can send to up to 1,000 recipients a day for their first 14 days, so move high-volume traffic gradually.
Full compatibility notes# .env: the only change for the Node SDK RESEND_BASE_URL=https://api.futuremail.dev/resend RESEND_API_KEY=fm_live_… // or pass them explicitly import { Resend } from "resend"; const resend = new Resend("fm_live_…", { baseUrl: "https://api.futuremail.dev/resend", }); await resend.emails.send({ from: "Example <hello@example.com>", to: ["delivered@test.futuremail.dev"], subject: "Hello", html: "<p>It works</p>", });
Differences to know before you switch
- IDs look like
msg_…anddom_…instead of UUIDs, and keys look likefm_live_…. - Webhooks are created in FutureMail (dashboard or /v1/webhooks), not through /resend, and are signed with FutureMail's own scheme.
- Under /resend, contacts, audiences, broadcasts, topics, template management, webhook management and receiving return 404. Templates and receiving work through /v1.
- Every From address must be an address you own on a verified domain in FutureMail. There are no shared sending domains.
- FutureMail is for transactional and person-to-person email. Bulk and marketing email aren't allowed (see the Acceptable Use Policy).