rootmail
NewAll three layers are live

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

send.ts
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}`,
});
The platform

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.

1
Layer 1

Identity & Sending

Available now

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
2
Layer 2

Conversation

Available now

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
3
Layer 3

Proof

Available now

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
The platform

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.

Developers

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
send.ts
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}`,
});
The sub-tenancy wedge

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.

  1. 1Create the sub-tenant with one API call.
  2. 2Hand back the returned TXT records — ownership, DKIM & SPF.
  3. 3Verify: rootmail checks DNS live and flips the tenant to verified.
  4. 4Send from their domain, with audit & suppression isolated per tenant.
DNS recordssunsetvillas.com
ownershipTXT
_rootmail.sunsetvillas.comrootmail-verify=8f2a91c4…c1
dkimTXT
rootmail._domainkey.sunsetvillas.comv=DKIM1; k=rsa; p=MIIBIjANBg…
spfTXT
sunsetvillas.comv=spf1 include:rootmail.io ~all
All records found — domain verified
Pricing

Start 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.

$0forever
3,000 emails / month
Free forever — no card
  • Transactional + marketing sends
  • Full audit trail & suppression
  • 3 AI assistant credits / month
  • Sandbox (test-mode) keys
  • Community support
Start free
Most popular

Pro

For startups shipping real product.

$20/ month
50,000 emails / month
then $0.85 / 1,000
  • Everything in Free
  • Reply threads & shared inbox
  • Sequences & automation
  • Campaigns & lists
  • 50 AI assistant credits / month
  • 3 teammates · email support
Start sending

Scale

For platforms onboarding their own customers.

$80/ month
250,000 emails / month
then $0.70 / 1,000
  • 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
Start scaling

Enterprise

For scale, compliance & data residency.

Custom
1M+ emails — committed-use
Volume discounts
  • 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
Contact sales

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.

Start 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
FAQ

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