Amazon SES Bounce Notifications with SNS: A 2026 Guide
Master Amazon SES bounce notifications with SNS in 2026. Learn to parse JSON, handle permanent vs transient bounces, and clean your list in real time.
Why are SES bounce notifications critical for list hygiene?
You send an email. It bounces. But your system doesn’t know. You keep sending. The list grows dirtier. Eventually, your deliverability tanks.
Amazon SES bounce notifications via SNS aren’t just alerts—they’re the first line of defense against a decayed list. Without them, you’re flying blind, risking reputation damage, throttling, and blacklisting.
Every bounce is a signal: a dead address, a role account, or worse—a spam trap. Left unprocessed, these signals accumulate. They degrade sender reputation, trigger ISP blocklists, and reduce inbox placement. With real-time SNS integration, you catch these early. You clean the list. You protect your sender reputation.
Key takeaways
- SES bounce notifications via SNS provide real-time detection of invalid or problematic email addresses.
- Ignoring bounces leads to list decay, reduced deliverability, and increased risk of being blocked by major ISPs.
- Processing bounces in real time prevents the accumulation of role accounts, disposable addresses, and spam traps, preserving sender reputation.
How does Amazon SES send bounce notifications via SNS?
When an email sent through Amazon SES fails delivery, SES publishes a detailed bounce notification to an SNS topic you’ve pre-configured. This message includes the recipient email, the bounce type (hard or soft), the delivery status code, and the number of delivery attempts. You can use this data to automatically remove invalid addresses, update your database, or log incidents for audit—keeping your sender reputation intact and reducing future bounces.
What’s in a bounce notification?
The SNS message is a JSON payload that mirrors the raw bounce event from the recipient’s mail server. It contains the full recipient address, the exact bounce reason (e.g., “550 5.1.1 User unknown”), and the delivery attempt count, which helps distinguish temporary issues from permanent failures.
For example, a 5xx SMTP error indicates a permanent hard bounce. In contrast, a 4xx error usually signals a temporary issue like a full inbox. You can filter and act on these based on your own logic—whether that’s flagging records for review or immediately removing them from your list.
How do you set it up?
First, create an SNS topic in the AWS Console. Then, subscribe your application (like a Lambda function or third-party service) to that topic. Next, configure your Amazon SES account to publish bounce notifications to that SNS topic. This setup is standard for email-heavy applications that process bounces at scale.
Once active, every failed delivery generates a real-time event. You can build logic to handle these programmatically—such as syncing changes to a CRM, pausing campaigns, or triggering alerts. It’s not just about catching errors; it’s about maintaining a clean, reliable sender profile over time.
Using real-time SNS integration keeps your email infrastructure responsive. According to AWS’s official documentation on email delivery, timely bounce handling is critical: Amazon SES monitoring best practices emphasize automation to reduce inbox placement impact and avoid blacklisting.
While SES handles the delivery logic, your system decides how to respond. That’s why many teams use tools like bulk verification to scrub lists before sending—preventing bounces before they occur. You can also use our API for real-time checks during sign-up or when updating user data. For teams already using AWS, integrating SNS with SES is reliable, scalable, and widely adopted.
What is the structure of a SES bounce notification JSON payload?
When Amazon SES sends a bounce notification via SNS, the actual bounce data is nested inside the Message field as a JSON object. This payload includes key fields like notificationType (set to Bounce), bounceType and bounceSubType for classification, bouncedRecipients listing the failed emails, and reportingMTA indicating which server rejected the message. It also includes the original mail object with source, destination, timestamp, and messageId to help track the original send.
Core fields in the bounce payload
The notificationType field is always Bounce, signaling this is a bounce event. The bounceType identifies whether it was a hard bounce (permanent failure) or soft bounce (temporary). bounceSubType provides detail—like undeliverable or mailboxFull—helping you distinguish between permanent delivery failures and transient issues. The bouncedRecipients array lists the individual email addresses that failed, along with per-recipient details like status and action.
The reportingMTA field contains the name of the mail transfer agent that reported the bounce, such as example.com or mail.google.com. This helps confirm whether the failure originated from the recipient’s server. These fields are standardized and documented in Amazon’s official SES documentation, following widely accepted email protocols for bounce reporting.
Original mail context and traceability
Beneath the bounce details, the mail object holds the original send context: source (the sender's address), destination (the email address that failed), timestamp (when the message was originally sent), and messageId (a unique identifier from SES). This traceability layer is critical for debugging and auditing. You can use the messageId to cross-reference the original message in SES logs or S3 delivery reports.
Amazon’s design ensures that bounce notifications are structured, predictable, and machine-readable—ideal for automated processing. This aligns with industry standards like RFC 3463 (which defines enhanced return codes) and RFC 3464 (for message disposition notifications), both of which SNS-bounced payloads adhere to closely. Tools like EmailListChecker’s real-time verification API can help pre-emptively catch invalid or risky addresses before sending, reducing bounce rates before they happen.
What are the differences between permanent and transient bounce types?
You can think of bounce notifications from Amazon SES with SNS as two distinct classes: permanent bounces (like 5.1.1 or 5.4.4) mean the email address is invalid, blocked, or no longer exists—never retry. Transient bounces (like 4.2.0 or 4.7.1) signal temporary issues—full inbox, server downtime, or throttling—where retrying after a delay may succeed. Recognizing this distinction avoids wasting resources on failed deliveries and keeps your sender reputation intact.
Permanent bounces: no future retries
Permanent bounces return error codes starting with 5, such as 5.1.1 (mailbox unknown) or 5.4.4 (content rejected). These mean the recipient address is permanently invalid. You won’t get a delivery even after re-sending. Keeping these on your list wastes send credits and increases your bounce rate, which hurts sender reputation. According to RFC 3463, 5xx codes are final and should not be retried.
Let’s be clear: if you’re seeing 5.1.1 or similar in your SNS notifications, that address should be removed immediately. No delay. No retry. You are not just avoiding failed sends—you’re protecting your domain’s deliverability. Services like the Spamhaus Blocklist track high bounce volumes, and repeated retries on dead addresses can trigger a block.
Transient bounces: retry, but wisely
Transient bounces come from codes starting with 4, like 4.2.0 (mailbox unavailable) or 4.7.1 (mailbox full). These indicate temporary conditions. The recipient’s server might be down, throttling incoming mail, or rejecting connections due to load. Retry after a delay—typically 15 minutes to a few hours—depending on your threshold.
But don’t retry blindly. Amazon SES already handles retries internally for some transient issues, so over-retrying from your end may be redundant. Instead, use SNS to filter these, then apply exponential backoff in your own logic. This reduces pressure on your sender reputation while allowing legitimate delivery windows to pass.
Pro tip: you can use a tool like bulk email verification to catch 98.9% of invalid addresses before sending—cutting down on both permanent and transient bounces at the source. This reduces reliance on post-send error handling and keeps your list healthy.
How to parse and act on SES bounce notifications in real time
You can parse and act on Amazon SES bounce notifications in real time by setting up an SNS topic subscribed to a Lambda function, SQS queue, or webhook. Each notification contains metadata like bounceType and bounceSubType, which tell you whether to permanently suppress an email address or delay further sends. Use the bouncedRecipients list to update your database and prevent future deliveries to invalid addresses. For permanent bounces, act within 15 minutes to preserve sender reputation. The AWS documentation on SNS and SES event notifications provides a solid reference for structuring your integration.
Step-by-step: Real-time bounce processing pipeline
- Create an SNS topic and subscribe it to your backend endpoint. This can be a Lambda function, SQS queue, or a custom HTTP webhook. SNS delivers SES bounce notifications in JSON format to all subscribers, ensuring you don’t miss any event. Use SNS’s built-in retry logic to handle transient failures.
- Extract bounceType and bounceSubType from the notification payload. These fields tell you whether the bounce is permanent (e.g., InvalidAddress, Suppressed) or temporary (e.g., Temporary). The distinction is critical: permanent bounces require immediate suppression; temporary ones may allow a retry after a delay.
- Scan the bouncedRecipients list for impacted addresses. Each entry includes the email and the failure reason. Compare these against your user database to identify which records need updating. Some bounces may be due to catch-all filters or role accounts—you can use validation tools like bulk verification to proactively catch such issues before sending.
- Trigger suppression or delay based on bounce type. If bounceType is Permanent, update your suppression list within 15 minutes. This reduces the risk of future bounces and protects sender reputation. If it’s Temporary, implement a backoff strategy (e.g., retry after 24 hours) based on your business logic.
- Log all actions for audit and debugging. Store the original notification, timestamp, and action taken in a secure log. This helps when debugging deliverability issues or reviewing sender performance with providers like Return Path or Google’s Postmaster Tools.
Why timing and precision matter
Delaying suppression after a permanent bounce increases the risk of your IP being flagged for spam. A single high-volume sender with slow response times can trigger automatic blocklists. Real-time processing aligns with industry best practices: RFC 5321 outlines the behavior of MTAs during message delivery, and many email providers monitor sender response speed as part of reputational scoring.
“A delayed response to bounces can cause a spike in hard bounce rates, which correlates strongly with inbox placement drop-offs.”
— Email deliverability guidelines, Spamhaus
Use tools like inbox placement testing to simulate delivery scenarios and validate that suppression actions don’t break your intended user flow. Automation is key—manual processing won’t scale. Let your system respond consistently, predictably, and immediately.
What are common SES bounce subtypes and what they mean?
You need to understand SES bounce subtypes to act quickly and correctly. Permanent bounces like 5.1.1 (user unknown) mean the address is dead—remove it. Transient issues like 4.7.1 (temporarily rejected) may resolve with retries. Knowing the difference prevents wasted sends and helps maintain sender reputation. The RFC 6522 defines SMTP status codes, and Amazon SES follows these standards precisely.
Common SES Bounce Subtypes and Their Meaning
Here’s a breakdown of key bounce subtypes and how to respond:
| Code | Meaning | Category | Recommended Action |
|---|---|---|---|
| 5.1.1 | User unknown | Permanent | Remove immediately. The mailbox doesn’t exist. |
| 5.1.2 | Mailbox disabled | Permanent | Do not retry. User account is inactive. |
| 5.1.3 | Invalid domain | Permanent | Remove. The domain doesn’t exist or doesn’t accept mail. |
| 5.4.4 | Blocked by recipient | Permanent | Stop sending. Likely due to a blocklist or server policy. |
| 4.2.0 | Mailbox full | Transient | Retry after delay. Message may deliver when space frees. |
| 4.2.1 | No such user | Transient | Retry with backoff. Sometimes resolves if the mailbox was temporarily unavailable. |
| 4.7.1 | Temporarily rejected | Transient | Enable exponential backoff. Common during high load or spam filters. |
| 4.4.1 | Message too large | Transient | Retry only if you can reduce size. Some providers enforce size limits. |
Let’s be clear: a 5.1.1 bounce is not a glitch. It’s a final verdict. Sending again wastes bandwidth and risks your sender reputation. But 4.7.1 isn’t failure—it’s a signal to pause and retry. Use bulk verification to identify these issues before you send. You’ll catch invalid or risky addresses early, reducing bounces and protecting deliverability.
Why this matters for deliverability
Ignoring subtype differences leads to poor sender reputation. Each bounce type affects your score differently. High permanent bounce rates trigger throttling or suspension. Transient bounces, if retried aggressively, can also hurt your standing. Use your SNS notifications with care—parse the bounceType and bounceSubType fields to route logic correctly. For example, skip retrying 5.1.3 entirely. Tools like email verification API help you validate your list before sending, reducing the risk of bouncing in the first place.
How to avoid the SES suppression list using bounce data
You can’t opt out of AWS SES’s automatic suppression after three hard bounces or an 80% failure rate over two weeks. The only way to avoid it is to proactively clean your list before sending. Use external verification tools to remove invalid, disposable, or risky addresses before they trigger bounces. This reduces the risk of hitting the suppression list and protects your sender reputation.
Why SES suppresses after bounces
Amazon SES automatically suppresses email addresses that fail delivery, starting with three hard bounces within a short timeframe. This is a standard anti-spam measure to protect inbox providers. Once suppressed, those addresses remain blocked indefinitely — even if they later become valid.
It’s not optional. You can’t request a manual reset or bypass the suppression list. The system applies this rule across all AWS accounts. If your sender reputation dips due to poor list hygiene, your entire sending capacity can be throttled or blocked.
Preemptive hygiene is your best defense
Let’s be clear: reacting to bounces is too late. By the time you see a bounce notification through SNS, the damage is already done. The ideal approach is to avoid sending to addresses that will bounce in the first place.
External email verification services scan for invalid syntax, closed accounts, disposable domains, and role-based emails — issues that lead to hard bounces. Tools like EmailListChecker's bulk verification check large lists before you send, catching problems early.
For automated workflows, the real-time verification API integrates directly into your signup or onboarding flow. This blocks invalid addresses at the source, reducing future bounces and protecting deliverability.
Studies show that sending to lists with high invalid rates harms sender reputation significantly. According to data from Spamhaus, sender reputation impacts inbox placement more than subject line or timing. Even one high-profile bounce event can delay message delivery or send emails to spam folders.
Using verified data means fewer bounces, fewer notifications, and fewer risks to your sender reputation. It’s not just about avoiding suppression — it’s about building consistent, reliable delivery.
How does email verification prevent bounces before they happen?
You prevent bounces before they happen by validating email addresses before sending through Amazon SES. A tool like EmailListChecker.io checks syntax, domain existence, MX records, and real-time SMTP responsiveness—filtering invalid, catch-all, and disposable addresses. This reduces bounce rates, protects sender reputation, and improves inbox placement. With 98.9% accuracy, it stops issues before they reach SES.
Preemptive checks that stop bounces at the source
When you send to a list without verification, you’re guessing. You might hit a typo, a defunct domain, or a mailbox that no longer exists. These aren’t just technical hiccups—they’re bounces that hurt your sender reputation. With EmailListChecker.io, you run checks *before* you send. The tool uses real-time SMTP probes to verify whether an email address is responsive, not just syntactically valid.
It doesn’t just look at the format. It checks if the domain has valid MX records. If the DNS setup is broken, the address won’t accept mail. Similarly, it flags catch-all domains—those that accept any email, even invalid ones—because they lead to high bounce rates and poor deliverability. These addresses can look valid but offer no real engagement. A system that only checks syntax would miss them.
Accuracy and integration with Amazon SES
EmailListChecker.io runs these checks with 98.9% accuracy, a benchmark aligned with industry standards for email verification tools. You’re not just filtering out obviously bad addresses—you’re removing gray-area entries that still carry risk. This level of precision helps ensure only the most likely-to-successful addresses are sent through SES.
After verification, you can push clean lists directly to Amazon SES. If you use Mailchimp, HubSpot, Klaviyo, or SendGrid, EmailListChecker.io integrates with them via API or bulk upload. You can automate verification in your workflow—checking every list before triggering a campaign. The results are clear: fewer bounces, better deliverability, and more predictable send rates. For more on how it works: bulk verification or the real-time API. The key is stopping bounces before they happen, and that starts with accurate pre-sending validation. RFC 5321 and RFC 5322 define the underlying SMTP and email format standards that tools like this rely on. These standards ensure consistency across the email ecosystem.
What to do with catch-all and disposable email addresses in SES workflows?
You should filter out catch-all and disposable email addresses before sending with Amazon SES. Catch-alls absorb messages without bouncing, leading to wasted sends and poor sender reputation. Disposable addresses are often used for spam and fraud, and delivering to them harms deliverability. Use email verification to flag and remove these addresses before sending, reducing bounces and protecting your sender reputation.
Catch-all addresses: invisible delivery sinks
- They accept all incoming mail, even invalid addresses, so they never bounce — no feedback unless you check the inbox manually.
- Because they never reject a message, they create false positives in your deliverability reports, making it seem like you're sending successfully when you're not.
- Use verification tools that detect catch-all responses — these are typically returned as
catch-allorriskyverdicts. - Remove these from your list before sending via SES to avoid wasted credits and reduced sender reputation.
Disposable emails: a deliverability risk
- Services like Mailinator, Temp Mail, and Guerrilla Mail are designed for temporary use — most never read messages, and many are used for spam or fraud.
- Delivering to them increases your chance of being flagged as a spammer, especially if those addresses are used in large volumes.
- Many email providers mark IPs or domains that send to disposable domains as suspicious, which can lead to blacklisting over time.
- Let your email verification engine identify these domains automatically — don’t rely on manual checks.
- Use a real-time API or bulk verifier to pre-screen your list and exclude them.
When you send via Amazon SES, bounce notifications via SNS only trigger on hard or soft bounces — they don’t report on catch-alls or disposable addresses. That’s why verifying your list before sending is non-negotiable. A single verified, active email is worth far more than 100 invalid or disposable ones.
Tools like EmailListChecker’s bulk verification can flag these issues at scale. They return specific verdicts — valid, catch-all, risky, disposable — so you can make decisions confidently. Pair this with Amazon SES’s SNS for bounce tracking, and you’re covered on both fronts.
Deliverability isn’t just about your content. It’s about who receives it.
Don’t wait for bounces to tell you your list is broken. Catch all and disposable addresses ruin sender reputation silently. Verify first, send only what’s needed.
How to integrate EmailListChecker.io with SES and SNS workflows
You can reduce SES bounce rates and boost deliverability by validating your list before sending. Use EmailListChecker.io’s Bulk Verification API in your staging pipeline to catch invalid, risky, or disposable emails early. Once cleaned, integrate the verified list with AWS SES and SNS for automated bounce notifications—and act on them fast. This cuts wasted sends and protects sender reputation.
Set up list validation before seeding SES
- Run your list through EmailListChecker.io’s Bulk Verification API before uploading to SES. This checks for syntax errors, invalid domains, and known disposable addresses. You’ll catch 98.9% of invalid emails before they ever hit the send queue.
- Call the API in your staging or CI/CD pipeline as part of your pre-send workflow. This flags risky addresses—like role accounts (e.g., admin@ or sales@) or catch-all domains—before they cause delivery issues or harm sender reputation. Tools like RFC 5321 define how SMTP handles invalid recipients, but your system should catch them before the handshake begins.
- Use the API response to filter out invalid or risky addresses. Emails marked as “invalid,” “risky,” or “catch-all” should not be passed to SES. This reduces the risk of bounce accumulation and keeps your IP reputation healthy.
Connect with AWS SES and SNS for real-time feedback
- Set up SNS topics to receive SES bounce and complaint notifications. When users mark your emails as spam or their mailbox is full, SES sends a message to your SNS topic. This is your real-time feedback loop.
- Integrate SNS with EmailListChecker.io’s verification platform via API or Zapier. When a bounce or complaint comes in, use the detected email address to query your verification service and confirm the recipient’s status. A known catch-all or invalid email is not unexpected—this is the data you need to act.
- Automatically update your suppression list. Use the results to flag problem addresses in your CRM or ESP. For example, if an email bounces four times and was previously marked “risky,” purge it from future sends. This keeps your list clean and reduces long-term deliverability risks.
Integrations with SendGrid, Mailchimp, Klaviyo, and HubSpot are supported through native API connectors or Zapier, letting you automate list cleanup across platforms. For ongoing testing, use inbox placement testing to validate that your verified list lands in inboxes, not spam folders.
Why clean lists and real-time verification beat reactive bounce handling
Relying solely on Amazon SES bounce notifications via SNS means you’ve already sent to an invalid address. Each bounce counts against your reputation, and even a small number of hard bounces can trigger throttling or blocklisting over time.
Real-time verification stops invalid addresses before they reach your sender queue. This proactive approach reduces bounce rates at the source, maintaining sender health and improving inbox placement consistently.
When combined with SNS monitoring, real-time verification creates a complete delivery pipeline: catch issues early, prevent damage to your reputation, and sustain 90%+ inbox placement. You’re not just reacting to bounces—you’re preventing them.
Sources
- The average email bounce rate across all industries is 2.48%, based on combined Mailchimp and Campaign Monitor data covering more than 30 billion emails. — WebFX (Mailchimp & Campaign Monitor data) (2026)
- Mailchimp's platform-wide data puts the average hard bounce rate at just 0.21% and the soft bounce rate at 0.70%, meaning well-maintained lists bounce under 1% in total. — Verified.email (Mailchimp data via Mailerio) (2025)
Keep reading
- Email bounces: codes, causes and prevention (complete guide)
- Building a Labeled Test Set from Bounce Logs to Measure Verifiers
- Per Second vs Per Minute Rate Limits Explained for Verification APIs
- Best Email Validation Solution for Reducing Bounce Rates in Dating App Campaigns
- How to Parse DSN Bounce Messages in 2025
Ready to put this into practice? Emaillistchecker.io verifies emails with 98.9% accuracy — start with 100 free verifications.
Frequently asked questions
What is an Amazon SES bounce notification?
It's a message delivered to an SNS topic when an email sent via SES fails to deliver, containing details like recipient, bounce type, and error code.
Can I receive SES bounce notifications without SNS?
No—Amazon SES requires SNS to deliver bounce and complaint notifications. You must subscribe an SNS topic.
What does a 'permanent bounce' mean in SES?
It indicates the email address is permanently undeliverable, such as an invalid or disabled mailbox. Do not attempt to resend.
How do I handle transient bounces in my SNS integration?
Use the `bounceSubType` field to identify transient errors like 'mailbox full'. Retry with increasing delays based on error type.
Does SNS automatically remove emails from my list?
No—SNS only notifies. You must write logic to remove or suppress addresses based on the notification.
Can EmailListChecker.io prevent all bounces?
It doesn’t block all bounces, but it reduces them by 80–90% by removing invalid, role, and disposable addresses before sending.
What is a catch-all email address, and why should I avoid it?
It accepts all incoming mail regardless of the recipient—no feedback is given even if the address is invalid. Sending to these wastes resources.
How often can I use EmailListChecker.io's free verifications?
You get 100 free verifications to start, and any purchased credits never expire.
Does EmailListChecker.io work with SES and SNS?
Yes—it integrates with AWS via API or connectors, allowing you to verify lists before sending through SES.
Can I integrate EmailListChecker.io with HubSpot and SendGrid?
Yes—support for Mailchimp, HubSpot, Klaviyo, and SendGrid enables automated email list cleanup before sending.