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
Estimate DNS queries per month (Route 53 query volume)
How to estimate DNS query volume for Route 53 cost models: from metrics and logs, and what drives query spikes (TTL, retries, resolver behavior).
Estimate Parameter Store API calls per month (GetParameter volume)
How to estimate SSM Parameter Store API call volume for cost models: measure from billing/logs, derive from runtime patterns, and account for deploy + churn multipliers.
Estimate Secrets Manager API calls per month (GetSecretValue volume)
A practical workflow to estimate Secrets Manager API request volume (especially GetSecretValue): measure and scale when possible, model from runtime churn when not, and validate with CloudTrail so your budget survives peaks.
Estimate API requests per month (RPS, logs, and metrics)
How to estimate monthly API request volume for cost models: from CloudWatch metrics, from access logs, and from RPS charts (with common pitfalls like retries and health checks).
Estimate CloudTrail Events per Month (cost planning)
Methods to estimate CloudTrail event volume: Lake queries, S3 logs, and workload-driven approximations.
Estimate KMS requests per month (where they come from)
A practical workflow to estimate AWS KMS request volume: identify call sources, translate workload volume into KMS API calls, and validate with billing/CloudTrail so you can budget and optimize safely.
Related calculators
Data Egress Cost Calculator
Estimate monthly egress spend from GB transferred and $/GB pricing.
API Response Size Transfer Calculator
Estimate monthly transfer from request volume and average response size.
VPC Data Transfer Cost Calculator
Estimate data transfer spend from GB/month and $/GB assumptions.
Cross-region Transfer Cost Calculator
Estimate monthly cross-region transfer cost from GB transferred and $/GB pricing.
Log Cost Calculator
Estimate total log costs: ingestion, storage, and scan/search.
Log Ingestion Cost Calculator
Estimate monthly log ingestion cost from GB/day or from event rate and $/GB pricing.
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