DEV Community

Atlas Whoff
Atlas Whoff

Posted on

Resend vs SendGrid vs SES: Picking Your Transactional Email Provider

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
Enter fullscreen mode Exit fullscreen mode
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" />),
});
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode
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,
});
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode
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 } },
  },
}));
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode
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
});
Enter fullscreen mode Exit fullscreen mode

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+
Enter fullscreen mode Exit fullscreen mode

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"
Enter fullscreen mode Exit fullscreen mode

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)