Send password resets, magic links, and receipts through one API. Manage templates outside your codebase and change copy without a redeploy.
import { senderkit } from "@senderkit/node"; // Edit this template in the dashboard. No redeploy. await senderkit.send("password_reset", { to: user.email, vars: { reset_link }, });
One endpoint, any language. Send your first email in minutes.
No external account needed to get started. Already using Amazon SES, Postmark, or SendGrid? Route through it instead — no lock-in.
Secure, expiring reset links your users actually receive.
One-tap sign-in links and one-time codes, sent in milliseconds.
Multi-step welcome series, triggered straight from your backend.
Payment confirmations, invoices, and dunning notices.
New-device and suspicious-login warnings, the moment they happen.
One senderkit.send() call per email type. Type-safe variables enforced at compile time.
Change subject lines, body, and CTAs in the dashboard. No PR, no redeploy, no on-call.
Every save is a version. Diff, branch, or roll back a bad password reset email in one click.
Rich editor for your team. Code editor for engineering. Same template, two views.
Send out of the box, or route through Amazon SES, Postmark, SendGrid, or raw SMTP. Switch anytime — no lock-in.
Every save is a version. Diff it, branch it, roll back a bad send in one click.
The compiler enforces every variable. Never ship a reset email with a missing link.
Separate staging and production templates. Promote a change when you're ready.
Templates served from the edge. p99 under 150ms, anywhere in the world.
export async function POST(req) { const user = await findUser(req); // 40 lines of HTML, hardcoded in your route const html = `<h1>Reset your password</h1> <a href="${reset_link}">Reset</a> ...`; await mailer.send({ to: user.email, html }); }
import { senderkit } from "@senderkit/node"; export async function POST(req) { const user = await findUser(req); // Change the copy in the dashboard. No redeploy. await senderkit.send("password_reset", { to: user.email, vars: { reset_link }, }); }
Free up to 3,000 messages a month. No credit card. No sales call.
By creating an account, you agree to our Terms.