Skip to main content

Compare

The Scaleway alternative with the rest included

Send over REST or SMTP on a platform that already carries the webhooks, the templates and the scheduling. There is no second product to stand up.

What arrives assembled

Scaleway sells the send. Everything around it is a second product, or a gap.

What comes with the plan on mailkube, and what you assemble yourself on Scaleway
Comes withmailkubeScalewayDocs
WebhooksYesTopics and EventsDocs(opens in a new tab)
Webhook signingHMACTopics and Events
Stored templates, versionedYesNoDocs(opens in a new tab)
Scheduled sending30 daysNoDocs(opens in a new tab)
Idempotency keysYesNoDocs(opens in a new tab)
Framework packagesDjango, Laravel, Rails, Spring BootNoDocs(opens in a new tab)

Four of those rows say No. Scaleway’s public documentation describes none of them. Webhooks are the sharpest row. Theirs are not an endpoint you register. You create a Topics and Events topic, copy its identifier, subscribe your URL, confirm the subscription, then create the webhook against that topic. The feature is in beta, its quota comes from the Scaleway betas page, and the bill runs through Topics and Events.

Scaleway also holds a new account to 10,000 emails a month. Support raises that case by case, once your identity and your payment method are validated.

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 Scaleway
FeaturemailkubeScalewayDocs
Where account data is storedEuropean UnionEuropean Union
Free plan4,000 a month, 140 a day300 a month
Dedicated IPsIncluded from EliteIncluded from ScaleDocs(opens in a new tab)
IP warm-upYesIncluded from ScaleDocs(opens in a new tab)
Tags per message20NoDocs(opens in a new tab)
Per-topic opt-out on a sendYesNoDocs(opens in a new tab)
Outbound body and link scanYesNot documented
REST APIYesYesDocs(opens in a new tab)
SMTP relayYesYesDocs(opens in a new tab)
Official SDKsNode, Python, Go, Java, PHP, RubyGo, Python, JavaScriptDocs(opens in a new tab)
CLIYesYesDocs(opens in a new tab)

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

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. Scaleway includes a managed IP on its Scale plan and warms it over three to six weeks. One Scaleway Project cannot hold both dedicated and shared IPs, so a dedicated IP means a second Project.

Where your data lives

Customer data is stored in the European Union. Our infrastructure runs in European data centres, in the French OVHcloud group.

Scaleway is a French company, and it runs Transactional Email in a single region. On this comparison the two platforms stand in the same place, and the rest of this page is where they part.

The detail is in the data processing agreement.

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.

Scaleway relays SMTP on smtp.tem.scaleway.com, with your Project identifier as the username. Its send API carries an additional_headers list, which is where a Reply-To goes. No header there renders a stored template or attributes a send to a topic.

One more difference sits on the send itself. Every mailkube send takes an idempotency key(opens in a new tab) , and a retried call returns the first result instead of sending twice. The Scaleway API documents no such key, and a retried call sends a second message.

Your stack, already covered

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

Scaleway publishes three client libraries, for Go, Python and JavaScript, plus a scw command for its whole cloud. It publishes no framework package, 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 Scaleway

Install your language’s client, then replace the constructor and the key. The send call keeps its shape, with plain string fields and no Project or region to name.

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

Scaleway

import { createClient, TransactionalEmail } from "@scaleway/sdk";

const client = createClient({
  accessKey: process.env.SCW_ACCESS_KEY,
  secretKey: process.env.SCW_SECRET_KEY,
  defaultProjectId: process.env.SCW_PROJECT_ID,
  defaultRegion: "fr-par",
});

const api = new TransactionalEmail.v1alpha1.API(client);

await api.createEmail({
  from: { email: "you@example.com", name: "Your app" },
  to: [{ email: "customer@example.com" }],
  subject: "Hello world",
  text: "It works!",
  html: "<p>It works!</p>",
});
Host
smtp.tem.scaleway.com
Port
587

mailkube

import { Mailkube } from "@mailkube/mailkube-node";

const mailkube = new Mailkube(process.env.MAILKUBE_API_KEY);

await mailkube.emails.send({
  from: "you@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 Scaleway is the better fit

Scaleway sells sending at infrastructure prices. A team that has already built the webhook plumbing, the templating and the scheduling pays less for the sending itself.

Transactional Email also sits inside Scaleway’s cloud. IAM permissions, Cockpit monitoring, the Terraform provider, one console and one bill come with the account, and a team already there inherits all of them. Messages over their relay run to 50 MB, against 15 MB on a paid plan here.

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

What comes with the plan that Scaleway leaves to me?
Webhooks that post straight to your endpoint, stored templates, scheduled sends and an idempotency key. On Scaleway a webhook is a Topics and Events topic you create, subscribe and pay for. The other three are not in its documentation.
Why is there no price table on this page?
Scaleway sells sending at infrastructure prices, and a ladder of volumes would tell you nothing about the product. The first table asks the question that matters instead: what arrives working, and what you assemble.
Are Scaleway webhooks not signed?
They are, through Topics and Events. The payload carries a signature and a certificate URL, and Scaleway points you at Amazon's SNS documentation to verify it. Every mailkube webhook arrives with an HMAC your SDK checks for you.
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.
Can I schedule a send?
Yes, on every paid plan, up to 30 days ahead, and the CLI manages the queue. The Scaleway send API takes no scheduling parameter.
Where do the Scaleway figures come from?
From the public pricing page and documentation on scaleway.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.