Burst absorption with SQS
Producers enqueue a small send request and return immediately. Campaign launches, batch jobs and sign-up spikes drain at a controlled rate, and nothing is lost when a worker restarts.
Amazon SES Queued Sending
Your application produces email in bursts, and SES accepts it at a fixed rate per second. We build the queue, the rate-limited consumer and the per-tenant isolation that sit between them, so spikes turn into a short backlog instead of throttling errors and lost messages.
Last updated:
Amazon SES enforces a maximum send rate per second and a 24-hour quota per account in each Region. Applications rarely send at a steady rate. A campaign launch, a nightly digest or a burst of sign-ups calls SES faster than the quota allows, and SES rejects the excess with a ThrottlingException.
Teams usually notice this in one of four ways:
A good fit if you:
Probably not a fit if you:
SendEmail calls with sensible retries are enough.The architecture follows our published SES queued sending reference pattern. A typical engagement runs in four steps.
1. Discovery. We read your current send path, SES account quotas (GetAccount), configuration sets, event destinations and CloudWatch history. We map every producer: application handlers, batch jobs, third-party integrations. Then we agree on the mail streams that need separate treatment, usually transactional, time-critical and marketing.
2. Design. We choose standard or FIFO queues per stream. Standard is the default; FIFO is used when per-tenant ordering or fairness matters, with MessageGroupId set to the tenant. We size consumer concurrency and batch size from your measured per-call latency so the aggregate rate stays at roughly 70–80% of MaxSendRate. We also define the retry rules: which SES errors are retriable and which are permanent.
3. Build. Queues, DLQs, Lambda consumers, configuration sets, event destinations and alarms are delivered as infrastructure as code in your repository. Producers change in one place: they enqueue instead of sending.
4. Prove it. We load-test the burst you expect, check that throttling is absorbed and that nothing lands in the DLQ without a reason, and run the old and new paths side by side for one mail stream before cutting over the rest.
Isolation is where most home-grown queues fall short. We separate tenants at three levels:
| Level | Mechanism | What it protects |
|---|---|---|
| Queue | FIFO MessageGroupId per tenant, or a queue per high-volume tenant | One tenant’s backlog cannot block another’s mail |
| Sending | Configuration set or SES tenant per customer or mail stream | Events, reputation metrics and dedicated IP pools stay separate |
| Suppression | Tenant-scoped suppression where SES tenant management is used | A complaint storm against one tenant does not suppress sends for the rest |
When one tenant’s bounce or complaint rate spikes, an alarm pauses sending for that configuration set only. Everyone else keeps sending.
We add the alarms that answer the questions operations teams actually ask:
ApproximateAgeOfOldestMessage per queueReputation.BounceRate and Reputation.ComplaintRate, alarmed below the levels at which AWS reviews the accountEach alarm comes with a runbook entry: what it means, what to check, and how to redrive or pause.
Outside the scope: email content, list acquisition and campaign strategy. Deliverability work such as authentication, IP warm-up and reputation recovery is covered by our Amazon SES deliverability service. Many clients combine the two.
We built the SES infrastructure behind TargetBay’s 200M+ emails a month. That work includes an SNS/SQS/Lambda event pipeline for bounces and complaints, dedicated IP warm-up and a migration from SendGrid. The TargetBay SES case study has the details.
Producers enqueue a small send request and return immediately. Campaign launches, batch jobs and sign-up spikes drain at a controlled rate, and nothing is lost when a worker restarts.
Lambda event source mapping MaximumConcurrency and batch size are set from the MaxSendRate that the SESv2 GetAccount API reports, with headroom, and re-read on a schedule so quota increases get used.
ThrottlingException is treated as retriable through partial batch responses. Permanent failures such as suppressed addresses are logged and dropped, never retried in a loop.
Messages that keep failing land in a DLQ with enough context to fix the cause, then go back to the source queue with SQS redrive.
Per-tenant configuration sets or SES tenants keep events, reputation metrics and suppression scope separate. FIFO queues with MessageGroupId per tenant stop one large send from starving everyone else.
CloudWatch alarms on queue age, DLQ depth, throttling counts, and SES bounce and complaint rates, with a runbook that pauses only the offending configuration set.
We built the SES infrastructure TargetBay uses to send 200M+ emails a month, including the SNS/SQS/Lambda event pipeline for bounces and complaints. See the published case study.
Queues, consumers, alarms and configuration sets ship as IaC in your repository, with a runbook your team owns after we leave.
We size concurrency from your own per-call latency and quota, then load-test the burst you expect before production traffic depends on it.
Queued sending is one part of our SES work, alongside deliverability and provider migration. Your queue design and your sender reputation get reviewed together.
Implementation guides for this service from our team of AWS experts.
SES tenants (GA Aug 2025) add $0.005/tenant/mo reputation isolation—when ISV platforms need them vs configuration sets alone, with IAM, pricing, and IaC.
SES Global Endpoints (Dec 2024) add $0.03/1k for active-active failover across two regions. MREP decision matrix, replication rules, Tenant Management, and a reproducible readiness benchmark — for architects choosing regional vs multi-region email.
When to keep Customer.io/Loops vs build journeys with EventBridge + Step Functions + SES — stream isolation, RFC 8058, Pro for DIPs, and a first-party journey architecture checklist.
Amazon SES is the most cost-effective email infrastructure for high-volume retail sending — but inbox placement requires dedicated IPs, proper authentication, and automated bounce handling. Here is how to do it right.
SQS, MSK Kafka, and Redis queues are not interchangeable. Each has different cost models, ordering guarantees, and failure modes. This guide covers when to use each, how to autoscale workers on queue depth, and how to build idempotent consumers.
Architecture patterns, decision trees, and glossary terms that map to this engagement.
Reference architecture for queued Amazon SES sending: an SQS buffer, a Lambda consumer whose maximum concurrency is sized to your SES MaxSendRate, retry with backoff on ThrottlingException, DLQ redrive, per-tenant configuration sets, and CloudWatch reputation alarms.
Production-ready multi-tenant architecture for SaaS on AWS. Covers tenant isolation models (pool, silo, bridge), per-tenant cost attribution, noisy-neighbor mitigation, and the trade-offs CTOs actually wrestle with at Series B and beyond.
Production event-driven architecture on AWS — EventBridge custom buses, EventBridge Pipes for the transactional outbox, SQS dead-letter queues, Step Functions for orchestration, and Lambda or Fargate workers. Decouple services without dual-writes.
AWS monitoring and observability service for collecting metrics, logs, traces, and setting alarms across AWS infrastructure and applications.
AWS audit logging service that records every API call and account activity across your AWS infrastructure for security, compliance, and operational investigation.
In-depth guides and best practices from our certified AWS architects.
On August 7, 2026 SES added isBotEvent with two values, Likely and Unlikely, on Open and Click notifications. That is 2 of the 10 published event types, and existing configuration-set destinations pick the field up with no new setting.
Read articleOn 3 July 2025 AWS published a dedicated-IP ramp from 1,050 emails on day 1 to 21 million on day 40. Standard dedicated IPs auto-warm on a fixed 45-day percentage; managed dedicated IPs warm per ISP. Use the fast ramp only in the 40–60% engagement band.
Read articleLegitimate B2B outbound on SES in 2026: sandbox exit, SPF/DKIM/DMARC, RFC 8058, Microsoft May 2025 bars, warm-up, and when Pro DIPs beat shared pools — with a first-party compliance checklist.
Read articleIn-depth comparisons to help you choose the right approach before engaging.
Practical migration guide from SendGrid to AWS SES. Email deliverability setup, features, and infrastructure integration.
Technical migration guide from Mailgun to AWS SES. Email deliverability, SMTP, configuration, and cost comparison.
Tell us your peak send rate, your SES quota and how many tenants share the account. We will tell you whether you need a queue, and what it should look like.
We use cookies and similar technologies to analyze site traffic, personalize content, and provide social media features. By clicking “Accept,” you consent to our use of cookies. You can adjust your preferences at any time.