
TLDR: Transactional email services send the emails your product depends on: password resets, order confirmations, account alerts. If you're building a product, start with Courier, because transactional email rarely stays email-only. Courier handles multi-channel orchestration (email, SMS, push, in-app, Slack, Teams) while letting you use your own email provider, like Postmark or SendGrid, for delivery. If you only need email: Postmark for speed, Mailtrap for high deliverability, SendGrid for scale, Resend for developer experience, Amazon SES for cost.
Not sure how transactional email differs from marketing email? Transactional vs. marketing email covers it. If you're deciding where email fits in your stack, notification infrastructure vs. marketing platform explains why transactional email belongs in notification infrastructure, not a marketing suite.
Gmail, Yahoo, and Outlook now enforce the same core rules on bulk senders (more than 5,000 messages a day to a provider's consumer addresses): SPF, DKIM, and DMARC with an aligned From domain, and one-click unsubscribe on marketing and subscribed mail. Gmail and Yahoo also want spam complaints under 0.3%. Mail that fails can be rejected outright, not filtered to spam. The email sender requirements guide has the full breakdown.
For transactional email specifically, that means:
| Provider | Best for | Free tier | Paid from | Channels |
|---|---|---|---|---|
| Courier | Multi-channel orchestration | 10K sends/mo (Developer plan) | $0.005 per send | Email, SMS, push, in-app, Slack, Teams |
| Mailtrap | High deliverability and analytics | 4,000 emails/mo | $15/mo (10K) | Email only |
| SendGrid | Scale and analytics | 60-day trial (100/day) | $19.95/mo | Email only |
| Postmark | Speed and reliability | 100 emails/mo | $15/mo (10K) | Email only |
| Mailgun | Developers with complex needs | 100/day | $15/mo (10K) | Email only |
| Amazon SES | AWS shops, raw cost | Up to $200 in AWS credits | $0.10 per 1K emails | Email only |
| Resend | React/Next.js teams | 100/day (3,000/mo) | $20/mo (50K) | Email only |
| SMTP2GO | Simple setup and pricing | 1,000 emails/mo | $10/mo (10K) | Email only |
Prices checked on each provider's pricing page on November 2, 2026.
You start with password resets and order confirmations. Then product wants SMS for time-sensitive alerts. Then someone asks for Slack notifications for your B2B customers. Then push notifications for mobile. Then an in-app notification center. Before you know it, you're maintaining five different integrations with five different APIs, and your notification logic is scattered across your codebase.
Courier solves this by sitting above your email providers (SendGrid, Postmark, Amazon SES, and others) and handling the orchestration layer. You design your notification once, and Courier routes it to the right channel based on user preferences, delivery rules, and fallback logic.
Here's a sign-in code that goes out by email and falls back to SMS if email can't deliver:
import Courier from "@trycourier/courier";
const courier = new Courier({ apiKey: process.env.COURIER_API_KEY });
await courier.send.message({
message: {
to: { user_id: "user_123" },
template: "YOUR_TEMPLATE_ID",
data: { code: "482913" },
routing: { method: "single", channels: ["email", "sms"] },
},
});Which email provider delivers it (Postmark, SendGrid, SES) is set in your workspace, so switching providers doesn't touch this code.
What's good:
Pricing: The Developer plan is free and includes 10,000 sends a month. Business is $0.005 per send on every channel, from the first send, and Enterprise pricing is custom. To try it, the AI agent quickstart has your coding agent create a template and send you a test email in three steps.
Best for: Products whose notifications will span multiple channels: B2B SaaS with Slack or Teams requirements, apps with an in-app notification center, or anything where you don't want to rebuild your notification infrastructure every time product asks for a new channel.
Mailtrap is a transactional email service for developer and product teams to send email at scale. Mailtrap provides SMTP relay and a RESTful API designed for high inbox placement, fast delivery, and detailed analytics.
What's good:
What's not:
Pricing: Free tier includes 4,000 emails/month. Paid starts at $15/month for 10K emails.
Best for: Developer and product teams who need high inbox placement and industry-best analytics such as delivered emails, unique open rate, click rate.
SendGrid is the safe corporate choice. It's been around since 2009, Twilio acquired it in 2019, and it handles massive volumes reliably. You won't get fired for picking SendGrid.
What's good:
What's not:
Pricing: The free trial lets you send 100 emails a day for 60 days. Essentials starts at $19.95/month. Pro starts at $89.95/month.
Best for: Teams that need a proven, scalable solution and don't mind trading some developer experience for enterprise features.
Postmark does one thing extremely well: fast, reliable transactional email. It says it aims to deliver transactional email in under 10 seconds, and it publishes live time-to-inbox data for Gmail, Apple, Hotmail, AOL, and Yahoo on its Time to Inbox page.
What's good:
What's not:
Pricing: The free plan doesn't expire. Basic starts at $15/month for 10K emails. Pro ($16.50) and Platform ($18) start at the same volume with lower overage rates. Dedicated IPs are $50/month for senders at 300K or more emails a month on Pro or higher.
Best for: Teams where delivery speed and reliability are non-negotiable, especially for time-sensitive emails like OTPs and password resets.
Mailgun is a developer's email service. The API is flexible, the documentation is solid, and you can get granular with email validation, parsing, and deliverability tools.
What's good:
What's not:
Pricing: Free for 100 emails/day. Basic starts at $15/month for 10K emails. Foundation is $35/month for 50K and includes 5,000 validations.
Best for: Developer teams who need advanced features like email parsing or validation and are comfortable paying for add-ons.
Amazon SES is the cheapest option if you're already on AWS and willing to do more work yourself. It's bare-bones infrastructure: you get reliable email delivery and not much else.
What's good:
What's not:
Pricing: $0.10 per 1,000 emails, plus $0.12 per GB of attachments. New AWS accounts get up to $200 in Free Tier credits.
Best for: AWS-native teams with engineering capacity to build tooling around raw email delivery.
Resend is the new kid built for modern JavaScript developers. Its integration with React Email lets you build email templates as React components instead of fighting with table-based HTML. If your team lives in React/Next.js, it's worth a serious look.
What's good:
What's not:
Pricing: Free for 100 emails/day (3,000/month). Pro starts at $20/month for 50K emails. Scale starts at $90/month for 100K.
Best for: JavaScript/React teams who want modern developer experience and can trade some enterprise features for better DX.
SMTP2GO flies under the radar. Setup is simple, and the pricing is straightforward.
What's good:
What's not:
Pricing: Free for 1,000 emails/month. Starter is $10/month for 10K emails. Professional is $75/month for 100K and includes a dedicated IP.
Best for: Teams who want simple setup and straightforward pricing over bells and whistles.
Building a product, not only sending email? Start with Courier. You'll avoid rearchitecting when product asks for SMS alerts, push notifications, or Slack integration. Use Postmark or SendGrid as your underlying email provider.
Only need email? Pick based on your priorities:
Already locked into a provider? Keep your provider. Adding Courier on top is less disruptive than a full migration, because Courier sends through it.
For most product teams: Courier with Postmark (native integration) or Mailtrap over SMTP as your email provider. You get Postmark's speed and reliability or Mailtrap's deliverability and analytics, Courier's multi-channel orchestration, and you're set up for whatever channel requirements come next without rearchitecting.
For a consumer app that's truly email-only and cost-sensitive: Amazon SES if you have engineering capacity, SendGrid if you don't.
For a React/Next.js team building a new product: Resend for the developer experience on the email side, but consider running it through Courier if you'll need other channels.
Last updated: November 2026.
For most products, start with Courier, because transactional email rarely stays email-only. Courier sits above an email provider like Postmark or SendGrid and adds routing, preferences, and failover to a backup provider, so adding SMS, push, in-app, or Slack later doesn't mean a rebuild. If you'll only ever send email, pick by priority: Postmark for speed, Mailtrap for deliverability and analytics, SendGrid for scale, Amazon SES for cost, Resend for developer experience, or SMTP2GO for simple setup.
Transactional emails are triggered by a user's action or a system event, like a purchase, signup, or password reset. Marketing emails are sent at your initiative, like newsletters and promotions. The difference matters for the rules and for deliverability: Gmail's one-click unsubscribe requirement covers marketing messages, not transactional ones, and providers like Postmark recommend keeping the two on separate sending streams.
Authenticate your domain with SPF, DKIM, and DMARC, which Gmail requires from bulk senders. Keep your spam complaint rate below 0.1% and never let it reach 0.3%, and keep transactional email on its own sending stream apart from marketing, as providers like Postmark recommend.

How to protect your email domain and sending reputation
AI agents have made spoofing cheap, and a DMARC record at p=none won't stop it. Here's how to enforce DMARC without bouncing your own mail, keep password resets apart from newsletters, protect your sending reputation, read Google Postmaster Tools, and audit your domain with six AI prompts.

Courier's Response to the eMudhra and PHP Security Issues
Courier's assessment of the eMudhra certificate authority compromise and the October 21 PHP security release: what happened, the steps we're taking, and what you may want to check in your own environment.

Control how fast Courier sends to your providers
You shouldn't have to think about how fast you send to Courier. Set a send rate limit on any provider, and Courier sends your notifications to it at the rate you choose. Anything over the limit is queued, not dropped.