The free Postmark alternative
with no 100-email ceiling.
Postmark earned its reputation on transactional deliverability and a no-nonsense API. Its free plan, though, is 100 emails a month — enough to test, not enough to run anything. Sendsprite is a self-hosted email API that sends through Amazon SES in your own account, with the same transactional focus and no ceiling but your SES quota.
Install
curl -fsSL https://sendsprite.com/install.sh | shDocker + Postgres. Prompts for a domain, brings up the container, opens the setup wizard.
01 — Why leave Postmark
What you give up staying on Postmark.
Postmark's message streams, its bounce handling and its inbound parsing are mature, and its support is well regarded. If you want a vendor on the hook for deliverability and 10,000 emails for $15 fits, it is a fine choice.
100 emails a month is a demo, not a free plan
Postmark's free tier stops at 100 emails a month with no overage. A password-reset flow on a small app clears that in a week. Self-hosted Sendsprite has no monthly cap: SES starts most new accounts at 50,000 a day and raises it on request.
$1.80 per 1,000 against $0.10
Postmark Basic is $15 for 10,000 emails and $1.80 per 1,000 beyond. The same 10,000 emails cost $1 at SES. At 100,000 a month Postmark's list price passes $100; SES is $10.
45 days of history, unless you pay for more
Postmark keeps 45 days by default and sells longer retention on higher plans. Sendsprite stores every event in your Postgres; retention is a setting, not a tier.
Everything Postmark's API does, on your box
Signed webhooks for delivery, bounce, complaint, open and click. Automatic suppression on hard bounces and complaints. An SMTP relay on port 587 for the legacy app that cannot speak HTTP. Batch sends, tags, scheduled sends, idempotency keys.
02 — Side by side
Sendsprite vs Postmark (ActiveCampaign).
| Postmark | Sendsprite | |
|---|---|---|
| Price at 10,000 emails / month | $15 (Basic), $16.50 (Pro), $18 (Platform) | $0.10 per 1,000 at Amazon SES — $1 for 10,000 — plus the box |
| Overage | $1.80 / $1.30 / $1.20 per 1,000 | $0.10 per 1,000, flat |
| Free tier | 100 emails / month, no overage | Free to self-host, for ever. No email cap: the only limit is your SES sending quota |
| Event retention | 45 days; up to 365 on Pro and Platform | Your Postgres, your retention. Keep events for a day or for ten years |
| Self-hostable | No | Yes — one container plus Postgres, installed with one command |
| Your own AWS account | No — Postmark's infrastructure | Yes — SES in your account, credentials never leave it |
| Source | Closed | Open source — MIT server, SDK, CLI and MCP server |
| SMTP relay | Yes | Yes — port 587 with an API key as the password |
| Webhooks | Yes | Signed webhooks for delivery, bounce, complaint, open and click, plus a live SSE stream |
| AI agents | — | MCP server included, scoped by the same API keys |
Postmark figures are list prices from postmarkapp.com/pricing on 2026-08-29. Amazon SES is $0.10 per 1,000 outbound emails plus $0.12 per GB of attachments.
03 — Questions
Postmark alternative, asked plainly.
- Is there a free alternative to Postmark?
- Sendsprite is free to self-host and has no email cap of its own. You pay Amazon SES $0.10 per 1,000 emails plus a small server. Postmark's free plan is 100 emails a month.
- Can Sendsprite handle transactional email only, like Postmark?
- Yes, and campaigns too if you want them. Transactional sends go through the same queue, suppression list and event log; automatic suppression on hard bounces and complaints keeps the reputation where a transactional sender needs it.
- How do I migrate from Postmark?
- Install Sendsprite, connect AWS with the one-click CloudFormation stack, verify your domain, then switch the SMTP host or the API base URL and key. Webhook payloads are documented so your bounce handler is a small mapping change.
- Does Sendsprite have message streams?
- Sendsprite separates sending by API key and by tag rather than by stream, and every event carries the tags you sent with. Rate limits and suppression are per team.
04 — Also compared