NEWMulti-language template variants

Stop hardcoding
product messaging.

The CMS for transactional notifications. Manage email, SMS, and push templates without shipping code. Your team edits copy, your servers send it.

Free up to 3,000 messages / month · No credit card
app/api/signup/route.ts
Synced
  1  import { senderkit } from "@senderkit/node";
  2
  3  export async function POST(req: Request) {
  4    const user = await createUser(req);
  5  
  6    // Marketing edits this template. You don't redeploy.
  7    await senderkit.send("welcome_email", {
  8      to: user.email,
  9      vars: { first_name: user.first_name, trial_days: 14 },
 10    });
 11  
 12    return Response.json({ ok: true });
 13  }
Live · 12,847 sends todayp99 142ms · 99.99% uptime
Works with the providers you already use
TwilioAmazon SES/SNSMailgunFirebaseExpo
· How it works

Engineering wires it up once. The whole team edits forever.

SenderKit splits the two halves of every transactional message — the trigger and the content — so the right team owns each.

For Engineering

One SDK call. Type-safe variables.

Reference templates by slug. The compiler enforces the variable contract — never ship a send with a missing field again.

signup.ts● TYPED
await sk.send("welcome_email", {
  to:   user.email,
  vars: { first_name: user.first_name, trial_days: 14 },
});
For Product & Marketing

Edit copy. Hit publish. It's live.

A real editor with versioning, branching, and rollback. Variables are typed too — your team can't rename one and break the build.

welcome_email · v13● PUBLISHED

Hey {{first_name}},

You have {{trial_days}} days to try Pro free…

Lin · 2m ago — changed CTA copy

01

Ship copy without deploys

Marketing changes a headline at 4pm. It's live by 4:01. No PR, no review, no on-call ping.

— Save your engineers for product work
02

One store, every channel

Email, SMS, push, in-app — same template tree, same variables, same audit log. Stop maintaining four mailers.

— Built-in: locales, A/B variants, fallbacks
03

Roll back the bad copy

Every save is a version. Diff it. Branch it. Roll back a typo in one click — without redeploying anything.

— Full audit trail, per-environment promotion
The problem

Your templates live in your codebase. They shouldn't.

  • Marketing files a ticket. Engineering ships a PR. Three days pass.
  • Templates scattered across mailers, lambdas, push services.
  • No version history. No A/B. No way to roll back a typo.
  • Every locale change is another deploy.
The fix

One template store. Every channel. Edit and ship in seconds.

  • Templates centralized — one source of truth across services.
  • Versioned. Branchable. Rollback in one click.
  • Multi-channel from day one: email, SMS, push, in-app.
  • Edge-cached delivery. Same code, faster sends.
Features

Built for teams that ship.

Template management

Rich editor for product. Code editor for engineering. Same template, two views.

Versioning & rollback

Every save is a version. Diff. Branch. Roll back to any point.

Multi-channel

Email, SMS, push, in-app. One API. One template store.

Developer-first API

Type-safe SDKs for Node, Python, Go, Rust. CLI for CI. Webhooks for events.

Locales

Variants per locale. Auto-detection. Fallbacks. Live preview in any language.

Edge delivery

Templates served from the edge. Cold-start sends in under 50ms.

Ship messaging like you ship code.

Free up to 3,000 messages a month. No credit card. No sales call.

By creating an account, you agree to our Terms.