Estimate email volume per month (transactional + marketing)

SES budgets depend on one input: emails per month. The trick is that “normal week” and “incident week” behave very differently. This guide gives you a simple model for baseline volume plus a peak/incident factor so you don’t get surprised.

Step 1: split volume by intent (because variability differs)

  • Transactional: receipts, signups, password resets, security notifications
  • Product notifications: workflow alerts, digests, reminders
  • Marketing: campaigns, newsletters, onboarding sequences

Method A: transactional volume from user actions (baseline)

A defendable baseline is built from events you already track.

  • Orders: orders/month × emails per order
  • Signups: signups/month × emails per signup flow
  • Password resets: resets/month × emails per reset
  • Notifications: notification events/month × recipients per event

If you don’t have events broken out yet, start with MAU × avg emails per user and refine later.

Method B: marketing volume from campaign calendar

  • Campaign sends: recipients per campaign × campaigns/month
  • Variants: A/B tests and segment splits multiply sends
  • Test sends: internal tests and previews (small, but include if frequent)
  • Resends: resend-to-non-openers can add a predictable extra %

Step 2: add the “retry/duplicate” factor (the common spike driver)

Real systems resend. Your goal is to model it explicitly.

  • Retry factor: timeouts and transient failures cause resend attempts
  • Duplicate factor: bugs or race conditions send multiple emails for one event
  • Alert storm factor: incidents trigger high-frequency notifications

Practical approach: keep two scenarios: baseline (e.g., +3–10%) and incident month (e.g., +30–200%) depending on your product.

Step 3: sanity checks (catch bad assumptions fast)

  • Does the estimate match your historical “emails/day” shape (weekday vs weekend)?
  • Is marketing bursty (campaign days) vs transactional steady?
  • Are you double-counting recipients (multiple recipients per event)?
  • Do you have a “silent resend” job that retries failed deliveries in bulk?

Worked example (structure)

  • Transactional: 200k orders/month × 1 email/order = 200k
  • Password resets: 30k/month × 1 = 30k
  • Notifications: 100k events/month × 2 recipients = 200k
  • Marketing: 2 campaigns/month × 500k recipients = 1,000k
  • Baseline subtotal = 1.43M emails/month
  • Add +5% retry/duplicate baseline → 1.50M
  • Incident month scenario: +50% alerts/retries → 2.15M

Turn volume into cost

Use AWS SES cost calculator with your baseline and incident volume.

How to validate with real data

  • Pick a representative week of send logs/metrics and compute average daily sends.
  • Validate separately for transactional vs marketing (their curves differ).
  • Check resend/duplicate rate by message idempotency keys or provider event logs.

Related guides

Sources


Related guides


Related calculators


FAQ

What's the fastest model for transactional email volume?
Emails/month ≈ monthly active users × average transactional emails per user per month (receipts, password resets, alerts). Then add a retry/duplicate factor if your system can resend.
How should I model marketing campaigns?
Campaign emails/month ≈ recipients per campaign × campaigns per month. Include test sends, segment variants, and resend logic when they are significant.
Why do volumes spike?
Incidents and retry loops. Alert storms and duplicate notification logic can multiply sends quickly and can dominate the monthly total.
How do I validate the estimate?
Compare the estimate against a representative week of send logs/metrics and scale to monthly, separately for transactional and marketing.

Last updated: 2026-01-27