Email infrastructure that scales with who's asking.
One sending core that stays dead-simple for a solo developer — and exposes sub-tenancy, full audit trails, and legal-grade proof the moment you need them. One API. One data model.
Typed SDK & CLI · snake_case JSON · idempotent by default · no credit card to start
import { RootMail } from "@rootmail/node";
const mail = new RootMail({ apiKey: process.env.ROOTMAIL_API_KEY! });
await mail.send({
to: "ada@example.com",
template: "welcome",
variables: { name: "Ada", product: "rootmail" },
idempotencyKey: `welcome-${user.id}`,
});Three layers. One data model.
A solo dev only ever touches Layer 1. A platform builder turns on sub-tenants. A fintech turns on proof bundles. Same API the whole way up — nothing to migrate as you grow.
Identity & Sending
Workspaces send mail. Spawn sub-tenants — each with their own verified domain, DKIM keys, reputation, and contacts, all reporting up to the parent.
- Transactional, marketing & sales sends
- Per-sub-tenant domains, DKIM & SPF
- Append-only audit trail
- Suppression, contacts & idempotency
Conversation
Every message is a thread. Inbound replies are parsed, attached, and routed back via webhook or a shared inbox.
- Inbound parsing & threading
- Shared inbox & reply routing
- Sequence exit-on-reply
- message.received webhooks
Proof
Cryptographically signed, exportable proof bundles of a message's entire lifecycle — built for compliance and disputes.
- Ed25519-signed proof bundles
- Full lifecycle attestation
- One-click export
- GDPR export & deletion
Everything a production email system needs
All three layers — identity & sending, conversation, and proof — are built and verified end-to-end, behind one API, a Node SDK and CLI, and a full operator dashboard.
Flexible Send API
Transactional, marketing, and sales sends from one endpoint — Handlebars templates or inline HTML, scheduled delivery, and priority lanes.
Exactly-once delivery
Pass an idempotency_key and rootmail guarantees a single send. Safe retries, no duplicate emails to your users.
Built-in sub-tenancy
Give every customer a verified sending domain — DKIM, SPF, and reputation isolated — without rebuilding your stack.
Deliverability tools
A 0–100 reputation score from real outcomes, plus SPF, DKIM, DMARC and BIMI setup guidance for every sending domain.
Engagement analytics
A sent → delivered → opened → clicked funnel with open and click rates, a daily send trend, and your top templates.
Sequences & campaigns
Drip sequences with delays and exit-on-reply, plus list-based campaigns — all metered against your plan, with stats.
Threads & shared inbox
Inbound replies are parsed, threaded, and routed back via webhook or a shared inbox — and sequences exit automatically on reply.
Proof & compliance
Ed25519-signed proof bundles and audit-grade exports anyone can verify, plus configurable redact/delete data-retention policies.
Append-only audit trail
Every lifecycle event — queued, sent, delivered, opened, clicked, bounced — is logged immutably and queryable per message.
Suppression & contacts
Bounces, complaints, and unsubscribes are checked before every send and scoped per workspace or sub-tenant.
Migrate in minutes
Import your suppression list and contacts straight from a SendGrid, Postmark, or Mailgun export — no reputation lost.
AI assistant
An in-app agent that builds, operates, and diagnoses your email — “why did this bounce?” — within your plan, with an AI no-code studio.
An API you can hold in your head
snake_case JSON over HTTPS, a typed Node SDK and a terminal/CI-ready CLI, idempotency on every send, and sub-tenant scoping with a single call. Read the trail back whenever you need to prove what happened.
- Fully typed @rootmail/node SDK + @rootmail/cli
- Idempotency keys on every send
- Sub-tenant scoping with withSubTenant()
- Deliverability, analytics & the AI agent, in-SDK
import { RootMail } from "@rootmail/node";
const mail = new RootMail({ apiKey: process.env.ROOTMAIL_API_KEY! });
// Idempotent transactional send — retries never double-send.
await mail.send({
to: "user@example.com",
template: "password-reset",
variables: { reset_url, user_name },
idempotencyKey: `pwd-reset-${user.id}`,
});Give every customer their own sending domain
Provision a tenant, hand back the exact DNS records to publish, verify them live, and start sending from their domain — DKIM, SPF, and reputation isolated per tenant. In local mock mode it auto-verifies, so you can demo the whole flow without a real domain.
- 1Create the sub-tenant with one API call.
- 2Hand back the returned TXT records — ownership, DKIM & SPF.
- 3Verify: rootmail checks DNS live and flips the tenant to verified.
- 4Send from their domain, with audit & suppression isolated per tenant.
_rootmail.sunsetvillas.comrootmail-verify=8f2a91c4…c1rootmail._domainkey.sunsetvillas.comv=DKIM1; k=rsa; p=MIIBIjANBg…sunsetvillas.comv=spf1 include:rootmail.io ~allStart free. Pay when you scale.
The same API at every tier — you only pay for the volume and the layers you switch on.
Free
For solo devs and side projects.
- Transactional + marketing sends
- Full audit trail & suppression
- 3 AI assistant credits / month
- Sandbox (test-mode) keys
- Community support
Pro
For startups shipping real product.
- Everything in Free
- Reply threads & shared inbox
- Sequences & automation
- Campaigns & lists
- 50 AI assistant credits / month
- 3 teammates · email support
Scale
For platforms onboarding their own customers.
- Everything in Pro
- Sub-tenants — their own domains
- Per-tenant DKIM & SPF/DMARC/BIMI guidance
- 250 AI assistant credits / month
- Team roles (RBAC) · unlimited seats
Enterprise
For scale, compliance & data residency.
- Everything in Scale
- Signed proof bundles & audit-grade exports
- Data-retention (redact/delete) policies
- Unlimited AI assistant credits
- Dedicated IPs & warming
- SSO / SAML · EU residency · SLA
Only pay for what you send.
Every plan includes a monthly volume; go over and it's just $0.85 / 1,000 on Pro, dropping to $0.50 at Enterprise — so growth never gets cheaper to leave. Free stays free and capped, and sandbox sends are always free.
Every plan includes
- The full REST API, Node SDK & CLI
- Deliverability score & engagement analytics
- Append-only audit trail
- Automatic suppression handling
- 1-click migration from SendGrid / Postmark / Mailgun
- Webhooks & delivery events
- Sandbox (test-mode) keys
- Usage-based billing — pay only for what you send
Questions, answered
How is this different from Resend or Mailchimp?
Those are separate products for separate jobs — transactional, marketing, and sales each live in their own silo. rootmail is one data model that satisfies all three, so you never re-platform as your needs change. The sub-tenancy and proof layers simply don't exist in those tools.
What exactly is a sub-tenant?
A customer of yours that sends under their own verified domain. You provision it via the API, hand them DNS records to publish (ownership, DKIM, SPF), verify, then send on their behalf — with reputation, contacts, and audit trails isolated per tenant but rolling up to your workspace.
Is there an SDK?
Yes — @rootmail/node ships today with a fully typed client and withSubTenant() scoping, covering messages, sub-tenants, templates, sequences, lists, campaigns, threads, and proof. A Python SDK is planned.
What's the difference between live and test keys?
Keys are prefixed rm_live_… and rm_test_…. Test-mode sends are sandboxed and never reach a real provider, so you can exercise the full pipeline in CI without sending mail.
Can I self-host?
rootmail is a standard TypeScript monorepo — a Fastify API, a BullMQ worker, Postgres, and Redis — so it runs anywhere Docker does. Managed cloud hosting is on the roadmap.
Are Conversation and Proof available yet?
Yes — all three layers are live today. Layer 2 (Conversation) gives you inbound parsing, threads, a shared inbox, and exit-on-reply; Layer 3 (Proof) gives you Ed25519-signed, exportable lifecycle bundles with a content hash. Turn each on as you need it — same API, nothing to migrate.
Send your first email in minutes
Create an account, grab your API key from the dashboard, and send through the SDK or the no-code studio. No install, no credit card to start.
pnpm add @rootmail/node