← Blog

How to set up Amazon SES for email marketing (2026 guide)

Amazon SES is the cheapest way to send email at scale. As of 2026, sending through the SES API costs about $0.10 per 1,000 emails — roughly $1 per 10,000. Most email marketing platforms charge 50 to 100 times that, because they bundle delivery with software and price the whole thing per contact.

The catch is that SES is infrastructure, not a product. It will send email for you, reliably and cheaply, but it won't help you write a newsletter, manage subscribers, or track who opened what. This guide covers what SES actually is, how to set it up for marketing email, and what you'll need on top of it.

What is Amazon SES?

Amazon Simple Email Service (SES) is AWS's email-sending service. It's the same class of infrastructure that powers delivery for many of the email platforms you've heard of — several ESPs run on SES or similar services under the hood, add software on top, and resell the combination.

SES gives you:

  • An API and SMTP endpoint for sending email
  • Domain authentication (DKIM signing, SPF coverage) so inbox providers trust your mail
  • Bounce and complaint feedback via SNS notifications
  • Usage-based pricing — you pay for what you send, nothing else

SES does not give you:

  • A campaign editor or templates
  • Contact and list management
  • Unsubscribe handling
  • Open and click tracking dashboards
  • Automation or segmentation

That's the honest framing: SES is an engine. You need a car built around it. More on that at the end.

How much does Amazon SES cost for email marketing?

As of 2026, SES charges about $0.10 per 1,000 emails sent through the API. There are no monthly minimums, no per-contact fees, and no charge for storing a large list — SES doesn't even know what a "list" is.

Some quick math:

Monthly sending volumeApproximate SES cost
10,000 emails~$1
50,000 emails~$5
200,000 emails~$20
1,000,000 emails~$100

Compare that to bundled ESP pricing, where a 25,000-contact list often costs $150–$300 per month regardless of whether you send one campaign or ten. The delivery itself was never the expensive part — the per-contact subscription model is.

The tradeoff is that AWS gives you raw infrastructure at cost and expects you to handle everything else. Whether that's a good deal depends on whether you have (or buy) the software layer.

Step 1: Create an AWS account and open SES

If you don't have an AWS account, create one at aws.amazon.com. You'll need a credit card, but SES usage at newsletter scale costs single-digit dollars per month.

Once you're in, open the SES console. Two things to know up front:

  • SES is region-specific. Your verified domains, sending quotas, and sandbox status all live in one AWS region (like us-east-1). Pick one region and do everything there. A domain verified in eu-west-1 won't work if your sending is configured for us-east-1.
  • New accounts start in sandbox mode. More on this in step 3 — it's the part that trips most people up.

The first time you open the SES console you may hit a "Get set up" wizard. You can skip the upsells it offers (dedicated IPs, Virtual Deliverability Manager) — at typical marketing volumes you don't need them.

Step 2: Verify your domain with SPF, DKIM, and DMARC

Before SES will send on behalf of your domain, you have to prove you own it. And before inbox providers will deliver your mail to the inbox instead of spam, you need email authentication set up. These are the three layers:

SPF

SPF declares which mail servers are allowed to send for your domain. When you send through SES, Amazon's SPF records cover your sends by default — this layer mostly takes care of itself.

DKIM

DKIM cryptographically signs each email so receivers can verify it wasn't tampered with. Setting it up means adding a few CNAME records to your DNS. SES generates the records; you paste them into your DNS provider and wait a few minutes for propagation.

This is the step where "verify your domain" actually happens — once the CNAME records resolve, SES marks the domain verified and starts DKIM-signing your mail.

DMARC

DMARC ties SPF and DKIM together and tells inbox providers what to do when authentication fails. It's a single TXT record:

v=DMARC1; p=none; rua=mailto:dmarc@yourcompany.com

Start with p=none (monitor only), and tighten to p=quarantine and eventually p=reject over a few weeks once you're confident all your legitimate mail passes. Gmail and Yahoo now expect bulk senders to have DMARC in place, so don't skip it.

One more recommendation while you're in DNS: send marketing email from a subdomain like mail.yourcompany.com rather than your root domain. Subdomains carry their own reputation, so a bad campaign can't drag down your transactional or company email. For a deeper walkthrough of all three records, see the domain authentication guide.

Step 3: Get out of the SES sandbox

Every new SES account starts in sandbox mode, with three hard limits:

  • You can only send to verified email addresses — each recipient must be manually confirmed in the SES console
  • 200 emails per 24 hours
  • 1 email per second

Sandbox mode exists so spammers can't spin up AWS accounts and blast mail on day one. It's fine for testing, and useless for real campaigns.

To lift it, you submit a production access request — a short form in the SES console where you describe what you send, to whom, and how recipients opted in. Be specific ("we send a weekly product newsletter to users who signed up on our website") and mention your bounce handling and unsubscribe process. AWS typically reviews requests within 24 hours.

Once approved, you can send to any address, and your daily quota jumps — typically to 50,000 per day to start, with increases available as your volume grows. The full details, including what AWS looks for in the request, are in the SES sandbox guide.

Step 4: Handle bounces and complaints (this part is not optional)

Here's where DIY SES gets serious. AWS monitors your bounce rate and complaint rate, and if they climb too high, it will pause your sending. As working targets: keep hard bounces below 5% and spam complaints below 0.1%.

That means you need a system that:

  • Receives bounce and complaint notifications (SES publishes them via SNS)
  • Automatically suppresses addresses that hard-bounce
  • Immediately stops sending to anyone who marks you as spam
  • Puts a working unsubscribe link in every email — and honors it instantly

None of this is built into SES. If you send marketing mail without it, you will accumulate bounces, your reputation will decay, and eventually AWS will shut you off. This is the single most common way DIY SES setups fail.

The honest catch: SES is an engine, not an app

At this point you have cheap, authenticated sending infrastructure. What you don't have is anything to actually run campaigns with. You still need:

  • Somewhere to store contacts and manage lists
  • An editor to write and design emails
  • Audience selection, scheduling, and sending logic that respects SES rate limits
  • Open and click tracking
  • Bounce/complaint processing wired to your contact list
  • Unsubscribe pages and suppression

You have three realistic options:

Build it yourself. Viable if sending email is core to your product and you have engineering time to spend. For a newsletter, it's a lot of undifferentiated work.

Run open-source software on top of SES. Tools like Listmonk or Keila can use SES as their delivery backend. Free (minus hosting), but you're operating a server, applying updates, and debugging SNS webhooks yourself.

Use a hosted app built for SES. This is what Sendra is: the software layer — contacts, campaigns, editor, tracking, automatic bounce and complaint handling — connected to your own SES account. Sendra is free for your first 1,000 contacts, then $20/month with unlimited contacts. Amazon bills you directly for delivery at its own rates, with no markup. The SES setup guide shows exactly how the connection works, down to the IAM policy.

All three options share the same underlying economics: delivery costs ~$0.10 per 1,000 emails, and your list can grow without your delivery bill caring.

Is Amazon SES worth it for email marketing?

If your list is small and you send rarely, a bundled ESP's free tier is simpler — use it. SES starts making sense when either your list or your volume grows, because SES costs scale with sending while ESP subscriptions scale with list size.

A 30,000-contact newsletter sent weekly is about 120,000 emails a month — roughly $12 of SES delivery. The same list on typical per-contact pricing runs well into the hundreds per month. That gap only widens as you grow.

The work is real: domain authentication, the sandbox request, and bounce handling are all things a bundled ESP hides from you. But it's mostly one-time setup, and the payoff is delivery priced at cost for the life of your list.