An email platform that runs on your Amazon SES.
Transactional and marketing email from one place, on infrastructure and data you control. Drive it from a dashboard, your code, or an AI agent.
$ speak emails send \ --to user@example.com \ --template welcome
Everything a sending platform needs, in one place.
Transactional and marketing, deliverability, analytics, and compliance. Headless-first, dashboard when you want it.
Transactional API
One call sends receipts, resets, and alerts. Accepted in milliseconds, returned with an id you can track.
Campaigns & segments
Build audiences, segment them, and broadcast to thousands from the same platform.
Contacts & custom fields
A real contact store with typed custom fields, not a CSV you re-upload every send.
Liquid templates
Reusable, versioned templates with variables, rendered server-side on every send.
Shared brand system
One logo, palette, and footer applied across every project. Edit once, everywhere updates.
Scheduled sends
Queue a message or a campaign for later. It fires on time, exactly once.
Per-send tracking
Flip open and click tracking on or off for each message, with no global compromise.
Deliverability, built in
DKIM, SPF, and DMARC set up and monitored so your mail lands in the inbox.
Live analytics
Delivered, opened, clicked, bounced, and complained, streaming in as they happen.
Compliant opt-out
One-click unsubscribe and topic-scoped suppression on every marketing send.
Webhooks
Signed event webhooks in a native format or a drop-in compatible one for existing consumers.
Safe by default
Idempotency keys, rate limits, and scoped API keys guard every endpoint.
Run it however you work.
A visual dashboard for people, a typed API for code, and an MCP server for agents. The same platform underneath all three.
Call the API or SDK
A typed Node SDK, a plain REST API, and a Nodemailer transport that drops into what you already have.
import { SpeakMail } from "@speak-mail/node";const speak = new SpeakMail({apiKey: process.env.SPEAKMAIL_API_KEY,});await speak.emails.send({from: "Speak <hello@speakmail.co>",to: ["user@example.com"],subject: "Welcome aboard",html: "<p>Thanks for signing up.</p>",});
Or just ask
An MCP server exposes the whole platform to any AI client. Every action a person can take, an agent can take too.
# Connect the MCP server@speak-mail/mcp# Then talk to it“Send the welcome email toeveryone who joined this week.”→ audience resolved→ template rendered→ 812 messages queued
From your call to the inbox, and back.
Every delivery, open, click, bounce, and complaint streams back into live analytics and your webhooks.
You pay the AWS rate, not a SaaS markup.
speakmail sends over your own Amazon SES, so your bill is the SES rate itself. Drag to see how it compares as your volume grows.
$35 infra + $50 sending
published list price, tiered
speakmail is a fixed AWS baseline (~$35/mo for EC2 + managed Postgres + storage) plus SES at $0.10 per 1,000, billed by AWS with no markup. SendGrid figures are its public Email API list prices, rounded; Marketing Campaigns and add-ons are billed separately. For comparison only.
Owned infrastructure, not a rented black box.
The same deliverability and tooling as a hosted service, running on infrastructure and data that stay yours.
Your infrastructure
Runs on your own Amazon SES account, not a black box you rent by the month.
No per-email markup
You pay AWS for what you send. Nothing stacked on top of it.
Your data stays yours
Contacts, events, and content live in a database you control.
One platform, both jobs
Transactional and marketing from a single sender identity and a single console.
Send on your own terms.
Spin up a project, verify a domain, and start sending in minutes.