Tool Directory / Email
Send transactional email that lands in the inbox
Password resets, receipts, and invitations are the emails your product cannot afford to lose, and the API that sends them is the easy part. This page compares the three providers worth shortlisting in 2026, the templating layer that makes HTML email bearable, and the DNS work that decides whether any of it reaches an inbox.
Reviewed August 2026. Back to the tool directory.
What this layer decides
Two things that matter and one that does not. What matters is deliverability - whose IP reputation you are borrowing and how carefully the provider polices its other customers - and cost curve, because per-email pricing that is trivial at 5,000 messages a month is a real bill at five million. What does not matter is the API, since all three are a single HTTPS POST with a JSON body and every one of them has a decent SDK.
Keep transactional and marketing mail on separate streams or separate providers no matter which one you pick. One newsletter with a bad complaint rate should never be able to stop your password resets from arriving.
The three providers worth shortlisting
Resend
Best developer experience
Built by the team behind React Email, so templates are JSX components and the preview server is part of the workflow rather than an afterthought. Domain setup is a guided DNS flow, webhooks for bounces and complaints are one toggle, and the free tier covers 3,000 emails a month with a 100 per day cap. Pro is $20 a month for 50,000 and Scale is $90 for 100,000. It layers on shared sending infrastructure rather than running its own mail transfer agents, so your reputation is pooled with other senders until you pay for a dedicated IP. resend.com
Postmark
The deliverability benchmark
Postmark owns its infrastructure end to end and vets every sender, which is why it keeps winning independent inbox placement tests - a 2026 comparison put it at 83.3 percent inbox placement and 1.0 percent spam against 77.1 percent and 20 percent for raw SES. Message Streams keep transactional and broadcast traffic on separate reputations by design. Pricing starts around $15 a month for 10,000 emails, which is more than Resend and much more than SES, and is the correct trade when a missed password reset costs you a customer. postmarkapp.com
Amazon SES
Cheapest at volume, most work
Ten cents per thousand emails with no monthly minimum, so 100,000 messages costs about $10 against $90 on a comparable Resend plan. You pay for that in setup and operations: production access requires leaving the sandbox by request, bounce and complaint handling is your code subscribing to notifications, there is no usable template UI, and the shared pools carry every low-quality sender AWS also serves. Right when volume is large and someone genuinely owns deliverability. aws.amazon.com/ses
| Provider | Free tier | Roughly 100k a month | Best for |
|---|---|---|---|
| Resend | 3,000 a month, 100 a day | $90 on the Scale plan | React and TypeScript teams shipping fast |
| Postmark | Trial only | Volume pricing above the $15 entry tier | Products where a lost email is a lost customer |
| Amazon SES | Limited, tied to AWS usage | About $10 at $0.10 per thousand | High volume with an owner for deliverability |
React Email is the templating layer
HTML email is still nested tables, inline styles, and client quirks that would embarrass a 2004 browser. React Email hides that behind components: you write JSX, it renders the table soup, and a local preview server shows every template while you edit. It is provider-agnostic, so the same components render to a string you can hand to Postmark or SES just as easily as to Resend.
The practical win is that your marketing email and your product share a design system, and that a template change goes through code review like everything else. Alternatives worth knowing: MJML if your team is not on React, Maizzle if you want Tailwind-driven email, and the provider's own hosted templates when non-developers need to edit copy without a deploy.
import { render } from '@react-email/render';
import WelcomeEmail from './emails/welcome';
const html = await render(WelcomeEmail({ name: 'Ada' }));
await mailer.send({ to, subject: 'Welcome', html }); Deliverability is DNS plus discipline
- Authenticate all three ways. SPF, DKIM, and a DMARC record are effectively mandatory - Gmail and Yahoo have enforced them for bulk senders since 2024, and unauthenticated mail from a new domain goes straight to spam. Every provider here walks you through the records; do not skip DMARC because it is the optional-looking one.
- Send from a subdomain. Use something like mail.example.com for product email so a reputation problem never touches your root domain, and keep marketing on a different subdomain again.
- Warm up gradually. A brand-new sending domain that suddenly emits 50,000 messages looks exactly like a compromised one. Ramp volume over a couple of weeks, especially on a dedicated IP.
- Handle bounces and complaints in code. Subscribe to the webhooks, suppress hard bounces permanently, and honor unsubscribes immediately. Repeatedly mailing dead addresses is the fastest way to wreck a reputation you did not have to earn.
- A 200 response is not delivery. The API accepting your request only means it was queued. Confirm with the provider's delivery webhook or event log, and test that a real message reaches a real inbox on the recipient's actual mail host before you call a contact form done - accepted-then-silently-discarded is a genuine failure mode.
- Log every send. Store the provider message ID with the user and event that triggered it. When support asks whether the invitation went out, the answer should be a database row and not a guess. Wire the failures into your error monitoring as well.
Our pick
Resend with React Email, and Postmark when the stakes are higher
Start on Resend. The free tier covers a product with real users, the domain setup takes ten minutes, and React Email templates mean your transactional mail is built out of the same components as your app. For the overwhelming majority of products this is where you should be, and you can stay there through six figures of monthly volume.
Switch to Postmark when a message failing to arrive is a business problem rather than an annoyance - fintech, healthcare, anything where the email is a legal receipt - and accept the higher per-message price as insurance. Move to Amazon SES only above roughly half a million messages a month, and only when a named person owns deliverability, because the money you save is exactly the work you take on.
Related layers
Authentication
Magic links and verification mail come from this layer.
Browse the layerBackend runtimes
Where the send call and its retry logic actually run.
Browse the layerMonitoring
How you find out that sends started failing.
Browse the layerSaaS stack
Where email fits alongside auth, billing, and hosting.
See the stackShipping something small this weekend? The weekend MVP stack pairs a free email tier with the rest of a working product, and the headless CMS directory covers the content side of the same site.