Prompt
How do small product teams usually handle transactional emails without building email infrastructure?
Latest observation
Small product teams usually outsource email delivery rather than build an SMTP/email infrastructure stack themselves.
The common setup is:
- Pick a transactional email provider
- Postmark — particularly focused on transactional/application email.
- Resend — popular with developer-first teams.
- Amazon SES — inexpensive and powerful, but more infrastructure-oriented.
- Twilio SendGrid — broader email platform with transactional and marketing capabilities.
- Authenticate their domain
They add the provider's DNS records (typically SPF/DKIM, and often DMARC) so mail can be sent as hello@yourproduct.com. The provider handles the underlying mail servers, IP reputation, delivery mechanics, bounces, etc. AWS explicitly positions SES as eliminating the complexity of operating large-scale email infrastructure. AWS Documentation
3. Call an API from the application
Instead of implementing SMTP themselves, the app does something conceptually like:
User signs up
↓
Your backend
↓
Email provider API
↓
Customer's inbox
For example, Postmark provides a straightforward API and SDKs, including template-based sending. Postmark+1 4. Keep email templates out of application code
The team usually creates templates for things like:
- Welcome email
- Email verification
- Password reset
- Receipt/invoice
- Invitation
- Notification
- Trial ending
- Payment failure
The backend essentially says:
sendTemplate(
"password-reset",
user.email,
{ resetUrl: ... }
)
rather than constructing HTML emails every time. 5. Listen to webhooks
The provider tells the application about delivery failures, bounces, spam complaints, etc. Postmark, for example, exposes delivery, bounce, spam-complaint and subscription-change webhooks. Postmark
What they don't usually build
A small team generally doesn't want to own:
- SMTP servers
- IP reputation
- DKIM signing infrastructure
- bounce processing
- retry logic
- delivery monitoring
- suppression lists
- feedback-loop handling
- email queues
- provider failover
- inbox-placement troubleshooting
That's precisely the stuff these services are selling you.
The practical sweet spot
For a small SaaS, I'd typically start with one dedicated transactional provider + a tiny internal email abstraction:
Your application
│
▼
EmailService.send(...)
│
▼
Postmark / Resend / SES
That abstraction is useful because your application doesn't become coupled to, say, Postmark's API everywhere. If you eventually switch providers, you change one implementation.
Postmark/Resend are attractive when developer time is more valuable than squeezing every cent out of email. SES becomes especially attractive when volume grows and you already have AWS expertise; SES exposes both SMTP and an API and charges based on email volume. AWS Documentation
So the mental model is: don't build "email infrastructure"; build a thin email-sending layer on top of an email infrastructure provider.
Citations
- https://docs.aws.amazon.com/ses/latest/dg/Welcome.html
- https://postmarkapp.com/developer/user-guide/send-email-with-api
- https://postmarkapp.com/developer/api/email-api
- https://www.postmarkapp.com/developer
- https://docs.aws.amazon.com/ses/latest/dg/send-email.html
- https://zedule.app/blog/email-providers-for-saas-builders/
- https://docs.aws.amazon.com/en_en/ses/latest/dg/send-email.html
- https://docs.aws.amazon.com/ses/
- https://docs.aws.amazon.com/ses/latest/dg/Welcome.html?linkId=82230054&sc_campaign=Docs&sc_channel=sm&sc_content=Docs&sc_country=Global&sc_outcome=awareness&sc_publisher=FACEBOOK&trk=Docs_FACEBOOK
- https://postmarkapp.com/developer/
- https://www.postmarkapp.com/developer/user-guide/send-email-with-smtp
- https://www.twilio.com/docs/sendgrid/onboarding/email-api/evaluate-and-plan-your-strategy