Open beta — no waitlist

Send every email from one API and trace where each one lands

Themailer is a developer-first email platform. Authenticate a domain, drop in an API key, and get transactional delivery, broadcasts, live bounce handling, and a searchable log of what happened to every message — without the enterprise price tag.

No credit card required · Verified domain to first send in minutes
curl -X POST https://app.themailer.dev/api/v1/emails \  -H "Authorization: Bearer $THEMAILER_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "from": "hello@yourdomain.com",    "to": "user@example.com",    "subject": "Welcome aboard",    "html": "<p>Your account is live.</p>"  }'
202 Accepted{ "id": "em_3f9c1a72", "status": "queued" }
Live in the beta

Everything below is shipped, wired up, and sending today

No mock screenshots. Every capability here is running in the product you get when you sign up.

Transactional API

One authenticated POST. Your send is queued immediately, retried on failure, and traceable by message id from that moment on.

Domain authentication

Add a domain, publish the three DKIM records we generate, and verify in a click. DMARC guidance comes with it.

Delivery events

Deliveries, bounces and complaints stream back from the provider and land on the message itself — not in a separate silo.

Automatic suppression

Hard bounces and complaints are suppressed the moment they arrive, so a dead address can never burn your reputation twice.

Message log

Every send and its events in one place, filtered by status, window, API key or a search across subjects and addresses — and the same filtered view downloads as CSV.

Audiences

Contacts, lists and bulk paste import. A malformed row is reported rather than fatal, so one bad line can't reject the other nine hundred.

Templates

HTML and plain text side by side with a live preview, and merge fields with fallbacks — because “Hi ,” is how a broken mail merge announces itself.

Broadcasts

Send to a list through the same path as the API, so every message is billed, suppression-checked and traceable one recipient at a time.

One-click unsubscribe

Broadcasts carry List-Unsubscribe headers, so inboxes show their own opt-out button — and it writes straight to your suppression list.

Deliverability metrics

Delivery, bounce, complaint, open and click rates over 7, 30 or 90 days, computed from your messages rather than a precomputed rollup.

Signed webhooks

HMAC-signed event callbacks to your endpoints, retried six times with a backoff that runs from ten seconds to an hour, with a delivery log you can inspect and resend from.

Workspaces & API keys

Invite teammates as owner, admin or member. Keys are scoped, hashed at rest, revealed once, revocable, and rate limited per key.

Shipping next

A beta is only honest if the gaps are public too

These aren't finished yet. Everything in the section above is — this is what's still missing, published so you can weigh it before you build, not after.

  • Inbound routingReceiving is built and tested end to end, but the MX host isn’t switched on yet, so mail sent to a domain you point at us isn’t delivered anywhere today.Next up
  • Self-serve top-upsUsage is metered and priced per email today, but adding funds still goes through us. Card payments and automatic top-up are next.Next up
  • Scheduled broadcastsChoose a send time instead of sending the moment you hit go. Today a broadcast leaves immediately.Next up
  • SegmentsFilter an audience by attribute and send to the slice. Lists are flat for now — you send to all of one or none of it.Planned
  • Custom contact fieldsMerge any attribute you store on a contact. Merge fields currently cover name, email and the unsubscribe link.Planned
  • React Email templatesAuthor templates as React components rendered server-side at send time. The editor is HTML and plain text today.Planned
  • Per-campaign reportingDeliverability and engagement broken down by broadcast rather than aggregated across the whole workspace.Planned
  • Editing list membershipMove a contact between lists after it exists. Today a contact joins a list at import, and changing that means importing it again.Planned
Open beta

Your first email is ten minutes away

Create a workspace, verify a domain with three DNS records, and drop your API key into your app. No sales call, no waitlist, no credit card.