Guide

How to Improve Amazon SES Deliverability: A Diagnostic Guide

Learn how to diagnose and improve Amazon SES deliverability issues. Step-by-step troubleshooting for authentication, high bounce rates, and spam filters.

Kash Sajadi

Kash Sajadi


Amazon SES is an exceptional delivery layer. It is cost-effective, reliable, and keeps you in control of your own infrastructure. But when emails start landing in the spam folder, or when your bounce rate triggers an AWS warning, you quickly realize that SES does not act as a fully featured email platform out of the box. It sends the mail, but it does not tell you why it failed or how to fix it.

If you are seeing a decline in your deliverability, or if you are dealing with an active Amazon SES account review, this guide is designed for you. This is the troubleshooting runbook you wish you had when things started misbehaving.

How to Tell If You Actually Have a Deliverability Problem

When diagnosing how email sent from your application behaves, you must first distinguish between delivery rate and inbox placement.

  • Delivery Rate: This is the metric AWS reports in your console. It simply means the recipient's mail server accepted your connection and took the message. It does not mean the message reached the user.
  • Inbox Placement: This is whether your email ended up in the primary inbox, the promotions tab, or the spam folder. AWS SES cannot track this for you natively.

To identify a real problem, look at your trend lines. A sudden drop in open rates, a rising bounce rate trend, or a climb in complaint rates are your primary signals. You can check your SES Account Health Dashboard, but you should also establish an external baseline using free tools like mail-tester, Google Postmaster Tools, or MXToolbox to verify your domain reputation.

For a deeper dive into the architectural baselines, see our guide on Amazon SES best practices.

Rule Out Authentication Failures First

Before changing your copy or cleaning your list, ensure your cryptographic signatures are aligned. Mailer services will drop your emails immediately if authentication is broken.

Verify that your SPF record, DKIM keys, and DMARC policies are properly configured. The most common SES specific misconfigurations include:

  1. Easy-DKIM Not Enabled: When you change DNS providers or update subdomains, easy-DKIM can inadvertently be disabled or left unverified in the AWS Console.
  2. SPF Records Missing SES: Your domain's TXT record for SPF must explicitly include amazonses.com. If you have multiple SPF records, merge them; having more than one SPF record on a single domain is an automatic validation failure.
  3. DMARC Alignment Broken: If you send from mail.yourdomain.com but your SPF record only specifies yourdomain.com (or your Mail From domain is still set to the default amazonses.com), your DMARC alignment is broken.

Use a free tool to inspect a raw header from an email you sent. Look for Authentication-Results to ensure SPF, DKIM, and DMARC all show a passing status.

Bounce Rate Is Rising - What to Do

AWS enforces a strict 10% hard bounce limit, but you should aim to keep yours below 2%. If you exceed 5%, you will likely receive an SES account warning.

First, understand the difference between hard and soft bounces. A hard bounce is a permanent failure, such as a typo email address or a non-existent domain. A soft bounce is a temporary issue, like a full mailbox. AWS penalizes you heavily for repeated hard bounces.

To remediate a rising bounce rate:

  1. Extract your bounce logs: Pull your bounce data using CloudWatch or your SNS event destination.
  2. Understand the limitations of SES: AWS has an account-level suppression list, but it has significant gaps. For more details on what AWS does not handle for you, read about AWS SES suppression list limitations.
  3. Run a targeted list cleaning: Remove invalid domains, exclude addresses that have bounced even once, and systematically clean up stale segments. Refer to our operational breakdown on how to fix AWS SES bounce and complaint rates.

Once you clean your list, it typically takes 24 to 48 hours for your SES bounce metrics to reflect the recovery as your new sending patterns establish.

Complaint Rate Is Rising - What to Do

While a high bounce rate is bad, a high complaint rate is an emergency. AWS expects your complaint rate to remain under 0.1% (one complaint per 1,000 sent emails). Anything over 0.5% will likely result in a sending pause.

Because of privacy policies, inbox providers do not show you which specific user clicked "Report Spam." You have to infer the root cause through trends.

  • Set up Google Postmaster Tools immediately. It is the only way to see Gmail-specific spam complaint rates.
  • Ensure your unsubscribe footer is highly visible. If users cannot find a way to unsubscribe easily, they will click the spam button instead. Your unsubscribe process must be a simple, one-click experience.
  • Tighten your sending frequency. If your marketing broadcasts are too frequent, segment your users and reduce the volume.

Emails Are Landing in Spam - Diagnosing Inbox Placement

If your authentication is green and your bounce rates are low, but your emails are still missing the inbox, you have an inbox placement issue.

This is usually caused by domain reputation, IP reputation, or content indicators. If you use a shared IP pool on SES, your IP reputation can occasionally be damaged by other senders, though AWS manages this aggressively. In most cases, the culprit is your domain reputation or your email body content.

Avoid using complex HTML templates that resemble generic mailer services, clean up broken redirect links, and ensure you do not have a high text-to-image ratio. You can test your templates by parsing them as a Multipurpose Internet Mail Extension (MIME) payload through testing tools to see how spam filters rate your structure.

You Got an SES Account Review or Sending Pause - Now What

If you receive an official AWS notification stating your account is under review or your sending is paused, do not panic, and do not submit an immediate appeal without a plan. Appealing before you fix the root issue will result in a rapid rejection.

  1. Identify the trigger: Is it bounces, complaints, or a sudden spike in volume? Your AWS console health page will tell you.
  2. Apply the fix: Implement strict list cleaning, fix your authentication, or pause the specific campaign that caused the spike.
  3. Write a technical appeal: AWS support teams want to see a systematic remediation plan. Do not write a generic apology. Explain exactly how you identified the issue, the technical steps you took to mitigate it (e.g., configuring suppression lists or setting up automated filters), and how you will monitor it going forward.

Proactive Monitoring So This Doesn't Happen Again

To prevent deliverability issues from impacting your production application, you need automated alerting. If you rely on checking the AWS Console manually, you will only find out about issues after your users complain or after AWS pauses your account.

Building your own pipeline requires setting up SNS event destinations, routing them to Lambda or EventBridge, and writing scripts to send alerts to Slack or PagerDuty. For a full blueprint on setting this up yourself, review our guide on email alerting for AWS SES.

Alternatively, you can use SendOps. SendOps connects to your existing AWS account using secure, scoped CloudFormation access to give you a complete email marketing and operations platform. It adds dynamic segments, automations, and deliverability observability on top of your existing SES infrastructure without requiring you to build or maintain complex monitoring pipelines yourself.