Transactional email · EU hosted

Transactional email
for modern teams.

API-first ESP with HMAC auth, automatic DKIM signing, and bring-your-own-domain. No marketing forms, no detours — your apps just send.

No credit card. Bring your own domain.

Built for production, not for demos.

All the boring-but-essential pieces of a real transactional email pipeline — included from day one.

HMAC-signed API

SigV4-style request signing with timestamps and nonces. No shared bearers, replay protection by default.

Automatic DKIM

Per-domain RSA keypair generated at register-time. Private keys are encrypted at rest with a key-encryption-key.

Bring your own domain

Every project gets exactly one verified sender domain. The platform brand stays clean — your customers see your address.

Per-project audit log

Every key mint, domain change, and send is recorded. Scoped by project so multi-tenant separation is clean.

Signed webhooks

Stripe-style t=…,v1=… signatures on delivery, deferred, bounced, failed, and complained events.

EU-hosted

Runs on Hetzner Cloud in Germany. Your customer data never crosses the Atlantic, never leaves the EU.

Send your first message
in three lines.

Install the TypeScript SDK, drop in your key, call send. The pipeline takes care of HMAC signing, DKIM, retries, and bounce handling.

Full SDK docs →
// pnpm add @adrikesteren/tmm-customer-sdk
import { TmmClient } from "@adrikesteren/tmm-customer-sdk";

const mailer = new TmmClient({
  keyId:  process.env.TMM_KEY_ID!,
  secret: process.env.TMM_SECRET!,
});

await mailer.send({
  to:      "alice@example.com",
  from:    "noreply@yourcompany.com",
  subject: "Welcome",
  text:    "Thanks for signing up.",
});