
Email infrastructure that doesn't fight you
API-first drip sequences, campaigns, and contact management. One system across all your sites. Pay per email, not per subscriber. Bring your own SendGrid key. No broken SDKs. No surprises.
curl -X POST https://pushmail.dev/api/v1/contacts \
-H "Authorization: Bearer pm_live_..." \
-d '{
"siteId": 1,
"email": "user@example.com",
"firstName": "Jane",
"tags": ["signup", "trial"]
}'Sound familiar?
Every ESP has the same problems
“4 years of good standing, thousands/year in spend — account suddenly suspended with no communication.”
SendGrid user, Hacker News
“It literally takes more code to use the helpers than it does to construct the request payloads manually.”
SendGrid SDK, GitHub issue #335
“Free plan cut from 10,000 emails down to 1,000 sends/month. 5,000 contacts now costs $100/month.”
Mailchimp, post-Intuit acquisition
“The most deeply nested API shape of any provider. Setup is more complex than any other, and error messages are cryptic.”
Amazon SES
Built different
We fixed every one of them
Your keys, your reputation
BYOK mode lets you use your own SendGrid key, so your sending reputation is yours alone. No shared infrastructure surprises.
No SDK required
Plain REST + JSON. Works from any language, any runtime. No broken TypeScript types, no React dependency, no bloated helpers.
Edge-native
Built on Cloudflare Workers. Works from Vercel Edge, Deno Deploy, or any runtime. No “Node.js only” SDK to work around.
Pay per send
No subscriber fees. Dead contacts cost nothing. Volume pricing drops to fractions of a cent. No cliff where 250k emails suddenly costs 3x.
One platform
Sequences, campaigns, and transactional email in one system, one API, one bill. No choosing between Postmark and Mailchimp.
Flat, predictable API
POST /contacts, POST /sequences/:id/enroll. No personalizations array, no PascalCase, no o:tag field naming.
Multi-site
One account, unlimited sites. Manage email for all your projects from a single dashboard and API key. Migrate incrementally.
Minutes to first email
Five steps: signup, API key, site, contact, enroll. No sandbox mode to escape, no IAM policies to configure, no DNS to wait on.
Free email validation
Every email is validated before sending — syntax, MX records, disposable domains, and a global bounce list. Bad addresses never hit your sender reputation. No extra charge.
Auto-SSL click & open tracking
Custom domain click and open tracking with automatic SSL. No CDN setup, no support tickets, no broken links. Just add a CNAME and toggle it on.
AI-native
15 MCP tools for Claude, GPT, and Cursor. Manage your email infrastructure with natural language. No other ESP offers this.
The industry vs. PushMail
Side by side
| Problem | Everyone else | PushMail |
|---|---|---|
| Sending reputation | Shared infrastructure means others' behavior affects your deliverability | BYOK mode — your own SendGrid key, your own reputation. |
| SDK quality | Broken TypeScript, React dependencies, no Edge support | No SDK needed. Plain fetch/curl from any language or runtime. |
| Pricing | Per-subscriber billing, tier cliffs, charges for dead contacts | Per-send pricing. $0.003 down to $0.0005 at volume. |
| Transactional + marketing | Two providers or two bills. Postmark bans marketing email. | One platform. Sequences, campaigns, and transactional. |
| Edge Runtime | SendGrid, Mailgun, Postmark SDKs don't work on Workers | Built on Cloudflare Workers. Edge-native by default. |
| API design | personalizations arrays, PascalCase, o:tag, nested shapes | Flat REST. Predictable endpoints. JSON in, JSON out. |
| Email validation | Paid add-on. SendGrid charges per validation, only on Pro+. | Free. Every email validated at send time. No extra cost. |
| Click & open tracking | Set up a CDN, configure SSL, contact support to activate | Add one CNAME, toggle on. Auto-SSL on your custom domain. |
| Onboarding | AWS SES takes days. SendGrid docs are broken. | First email in minutes. Five-step quickstart. |
A pattern
Every ESP gets acquired. Then it gets worse.
SendGrid was acquired by Twilio. Mailchimp by Intuit. Mailgun by Sinch. Postmark by ActiveCampaign. In every case, support collapsed, pricing increased, and development slowed. PushMail is independent and built on Cloudflare infrastructure with no single-vendor dependency.
SendGrid
Twilio, 2019
Support collapsed, app performance degraded
Mailchimp
Intuit, 2021
Free plan gutted, prices increased dramatically
Mailgun
Sinch, 2021
Deliverability and support inconsistencies
Postmark
ActiveCampaign, 2022
Development velocity stalled, stale releases
Pricing
Stop paying for contacts that can't receive email
Most ESPs charge per subscriber — including unsubscribed, bounced, and inactive contacts. PushMail charges per email sent. Dead contacts cost you nothing.
$0.003
per email at base volume
Scales down to $0.0005 at high volume
$0
for inactive contacts
Mailchimp charges for unsubscribed contacts
15% off
with branding footer
Add “Sent with PushMail” and save on every email
Compare: SendGrid jumps from $89/mo to $249/mo at 250k emails. Mailchimp charges $100/mo for 5,000 contacts. Drip starts at $39/mo for just 2,500 contacts. Postmark has no free tier at all.
Zero-config tracking
Custom domain click & open tracking with automatic SSL
Every other ESP makes you set up a CDN, configure SSL certificates, and contact support to get branded click tracking working. PushMail provisions SSL automatically. Add a CNAME, flip a toggle, done.
Add a CNAME
Point your tracking subdomain to links.pushmail.dev. We provision the SSL certificate automatically.
Toggle tracking on
Enable click tracking, open tracking, or both independently per domain from the dashboard.
Track on your domain
Links are rewritten to your branded subdomain. Opens are tracked with a pixel. All data flows into your analytics dashboard.
With SendGrid, Mailgun, or SES: you need to set up Cloudflare, Fastly, or a custom NGINX proxy, configure SSL certificates, and then contact support to activate tracking. With PushMail, it's a CNAME and a toggle.
First email in minutes
Signup, create an API key, add a site, create a contact, enroll in a sequence. That's it. No sandbox to escape, no IAM to configure, no DNS to wait on.