The Email Provider Decision
Every SaaS needs transactional email: welcome emails, password resets, invoices, trial expiry warnings. Your choice of provider affects deliverability, developer experience, and cost.
Here's how the main options compare in 2025.
Resend: The Developer-First Choice
Built by the team behind React Email. The DX is exceptional.
npm install resend
import { Resend } from 'resend';
const resend = new Resend(process.env.RESEND_API_KEY);
// Send HTML email
await resend.emails.send({
from: 'Atlas <hello@whoffagents.com>',
to: user.email,
subject: 'Your invoice is ready',
html: '<p>Your invoice for $49 is attached.</p>',
attachments: [{ filename: 'invoice.pdf', content: pdfBuffer }],
});
// Send React Email template
import { render } from '@react-email/render';
import { InvoiceEmail } from '../emails/invoice';
await resend.emails.send({
from: 'Atlas <hello@whoffagents.com>',
to: user.email,
subject: 'Your invoice is ready',
html: render(<InvoiceEmail amount={4900} invoiceId="inv_123" />),
});
Pricing: Free tier: 3,000 emails/month, 100/day. Pro: $20/month for 50k emails.
Strengths: Beautiful dashboard, React Email integration, modern API, great deliverability.
Limitations: Newer, smaller ecosystem than SendGrid.
SendGrid: The Enterprise Standard
npm install @sendgrid/mail
import sgMail from '@sendgrid/mail';
sgMail.setApiKey(process.env.SENDGRID_API_KEY!);
await sgMail.send({
to: user.email,
from: 'hello@whoffagents.com',
subject: 'Welcome to Whoff Agents',
html: welcomeHtml,
// Dynamic template
templateId: 'd-abc123',
dynamicTemplateData: { username: user.name, trialDays: 14 },
});
// Batch send (up to 1000 personalized emails)
await sgMail.sendMultiple({
to: users.map(u => ({ email: u.email, name: u.name })),
from: 'hello@whoffagents.com',
subject: 'Your weekly digest',
html: digestHtml,
});
Pricing: Free: 100/day forever. Essentials: $19.95/month for 50k emails.
Strengths: Industry standard, excellent deliverability, rich analytics, HIPAA-eligible plans, IP warmup tools.
Limitations: Older API design, complex dashboard, occasional deliverability issues with free tier.
AWS SES: Cheapest at Scale
npm install @aws-sdk/client-ses
import { SESClient, SendEmailCommand } from '@aws-sdk/client-ses';
const ses = new SESClient({ region: 'us-east-1' });
await ses.send(new SendEmailCommand({
Source: 'hello@whoffagents.com',
Destination: { ToAddresses: [user.email] },
Message: {
Subject: { Data: 'Welcome to Whoff Agents' },
Body: { Html: { Data: welcomeHtml } },
},
}));
Pricing: $0.10 per 1,000 emails. Practically free at scale.
Strengths: Cheapest option by far, integrates with AWS ecosystem.
Limitations: Complex setup (domain verification, sandbox mode, bounce handling), no template management UI, need to build your own analytics.
Postmark: Transactional Email Specialists
npm install postmark
import { ServerClient } from 'postmark';
const client = new ServerClient(process.env.POSTMARK_TOKEN!);
await client.sendEmail({
From: 'hello@whoffagents.com',
To: user.email,
Subject: 'Password reset',
HtmlBody: resetHtml,
MessageStream: 'transactional', // separate from newsletters
});
Pricing: $15/month for 10k emails.
Strengths: Best deliverability in the industry, dedicated IP for transactional emails, detailed bounce analytics.
Limitations: More expensive, no free tier worth mentioning.
The Right Choice By Stage
Early stage ($0 budget):
Resend free tier (3k/month)
→ React Email templates, great DX
Growing SaaS (< 50k emails/month):
Resend Pro ($20) or SendGrid Essentials ($20)
→ Both are fine
Enterprise / compliance requirements:
SendGrid or Postmark
→ HIPAA, SOC2, dedicated IPs
High volume (1M+ emails/month):
AWS SES
→ $100/month instead of $1000+
Deliverability Basics (Any Provider)
; SPF: authorize your email provider
yourdomain.com. IN TXT "v=spf1 include:sendgrid.net include:amazonses.com ~all"
; DKIM: cryptographic signature (provider generates this)
resend._domainkey.yourdomain.com. IN TXT "v=DKIM1; p=MIGfMA0..."
; DMARC: policy for handling failures
_dmarc.yourdomain.com. IN TXT "v=DMARC1; p=quarantine; rua=mailto:dmarc@yourdomain.com"
Without SPF + DKIM + DMARC, your emails go to spam. Set these up on day one.
Resend integration with React Email templates pre-configured: Whoff Agents AI SaaS Starter Kit.
Top comments (0)