Compare
The European alternative to Resend
Send over REST or SMTP from a platform that keeps your data in the European Union. Both transports carry the same features, and dedicated IPs come with the plan.
Where your data lives
Customer data is stored in the European Union. Our infrastructure runs in European data centres, in the French OVHcloud group.
Resend documents the other arrangement plainly: “All account data, including email metadata, logs, and API records, is stored in the United States regardless of the sending region you select.” Choosing its Ireland region moves the sending, and the records stay where they were.
The detail is in the data processing agreement.
What you pay
Both platforms price by monthly volume. The table takes seven volumes. Each row shows the cheapest plan on each side, in your region’s currency.
| Emails a month | mailkube | Resend | Saving with mailkube |
|---|---|---|---|
| 3,000 | Free $0 | Free $0 | 1,000 more free emails a month |
| 10,000 | Launch $9 | Pro $20 | $11 |
| 50,000 | Momentum $19 | Pro $20 | $1 |
| 100,000 | Elite $39 | Scale $120 | $81 |
| 250,000 | Ultimate $129 | Scale $260 | $131 |
| 500,000 | Scale $320 | Scale $470 | $150 |
| 750,000 | Volume $490 | Scale $705 | $215 |
Dedicated IPs are included from the Elite plan. Elite carries one at 100,000 emails a month, and Volume carries six at 750,000. Each new one warms on a six-stage ladder, from 50 messages a day to 10,000. Resend sells a dedicated IP for $30 a month. The add-on is limited to its Scale plan and to senders above 3,000 emails a day.
Feature by feature
The rows below hold what each platform documents today. A docs link opens the mailkube page behind that row.
| Feature | mailkube | Resend | Docs |
|---|---|---|---|
| Where account data is stored | European Union | United States | |
| Free plan | 4,000 a month, 140 a day | 3,000 a month, 100 a day | |
| Dedicated IPs | Included from Elite | Add-on, $30 a month | Docs(opens in a new tab) |
| REST API | Yes | Yes | Docs(opens in a new tab) |
| SMTP relay | Yes | Yes | Docs(opens in a new tab) |
| Templates, tags and topics as SMTP headers | Yes | Docs(opens in a new tab) | |
| Stored templates, versioned | Yes | Yes | Docs(opens in a new tab) |
| Per-topic opt-out on a send | Yes | Docs(opens in a new tab) | |
| Tags per message | 20 | 75 | Docs(opens in a new tab) |
| Scheduled sending | Included from Launch | Yes | Docs(opens in a new tab) |
| Idempotency keys | Yes | Yes | Docs(opens in a new tab) |
| Outbound body and link scan | Yes | ||
| Webhook signing | HMAC | Svix | |
| Log retention | 7 to 90 days by plan | 30 days | Docs(opens in a new tab) |
| Sending domains | Unlimited | 3 / 10 / 1,000 | Docs(opens in a new tab) |
| Team members | Unlimited | ||
| Official SDKs | Node, Python, Go, Java, PHP, Ruby | Node, Python, Go, Java, PHP, Ruby, Rust, .NET | Docs(opens in a new tab) |
| Framework packages | Django, Laravel, Rails, Spring Boot | Laravel | Docs(opens in a new tab) |
| CLI | Yes | Yes | Docs(opens in a new tab) |
Two transports, headers included
POST to the REST API, or point the SMTP client you already run at smtp.mailkube.com. Everything the API takes as a JSON field, SMTP takes as a header. Those headers are stripped before the message reaches the recipient.
X-Mailkube-Tagscarries the same tag list as the RESTtagsfieldX-Mailkube-Topicattributes the send to a topic, so recipients who opted out are filteredX-Mailkube-Template-IdandX-Mailkube-Template-Versionrender a saved template server-side
An SMTP send is the same message as an API send. It lands in the same logs, counts against the same quota and fires the same webhook events. The SMTP reference(opens in a new tab) lists every header, reply code and rate limit.
Resend relays SMTP as well, on smtp.resend.com, and accepts custom headers on a message. Its documentation describes no header for a template, a tag or a topic.
Your stack, already covered
Official SDKs cover Node, Python, Go, Java, PHP and Ruby. Django, Laravel, Rails and Spring Boot each get a package of their own. It plugs into the framework’s own mail layer. Every client verifies your webhook signatures for you.
Resend ships nine official clients. Rust and .NET join the same six languages, alongside a Laravel package.
The CLI is one binary. It sends over either transport and manages scheduled sends. While you develop, it runs a local webhook receiver. It ships a skill file, so a coding assistant reads the real command surface. Start from the SDK documentation(opens in a new tab) or the CLI guide(opens in a new tab) .
Migrating from Resend
Install the client for your language, then swap the constructor and the key. The send call keeps its shape.
The same send, Resend on the left and mailkube on the right
Resend
import { Resend } from "resend";
const resend = new Resend(process.env.RESEND_API_KEY);
const { data, error } = await resend.emails.send({
from: "Acme <hello@example.com>",
to: ["customer@example.com"],
subject: "Hello world",
html: "<p>It works!</p>",
});
mailkube
import { Mailkube } from "@mailkube/mailkube-node";
const client = new Mailkube({ apiKey: process.env.MAILKUBE_API_KEY });
const email = await client.emails.send({
from: "Acme <hello@example.com>",
to: "customer@example.com",
subject: "Hello world",
html: "<p>It works!</p>",
});
Migration is frictionless over SMTP as well. Change the host, the port and the credential in your mailer, and keep everything else as it is. The messages you already send go out unchanged, and tags, topics and templates ride along as headers when you want them. Nothing has to move on a set day: run both platforms side by side and switch one service at a time. The quickstart(opens in a new tab) covers the REST path and the SMTP guide(opens in a new tab) covers the relay.
When Resend is the better fit
Resend’s marketing product carries contacts, audiences and broadcasts. mailkube sends your application’s mail and tells you what happened to it. Audience building lives in your own database, and a topic on each send honours the opt-outs.
Its clients cover Rust and .NET. A message there carries up to 75 tags, against 20 here.
The pricing page has every plan in full. The REST API and SMTP relay pages go deeper on the two transports.
Frequently asked questions
Is my data stored in the EU?
Can I keep my SMTP configuration?
What happens when I reach my monthly limit?
Do I need a dedicated IP?
Does the free plan send to any recipient?
Where do the Resend figures come from?
Send your first email today
Start free, no card. Point an existing SMTP client at us, or install an SDK and make one POST.