Transactional Email
Send the emails your app triggers — sign-up confirmations, password resets, receipts — and make sure they arrive.
The real choice
Transactional or marketing. Transactional services send one message the moment your app triggers it (a password reset, a receipt). Marketing/lifecycle tools send sequences and campaigns to lists. Most apps need the first on day one and the second later.
Pick by situation
Tap the ones that are you — the tools that fit light up below.- You write React or TypeScript and want email templates as components in the same codebase
Resend - Your login codes and password resets must arrive within seconds
Postmark - Your app also needs to receive and parse email that users send to it
Mailgun - You send at high volume and cost per email matters most
Amazon SES
The contenders
Grouped by the side of the choice they answer, not ranked. Open a row for when to use it, the trade-off and what makers say.
Resendapi · free tierA modern developer API with email templates written as React components.


944+54 open source$20Pro 50k9.4M/wk4.1× vs npm
Use it whenYou're setting up sign-up and reset emails in a TypeScript app and want templates to live next to your UI code.
Trade-offA younger service than Postmark or SES, and costlier than SES at very high volume.
llms.txtIn Bolt, Lovable, ReplitUsed by Actx0, Agentcard, Airbook AI, Anything, Apex and 939 more · in 54 open-source projects.
SendGrid and Mailgun still work but feel like 2015. Resend has the cleanest API and React-based email templates, so all my transactional mail took an afternoon instead of a sprint.
Postmarkservice · free tierDeliverability when the mail has to arrive within seconds.
615+5 open source$55Basic 50k1M/wk−8% vs npm
Use it whenLogin codes and password resets are arriving late or in spam with your current sender.
Trade-offStrict about transactional-only sending — marketing email goes through a separate stream — and the free developer plan is small.
llms.txtUsed by Agiled, AskReferral, BlogBowl, Bluedot, Buttondown and 610 more · in 5 open-source projects.
We use Postmark not only for our emails, but also to power Ply's built-in dynamic email capabilities. It's reliable, well documented and most of all - comes with awesome human support.
Mailgunservice · free tierHigh volume and inbound email parsing and routing.
49+11 open source$35Foundation 50k1.1M/wk−23% vs npm
Use it whenUsers need to reply to or email into your app, and you need to route and parse those messages.
Trade-offIts dashboard and API are older and busier than newer services, and the free tier is small.
In LovableUsed by Amploo, Baboo Travel, browser extension, ByteStand, crtrdg and 44 more · in 11 open-source projects.
Common integrations include: ● Payment: Stripe , Paypal ● Newsletter Sending: Mailgun ● CRM: Salesforce ● Analytics: Google Analytics and Tag Manager ● Videos: YouTube, Vimeo…
Amazon SESserviceSending at high volume, where cost per email matters more than tooling.
4+32 open source$5.00À la carte3.6M/wk−15% vs npm
Use it whenYou already run on AWS, or your email volume makes per-message price the main cost.
Trade-offBare-bones; you build templates, bounce handling and tooling yourself.
Used by BetterPic, Chat Data, Scrapingdog, UptimeRobot · in 32 open-source projects.
SendGridserviceOne vendor for both jobs at large scale.
1061+26 open source$20Essentials 50k4.5M/wk−33% vs npm
Use it whenYou want transactional and marketing sending under one account and one dashboard.
Trade-offHeavier than a small team needs.
llms.txtIn ReplitUsed by ADYOUNEED, ASO, Assembly, BasedLabs.ai, Bricks and 1056 more · in 26 open-source projects.
…downside is that it’s much harder to implement than you might think! We’ve since moved to Sendgrid for delivery, which takes a lot of pain out of the process but it is expensive.…
Cost: the cheapest plan that fits emails 50k emails, from list prices. Try your own numbers →
Cost as you grow
Each contender's cheapest usable plan as usage rises.
Who switches to what
Public pull requests on GitHub since Oct 2024 whose title says "X to Y" — real code changes, by developers in general rather than makers only. Pick a flow to see its pull requests.
- Remove SendGrid integration and migrate to Resendnaaman10/bft-parents · 2026-09-27
- Switch email logs from SendGrid to Resendnaaman10/brighterfutures · 2026-09-27
- Reactor/migrate sendgrid to resendTranXuanAnh930/i-dolly-backend · 2026-09-21
- feat(notifications): migrate email delivery from SendGrid to Resendpongpanot0/lawfirmline · 2026-09-14
- Switch email delivery from SendGrid to Resendjorisvanmens/jorisvanmens.github.io · 2026-08-27
- feat(notifications): migrate email delivery system from SendGrid to Resendbillnapier/bellmon · 2026-08-24
- Switch contact mail payload from SendGrid to Resend shapespacedogstudios/spacedog-nextjs · 2026-08-05
- fix(onboarding): migrate onboarding-critical email from SendGrid to Resendmrantionehart/agents-portal · 2026-07-22
- feat: migrate transactional email from SendGrid to ResendJgandara24/sermon-clipper · 2026-07-18
- Switch transactional email from SendGrid SMTP to Resend APIgogogo-hash/packlight · 2026-07-16
- Add duplicate-safe Resend to SendGrid failoverNimoRotem/catchall-mail-stack · 2026-08-13
- Switch OTP email delivery from Resend to SendGridPriyanshi-06/DevInsight · 2026-08-08
- Migrate outbound email from Resend to SendGrid (Single Sender Verification)ko2527600/Accounting-Platform · 2026-07-29
- Switch email provider from Resend to SendGridSTYLEBOOK-TEAM/STYLEBOOK · 2026-07-27
- feat(email): switch registration email from Resend to SendGridbatashof/trimly · 2026-07-18
- feat: migrate from Resend to SendGrid API and cleanup unused Server f…indiatradeoverseas/IndiaTradeOverseas · 2026-07-16
- feat(email): swap digest provider from Resend to SendGridJonasDwellsy/pm-intel · 2026-07-13
- Switch transactional email delivery from Resend to SendGridkdeyarmin/PennTrain · 2026-07-05
- Switch from Resend to SendGrid for email deliverynauticaatins-debug/kbn-admin · 2026-06-18
- Switch transactional email from Resend to SendGridray-amjad/vidtempla · 2026-04-24
- feat: switch email delivery from SES to Resendfilippofortino/filemax · 2026-09-29
- Switch transactional email from SES to Resendmark-mcdermott/frunk · 2026-09-19
- feat: migrate login-code email from SES to Resendafsting/developer-experience-concepts · 2026-09-07
- Switch demo form email delivery from SES to Resenddatalign-technology/procela-website · 2026-07-24
- feat: migrate notification service from SES to Resend with audit trailFIAP-13SOAT/media-processor · 2026-07-14
- feat(email): migrate transactional email from AWS SES to ResendZen-TM/logjam · 2026-06-18
- Switch transactional email from SES to Resend; fix digest linksbballhaus/civitas · 2026-05-26
- Migrate email sending from AWS SES to Resend APIjbaranski/majorleaguesoccer-today · 2026-05-23
- Update Novantt template: migrate from Amazon SES to ResendDomain-Connect/Templates · 2026-05-21
- Claude/migrate ses to resend r8sj yjbaranski/majorleaguesoccer-today · 2026-05-20
- refactor(email): migrate email sending from Resend to Amazon SESethnjs/nexus · 2026-09-26
- [TASK-325] Move all email from Resend to Amazon SESjpj-youtube-ai/nbcc · 2026-08-31
- feat(mail): migrate email delivery from Resend to AWS SESZobeir-Rigi/Career-Mentors-Matching · 2026-08-13
- feat: swap contact form from Resend to AWS SESAI-Institute-Food-Systems/foodatlas · 2026-07-17
- EXP-108: migrate transactional email from Resend to Amazon SESNiach/exponential · 2026-07-15
- 3047 - Migrate report email delivery from Resend to Amazon SESValuatumOy/AI-company-valuation-raportti · 2026-07-14
- Switch outbound email from Resend to Amazon SESNooh-wq/solvr · 2026-07-04
- feat(email): migrate from Resend to Amazon SESFujiwaraChoki/supoclip · 2026-06-30
- Alerts: switch email sending from Resend to Amazon SESnrdptel/Hobby-Rocket-Motor-Finder · 2026-06-06
- feat(email): migrate from Resend to AWS SESS-3-Research/Demos · 2026-05-15
- Sendgrid to ses cost reductioncm-igarashi-ryosuke/zenn-connect · 2026-09-11
- Migrate email service from SendGrid to Amazon SESindentlabs/notebook · 2026-08-06
- Migrate email from SendGrid to Amazon SES (SMTP)wrenchtokeys/rswr_systems · 2026-07-10
- feat(email): migrate cookiecutter default from SendGrid to AWS SEShmesfin/my-django-cookiecutter · 2026-05-19
- Switch email from SendGrid to Amazon SES with redesigned templateskresnajenie/merfisheyes · 2026-03-29
- Migrate email service from SendGrid to AWS SESk2bg-technology/k2bg-branding · 2026-02-03
- Migrate email service from SendGrid to AWS SEShackforla/food-oasis · 2026-01-13
- Migrate email delivery from SendGrid to AWS SESGratheon/user-cycle · 2025-09-17
- update: migrate email sending from SendGrid to Amazon SESnerubia/kh360-nodejs · 2025-08-20
- update: migrate email sending from SendGrid to Amazon SESnerubia/kh360-nodejs · 2025-08-05
- Migrate email from SendGrid to MailgunAbinashi7/helpdesk · 2026-08-02
- Switch from SendGrid to Mailgun for email deliveryran1-987/py-service · 2026-07-19
- Switch email delivery from SendGrid SMTP to Mailgun APISplitTime/OpenSplitTime · 2026-04-10
- Switch email backend from SendGrid to Mailgunrlronan/ghp-measurement · 2026-04-06
- Switch notify.py from Sendgrid API to Mailgungreenberga/uploader · 2026-01-05
- Change the mail sending implementation SendGrid to MailGundertinfo/dertinfo-api · 2025-12-07
- feat(mail): migrate from SendGrid to Mailgun, update env/config, and …Nexacore-Org/NexaFx-backend · 2025-09-27
- switch mailer from sendgrid to mailgun since free plans from sendgrid terminatedxjlin0/attendees32 · 2025-09-06
- Change SMTP email server from SendGrid to Mailgun and update Django versionFelidaeFundConservation/wildepod.org · 2025-07-31
- Switch email adapter from SendGrid to Mailgunhuddlz-hq/huddlz · 2025-07-24
- refactor(backend): move transactional email from Resend to PostmarkPomodoso/pomodoso · 2026-08-28
- Migrate assessment email routes from Resend to PostmarkRussellLack/ecm-dev-nextjs · 2026-08-21
- Replace notification email delivery from Resend to Postmarkbrosenbauer-m/LiAIson · 2026-06-17
- Rename outbound email provider references from Resend to Postmarkbrosenbauer-m/LiAIson · 2026-06-17
- Swap email-to-task webhook from Resend to Postmarkyoungfonz/pulsepro.work · 2026-04-18
- feat(email): migrate from Resend to Postmarkmasumi-network/sokosumi · 2025-09-24
- fix: migrate from SendGrid to Postmark (v0.3.23)nomadkaraoke/karaoke-decide · 2026-05-18
- Update email service from SendGrid to Postmark and remove related doc…Webcap/wiznote · 2025-11-04
- Release sendgrid to postmark swapClaudia413/tjp-website · 2025-08-19
- swap sendgrid to postmarkClaudia413/tjp-website · 2025-08-09
- Switch from SendGrid to Postmarkdanstewart/log-my-time · 2025-05-28
- [sendgrid] back to postmarkinstantdb/instant · 2025-04-03
Before you choose
Send from a subdomain (mail.yourapp.com), set up SPF, DKIM and DMARC before launch, and keep marketing mail on a separate stream so a campaign can't hurt your password resets.
- Sending without SPF, DKIM and DMARC set up, so password resets land in spam or get rejected by Gmail and Yahoo.
- Sending campaigns through the same stream and domain as transactional mail, so spam complaints about a newsletter hurt delivery of your password resets.
- Sending email inline in the request, so a slow or failing provider breaks sign-up; queue it and retry instead.
Other options
Real choices most makers here won't need to weigh.
Decided alongside
What the 1,886 makers' products here chose for their other decisions.