You send a campaign through Amazon SES. The dashboard shows that the messages were delivered. But a few subscribers say they never saw your email.
Both things can be true. Delivered doesn't mean inboxed. SES can tell you that a receiving mail server accepted a message. Gmail, Outlook, or Yahoo still gets to decide whether that message belongs in the inbox or the spam folder.
There's no setting in AWS that guarantees inbox placement. What you can do is make sure your domain is properly authenticated, send to people who actually want your emails, and pay attention when something starts going wrong.
Here's where to start.
Get domain authentication right first
Before worrying about send volume, make sure receiving servers can tell who your emails are coming from. That means setting up DKIM, SPF, and DMARC. The acronyms sound more intimidating than the actual job each one does.
DKIM: Sign your messages
DKIM adds a cryptographic signature to your email. The receiving server uses it to check that the message was signed by the domain in the signature and that the signed content wasn't altered in transit.
With Easy DKIM, SES typically gives you three CNAME records to add to your DNS. Once they're verified, SES signs your outgoing messages. For most senders, this is a fairly straightforward setup.
SPF: Authorize the sending server
SPF checks whether a server is allowed to send mail for the domain used in the technical return address, known as the MAIL FROM domain.
By default, SES uses an Amazon-owned MAIL FROM domain. SPF can pass in that setup, but it won't necessarily align with the domain your subscribers see in the From address.
If you want to use your own MAIL FROM domain, such as mail.example.com, SES requires DNS records along these lines:
mail.example.com MX 10 feedback-smtp.eu-west-1.amazonses.com
mail.example.com TXT "v=spf1 include:amazonses.com ~all"
The example uses the eu-west-1 AWS Region. Replace it with the Region you're sending from.
A custom MAIL FROM domain can give you SPF alignment for DMARC. You don't strictly need it for DMARC to pass if your DKIM signature is already aligned, though.
DMARC: Set a policy and see who's sending as you
DMARC ties the other two checks to the domain in your visible From address. For DMARC to pass, at least one of SPF or DKIM needs to pass and align with that domain.
A reasonable starting record looks like this:
_dmarc.example.com TXT "v=DMARC1; p=none; rua=mailto:dmarc@example.com"
With p=none, you're asking for reports rather than telling receiving servers to quarantine or reject mail that fails DMARC. Make sure the reporting address is monitored, ideally with a tool that can turn the XML reports into something readable.
Once you've checked that all your legitimate sending services authenticate correctly, you can consider moving to p=quarantine or p=reject. Don't rush that change: an overlooked service could suddenly have its legitimate messages rejected.
Gmail and Yahoo also have additional requirements for bulk senders, including authentication and unsubscribe support. Check their current sender guidelines before sending at scale.
Don't go from zero to 40,000 emails overnight
Say your domain has barely sent any marketing email, and you suddenly send a newsletter to 40,000 people. Even if those subscribers opted in, the jump in activity can look suspicious to mailbox providers.
That's why senders warm up a new or previously inactive sending setup: start with a smaller, engaged audience, then increase volume while watching the results.
On SES shared IPs, AWS manages the underlying IP pool. You still need to build trust around your sending domain and your audience. If you're using dedicated IPs, their reputation matters too.
Start with subscribers who have interacted with your emails recently, especially people who've clicked. Opens can be useful context, but privacy features make open data less reliable than it used to be.
For a list of 40,000 subscribers, a possible ramp-up might look like this:
| Day | Example send volume |
|---|---|
| 1 | 1,000 |
| 3 | 2,000 |
| 5 | 4,000 |
| 7 | 8,000 |
| 9 | 15,000 |
| 11 | 25,000 |
| 13 | 40,000 |
This is an illustration, not a schedule to follow blindly. An old list, an irregular sending history, or early warning signs may call for a much slower approach. An established sender might not need to start at 1,000 at all.
And warming up won't fix a bad list. If people don't remember signing up, spreading the sends over two weeks won't make them want the emails.
Bounces: Stop sending to addresses that don't work
A bounce means the message couldn't be delivered. The distinction that matters is whether the failure is permanent or temporary:
- Hard bounce: The address is invalid or otherwise permanently undeliverable. Suppress it from future sends.
- Soft bounce: The mailbox may be full or the receiving server temporarily unavailable. SES may retry, but repeated failures are a reason to stop sending to that address.
SES tracks your account's bounce rate. Its reputation guidance provides some useful reference points:
| Bounce rate | What it means |
|---|---|
| Below 2% | A cautious target |
| 5% or higher | Your account may come under review |
| 10% or higher | Sending may be paused |
These aren't safe operating limits to aim for. AWS can consider your sending history and other signals, so a bounce rate below 5% isn't a free pass.
Old lists, mistyped addresses, and questionable signup sources are common causes. Double opt-in can help catch bad addresses early, but it doesn't replace proper list hygiene.
Spam complaints matter even more
When someone marks your message as spam, they're telling their mailbox provider that the email wasn't welcome, or that they didn't recognize who sent it.
Some providers pass those complaints back to SES. You can process them through notifications such as Amazon SNS and immediately suppress the affected address. Not every provider reports individual complaints, though, so the SES complaint rate is only part of the picture.
| SES complaint rate | What it means |
|---|---|
| Below 0.1% | A cautious target |
| 0.1% or higher | Your account may come under review |
| 0.5% or higher | Sending may be paused |
For Gmail recipients, also check Google Postmaster Tools. Google recommends keeping the user-reported spam rate below 0.1% and avoiding rates of 0.3% or higher. That's a different measurement from the complaint rate shown in SES.
The best way to reduce complaints usually isn't another DNS tweak. It's making sure subscribers know what they're signing up for:
- Tell people what you'll send and how often before they subscribe.
- Use a sender name they'll recognize.
- Make unsubscribing easy, including one-click unsubscribe where applicable.
- Stop repeatedly emailing subscribers who haven't engaged in a long time.
- Never add unsubscribed contacts or people who complained back into your active list.
A carefully targeted re-engagement campaign can make sense. Blasting an old, poorly documented list to see who responds generally doesn't.
What should you actually monitor?
You don't need to spend your mornings staring at AWS dashboards. A few signals, checked together, are much more useful than any single metric:
- Amazon SES: Check the account dashboard for bounce and complaint rates, reputation warnings, and account status.
- Amazon CloudWatch: Set alarms for
Reputation.BounceRateandReputation.ComplaintRateso you hear about problems before they get worse. - Google Postmaster Tools: Look for Gmail-specific reputation and spam signals when there's enough data to show them.
- DMARC reports: Use them to spot services sending on behalf of your domain and see whether their authentication passes.
None of these tools can reliably tell you the exact percentage of messages that landed in the primary inbox across every mailbox provider. Treat deliverability as a collection of signals, not a single score.
Want to send newsletters without managing everything in AWS?
SES handles email delivery infrastructure. It doesn't give you a full newsletter workflow out of the box: campaign editing, subscriber management, and much of the day-to-day monitoring still need another tool or your own code.
Mailomia lets you run campaigns through your own Amazon SES account. It helps with domain setup, handles bounce and complaint exclusions, brings key SES metrics into one dashboard, and offers warm-up plans for gradually increasing send volume.
That makes the operational side easier. It doesn't override Gmail's spam filters or make an unengaged list perform better.
Mailomia is free for up to 5,000 emails per month. Amazon SES sending charges are billed separately by AWS.
Before you hit send
Check that DKIM and DMARC are in place, and that SPF is configured correctly if you're using a custom MAIL FROM domain. Make sure unsubscribes, hard bounces, and spam complaints are excluded from future campaigns. If your sending domain is new or has been inactive, start with your most engaged subscribers and expand only when the signals look healthy.
Good authentication prevents avoidable technical problems. Good sending habits are what build trust over time. You need both.


