Bounce rate is the first thing AWS looks at when evaluating SES account health, and it's the metric most directly under your control. Unlike complaint rate — which depends on recipient behavior you can't fully predict — bounce rate reflects the quality of your email list management. Lists with low bounce rates are lists that have been built carefully and maintained consistently. Lists with high bounce rates have stale addresses, were acquired without confirmed opt-in, or are missing basic hygiene processes.
Understanding the types of bounces and what drives each type is the foundation for managing this metric effectively. Not all bounces are created equal, and the remediation strategies differ based on what type of bounce you're seeing.
Hard Bounces vs. Soft Bounces
A hard bounce means permanent delivery failure. The receiving mail server rejected the message with a 5xx SMTP error code indicating the address doesn't exist, the domain doesn't exist, or the receiving server has permanently rejected the sending IP address. Hard bounces are the most damaging type — sending to an address that has hard bounced once is virtually guaranteed to hard bounce again, and continuing to send to known-bad addresses inflates your bounce rate with every send.
A soft bounce means temporary delivery failure. The receiving mail server returned a 4xx SMTP error — the mailbox is full, the server is temporarily unavailable, the message exceeded the server's size limit. SES automatically retries soft bounces for up to 72 hours before giving up. From a reputation standpoint, soft bounces that convert to successful delivery after retry are generally not harmful. Soft bounces that consistently fail for the same address pattern (mailbox always full, server always unavailable) indicate stale addresses that behave similarly to hard bounces in practice.
SES's bounce notifications classify bounces as Permanent (hard) or Transient (soft) in the notification payload. Process permanent bounces with immediate suppression. Process transient bounces with a tolerance policy — if an address generates three consecutive soft bounces over 30 days without any successful delivery, treat it as a hard bounce and suppress it.
Why Bounce Rates Rise
The most common causes of elevated bounce rates, roughly in order of frequency:
List staleness. Email addresses churn over time. People change jobs and lose their work email address. People abandon personal email accounts. Industry estimates suggest 20-30% of email lists go stale each year. A list you built 24 months ago and haven't re-engaged since has meaningfully higher bounce rates than it did when you built it. The fix is re-engagement campaigns and regular list pruning — remove subscribers who haven't opened or clicked in 6-12 months.
List acquisition without confirmed opt-in. When someone submits a form with an email address, that address might be mistyped. A single-opt-in process accepts any syntactically valid email address. A double opt-in process sends a confirmation email and only adds the subscriber when they click the confirmation link — invalid addresses and mistyped addresses are eliminated before entering your list.
Data imports from external sources. Importing contact lists from CRM systems, purchased lists, trade show badge scans, or manual data entry introduces addresses with unknown quality. These lists bounce at much higher rates than organically built opt-in lists.
Missing bounce handling. Some sending integrations don't process SES bounce notifications. If hard-bounced addresses aren't being suppressed, they stay in the sending list and generate bounces on every future send.
Setting Up Bounce Notification Processing
SES delivers bounce notifications through Amazon SNS. Configure a bounce topic in the SES console for your verified sending identity, then subscribe a processing endpoint to that SNS topic. The endpoint receives a JSON payload for each bounce event containing the bounced recipient addresses, bounce type, and bounce subtype.
Parse the notification and immediately add hard-bounced addresses to your suppression list. Most email sending platforms (whether custom or third-party) have a suppression list concept — an address on the suppression list is never sent to, regardless of whether it appears on a sending list. If you're not using a suppression list, implement one. A database table with a bounced_at timestamp per address is sufficient; check this table before adding addresses to any send queue.
SES also maintains an account-level suppression list that automatically blocks sends to addresses that have bounced or complained across your account. Enable this in the SES console under Suppression List settings. This list operates as an automatic backstop, but it doesn't replace managing your own suppression list — addresses on your sending list that should be removed still affect your list health even if SES blocks the actual send.
List Validation and Real-Time Verification
Email verification services check whether an email address is valid before you send to it. Services like ZeroBounce, NeverBounce, and Debounce run validation checks against addresses in bulk: DNS checks verify the domain has valid MX records, SMTP checks verify the mailbox exists without actually sending an email. Running your list through a validation service before each major campaign removes invalid addresses before they generate bounces.
For new subscriber acquisition, consider real-time validation at the point of entry. Validate the email format, check that the domain has valid MX records, and optionally run a mailbox existence check at form submission time. This catches typos and clearly invalid addresses before they enter your list. Real-time checks add some latency to form submission — cache DNS and domain-level results aggressively and use async validation where possible to minimize user-facing impact.
Diagnosing Elevated Bounce Rates
When bounce rate spikes, the diagnostic process starts with segmentation. Pull bounce data broken down by list segment, acquisition source, and send campaign. A bounce rate spike affecting all segments simultaneously points to a sending infrastructure issue. A spike affecting one segment points to list quality in that segment. A spike starting after a specific campaign points to something about that campaign's audience or targeting.
Cross-reference bounce timing with list management events: imports, re-activations of dormant subscribers, launches of new acquisition channels. The root cause is almost always visible in the data once you ask the right questions.
Related Reading
- SES reputation monitoring — monitoring bounce rate alongside other reputation signals
- SES account suspension — what happens when bounce rate triggers enforcement
- SES DKIM and SPF setup — authentication that affects bounce classification and deliverability
- Why AWS accounts get suspended — email sending issues in the broader account risk context
FAQ
Does SES count soft bounces toward my bounce rate?
SES calculates your reputation bounce rate based primarily on hard bounces. Soft bounces that resolve to successful delivery after retry don't typically count against your reputation rate in the same way. However, persistent soft bounces on addresses that never receive mail are treated similarly to hard bounces by AWS's reputation scoring. In practice, keep your permanent bounce rate (hard bounces) below 5% and don't maintain addresses on your lists that consistently soft-bounce.
What bounce rate should I target?
Target a hard bounce rate below 2% for sustained sending health. Most high-quality email programs maintain rates well below 1%. AWS starts taking notice around 5% and enforcement becomes likely above 10%. If you're currently above 2%, focus on list hygiene before launching any high-volume campaigns that would compound the problem.
Can I recover my SES bounce rate quickly?
Yes. Bounce rate is a rolling average calculated over a time window, not a cumulative total. If you clean your list aggressively — removing all addresses that have bounced in the past 90 days plus any that haven't engaged in 6 months — your subsequent sends will have a much lower bounce rate, and the improved rate will pull down your rolling average within a few send cycles. The key is stopping sends to the bouncing addresses immediately and not sending again until the list is clean.
Protect your AWS accounts before it's too late
Vigilare monitors your AWS accounts for suspension risks — billing anomalies, IAM issues, GuardDuty findings, and more — and alerts you before AWS takes action.
Written by Vigilare Engineering
Platform Team