Skip to main content

Compare

The European alternative to SendGrid

Send over REST or SMTP from a platform that keeps your data in the European Union on every plan. It costs less at every volume, 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. Every account is there, on every plan, at no extra cost.

SendGrid sells European data residency as well, and it is a configuration you buy. Twilio gates it to the Pro plan and above, and its documentation states that the feature requires a dedicated EU IP. It also requires a new EU subuser rather than a change to the account you have. That subuser then loses Marketing, Activity, Validation and Geostats. Twilio’s own documentation adds that it stores all Email Activity data in the United States.

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.

Monthly price by volume, mailkube against SendGrid
Emails a monthmailkubeSendGridSaving with mailkube
3,000Free $0Essentials $19.95$19.95
10,000Launch $9Essentials $19.95$10.95
50,000Momentum $19Essentials $19.95$0.95
100,000Elite $39 1 dedicated IP includedPro $89.95 1 dedicated IP included$50.95
250,000Ultimate $129 2 dedicated IPs includedPro $279 1 dedicated IP included 1 dedicated IP added at $30$150
500,000Scale $320 4 dedicated IPs includedPro $519 1 dedicated IP included 3 dedicated IPs added at $30 each$199
750,000Volume $490 6 dedicated IPs includedPro $689 1 dedicated IP included 5 dedicated IPs added at $30 each$199

SendGrid has no free plan. The permanent one was retired in May 2025, and an account opened today gets a 60-day trial of 100 emails a day. Its cheapest paid plan is $19.95 and starts at 50,000 emails a month.

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. SendGrid includes one IP from its Pro plan and sells further IPs at $30 a month each, one per month through the console.

Feature by feature

The rows below hold what each platform documents today. A docs link opens the mailkube page behind that row.

Feature by feature, mailkube against SendGrid
FeaturemailkubeSendGridDocs
Where account data is storedEuropean UnionIncluded from Pro
Free plan4,000 a month, 140 a dayNo
Dedicated IPsIncluded from EliteIncluded from ProDocs(opens in a new tab)
IP warm-upYesIncluded from ProDocs(opens in a new tab)
Log retention7 to 90 days by plan3 to 7 days by planDocs(opens in a new tab)
Tags per message2010Docs(opens in a new tab)
Per-topic opt-out on a sendYesYesDocs(opens in a new tab)
Scheduled sending30 days72 hours aheadDocs(opens in a new tab)
Idempotency keysYesNoDocs(opens in a new tab)
Outbound body and link scanYesNot documented
Webhook signingHMACECDSA
REST APIYesYesDocs(opens in a new tab)
SMTP relayYesYesDocs(opens in a new tab)
Stored templates, versionedYesYesDocs(opens in a new tab)
Framework packagesDjango, Laravel, Rails, Spring BootNoDocs(opens in a new tab)
CLIYesNoDocs(opens in a new tab)

"Not documented" means the public SendGrid documentation does not describe it. Checked on September 29, 2026.

Log retention separates the two plans a developer actually compares. Your plan keeps 7 days on Free and 90 days on Volume. SendGrid keeps 3 days on Essentials and 7 on Pro, and 30 days is an add-on on top.

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-Tags carries the same tag list as the REST tags field
  • X-Mailkube-Topic attributes the send to a topic, so recipients who opted out are filtered
  • X-Mailkube-Template-Id and X-Mailkube-Template-Version render 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.

SendGrid relays SMTP on smtp.sendgrid.net and carries its own instructions in a single X-SMTPAPI header, which can select a template and a suppression group. A message there takes up to 10 categories, against 20 tags here. Scheduling goes 72 hours ahead on either transport, against 30 days here, and its documentation describes no idempotency key on a send.

Your stack, already covered

Official SDKs cover Node, Python, Go, Java, PHP and Ruby, plus C# on the SendGrid side. Django, Laravel, Rails and Spring Boot each have a package of their own here. It plugs into the framework’s mail layer, and every client verifies your webhook signatures for you.

Twilio lists framework integrations and command-line tools under community libraries, so a Django or Laravel project wires the transport itself.

The CLI is a single binary. It sends over either transport and manages scheduled sends. While you develop, it runs a local webhook receiver. It carries a skill file, and 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 SendGrid

Install your language’s client, then replace the constructor and the key. The send call keeps its shape, and the API key stops being a global.

The same send, SendGrid on the left and mailkube on the right

SendGrid

import sgMail from "@sendgrid/mail";

sgMail.setApiKey(process.env.SENDGRID_API_KEY);

const email = await sgMail.send({
  from: "hello@example.com",
  to: "customer@example.com",
  subject: "Hello world",
  html: "<p>It works!</p>",
});
Host
smtp.sendgrid.net
Port
587

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>",
});
Host
smtp.mailkube.com
Port
587

SMTP is just as short. Change the host, the port and the credential in your mailer, and leave everything else alone. The messages you already send go out unchanged, and tags, topics and templates arrive as headers when you want them. Nothing forces a cutover date: run both platforms side by side and move 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 SendGrid is the better fit

SendGrid gives an account up to 15 subusers, each with its own dedicated IPs, credit limits and permissions, and comparison statistics across them. An agency billing twenty clients, or a platform sending for its own customers, has a real answer there. It also carries 1,000 teammates with SAML single sign-on.

Marketing campaigns live in the same account, with contacts, segments and a design editor. Twilio sells deliverability consulting and managed email programmes alongside them. mailkube sends your application’s email and tells you what happened to it.

The pricing page details every plan. The REST API and SMTP relay pages go deeper on the two transports.

Frequently asked questions

Frequently asked questions

Is SendGrid's EU data residency not enough?
It is an option you buy and configure. Twilio gates it to the Pro plan and above, requires a purchased EU dedicated IP, and requires a new EU subuser, which then loses Marketing, Activity, Validation and Geostats. Here every account is in the European Union already.
Is my data stored in the EU?
Yes. Customer data is stored in the European Union, in the data centres of the French OVHcloud group. The detail is in the data processing agreement.
How much cheaper is it than SendGrid?
At every volume in the table above. The saving runs from $8 at 10,000 emails a month to $199 at 750,000, dedicated IPs matched on both sides.
Can I keep my SMTP configuration?
Yes. Point your mailer at smtp.mailkube.com on port 587 with a credential bound to your verified domain. Tags, topics and templates then travel as X-Mailkube headers on the message you already send.
How long are my logs kept?
From 7 days on the Free plan to 90 days on Volume. SendGrid keeps 3 days of Email Activity on its Essentials plan and 7 on Pro, with 30 days as a paid add-on.
Where do the SendGrid figures come from?
From the public pricing page and documentation on twilio.com. The date under the feature table is the day they were last read. A change on their side moves that date.

Send your first email today

Start free, no card. Point an existing SMTP client at us, or install an SDK and make one POST.