Email & Communication
Transactional email, SMS, push - Resend, SendGrid, SES, Postmark, Twilio. The "we forgot we need to send messages" infrastructure.
Email & Communication
Every product eventually needs to send messages: confirmations, password resets, alerts, marketing, notifications. Building this yourself means dealing with SMTP, deliverability, bounce handling, DKIM, rate limits, and abuse complaints — a multi-year tax.
The right call: use a transactional email provider plus, for non-email channels, dedicated services. This page covers the landscape.
What Communication You Need
| Channel | What for | Provider category |
|---|---|---|
| Transactional email | Verify email, reset password, receipts, alerts | Resend, Postmark, SendGrid, SES |
| Marketing email | Newsletters, campaigns, drip sequences | Mailchimp, Customer.io, Loops |
| SMS | OTP, urgent alerts, marketing | Twilio, MessageBird, AWS SNS |
| Push notifications | Mobile / web app messages | Firebase Cloud Messaging, OneSignal, APNs/FCM directly |
| In-app messaging | Notifications inside your product | Knock, Courier, build it yourself |
| Voice / WhatsApp | Calls, business messaging | Twilio, MessageBird |
Most products start with transactional email. Then SMS for verification. Then push for mobile. Marketing email is usually a separate decision (and often a separate tool with separate suppression lists).
Transactional Email Providers
| Provider | Notes |
|---|---|
| Resend | Modern; developer-first; React Email integration; growing fast |
| Postmark | Excellent deliverability; pricier; reputation-focused |
| SendGrid (Twilio) | Industry standard; full-featured; complex pricing |
| Mailgun | Mature; flexible; competitive pricing |
| Amazon SES | Cheapest at scale; pure delivery; you build the rest |
| Mailtrap | Dev-first; sandbox + transactional + testing |
| Loops | Modern; combines transactional + product marketing |
| Brevo (Sendinblue) | Transactional + marketing; European |
Starting points in 2026:
- New project, want it to work → Resend or Postmark.
- Already on AWS, technical team → SES + a wrapper library.
- Need both transactional and marketing in one place → Loops or Customer.io.
- High scale, technical → SES ($0.10/1000 emails), build deliverability ops yourself.
Why Not Just SMTP from Your App
Your app can send via SMTP. Don't. Reasons:
| Problem | Why it matters |
|---|---|
| Cloud provider blocks port 25 | AWS, GCP, Azure all block outbound SMTP by default to prevent abuse |
| Reputation | Your IP needs warm-up history; email providers won't trust a new IP |
| DKIM / SPF / DMARC | Required for deliverability; a transactional service handles this |
| Bounce / complaint handling | Hard / soft bounces have specific protocols |
| Suppression lists | Don't email people who unsubscribed (legal + reputation) |
| Inbox placement | Gmail / Outlook have ML-based spam scoring; expertise required |
A provider abstracts all of this. Even if "I just need to send 10 emails/day," use a provider.
Email Anatomy: What You Configure
For your domain:
| Record | Purpose |
|---|---|
| MX | Where to deliver email for your domain (if you receive email) |
SPF (TXT) | Which servers are authorized to send as your domain |
DKIM (TXT) | Public key for verifying signed messages |
DMARC (TXT) | Policy for when SPF / DKIM fail; reports |
BIMI (TXT) | Brand logo in inbox (Gmail / Yahoo show it) |
| MTA-STS / TLS-RPT | Enforce TLS for inbound; get TLS reports |
See DNS for the format. Your transactional provider gives you the values; you add them to your DNS.
Learning Path
1. Getting Started
Send your first transactional email with Resend; verify domain; React Email templates
2. Patterns
Templates, webhooks, scheduled sends, transactional vs marketing, multi-channel
3. Best Practices
Deliverability, unsubscribe, observability, testing, compliance (CAN-SPAM, GDPR, CASL)
Decoupling: Send via a Queue
Don't send synchronously from a user request. A common architecture:
User signs up
└─► API enqueues "send-welcome-email" job (see Background Jobs)
└─► Worker calls Resend / SendGrid API
└─► Email delivered (or fails; worker retries)Benefits:
- User request returns fast.
- Email outage doesn't block signups.
- Retries are automatic.
- Easy to observe (per-job metrics).
See Background Jobs for the queue layer.
Marketing email is a separate problem with separate tools. Transactional providers can technically send marketing emails too, but the abuse risk to your sender reputation is real — one bad campaign and your transactional deliverability suffers. Most teams use separate tools and separate sending domains for the two purposes.