Skip to content

How to send a newsletter with Amazon SES

You can send a newsletter through Amazon SES, but SES only delivers the email: you still need a way to write issues, a subscriber list with consent, unsubscribe and bounce handling, scheduling and the DNS records that mailbox providers check. FlockStack Cloud sends through Amazon SES and provides those parts, so you don't build or run them yourself.
  • Sends through SESFlockStack Cloud delivers every email through Amazon SES. You don't create or manage an AWS account.
  • The app around itEditor, signup forms, double opt-in, imports, segments, automations, scheduling and a public website for your issues.
  • Unsubscribes handledA signed unsubscribe link and one-click headers on every email. Addresses that bounce or complain stop receiving.
  • API and MCPThe same actions from your code or an AI assistant.

The short answer

Amazon SES sends the emails. It isn't a newsletter app. To send a newsletter with it you add what surrounds the sending: a way to write and render each issue, a subscriber list with signup and consent, unsubscribe handling, bounce and complaint processing, scheduling, and the DNS records that let Gmail, Outlook and others trust the mail.

There are three ways to get there: write that yourself against SES's API or SMTP interface, run self-hosted software built for SES, such as Sendy, which describes itself as a self-hosted newsletter platform powered by Amazon SES, or use a newsletter platform that already sends through it. FlockStack Cloud is the third kind: it delivers through Amazon SES and provides the rest. FlockStack is also open source, so the second way is open too: you can run it yourself on your own SES account.

What Amazon SES provides

  • Sending, through an SMTP interface or the API: AWS's SES v2 SendEmail sends a simple message, a raw MIME message or a template.
  • Domain identities with Easy DKIM: you publish three CNAME records, and SES signs your mail.
  • A custom MAIL FROM domain, which makes SPF line up with your own domain.
  • Event publishing for sends, deliveries, bounces, complaints, opens and clicks, to destinations such as Amazon SNS.
  • An account-level suppression list that keeps hard bounces and complaints from being sent to again.
  • Contact lists and topics, with hosted unsubscribe pages and the one-click unsubscribe headers, within limits described below.
  • Sending quotas and a sandbox while an account earns production access.

What SES doesn't give you

SES is a sending service. These parts of a newsletter product aren't in it:

  • An editor and a preview of what readers will see, and a place where past issues live.
  • Signup forms, a confirmation step, and a record of when and how each person agreed to receive your emails.
  • A subscriber database for several newsletters. SES allows one contact list per AWS account, with up to 20 topics.
  • Scheduling a send, or splitting a large send into steps while a new list proves itself.
  • Per-issue reports of how an issue did across opens, clicks, bounces and unsubscribes.
  • Gmail's spam rate. Gmail doesn't send complaint data to SES, so a Gmail complaint never reaches SES's suppression list. Senders watch it in Google Postmaster Tools.

How a first send goes

This is the shortest path from nothing to one delivered email, with the AWS CLI. SES settings are per region, so use one region throughout.

  1. Verify your sending domain. SES answers with three CNAME records to publish; DNS changes can take up to 72 hours to be seen.
Terminal
aws sesv2 create-email-identity --email-identity news.example.com --region us-east-1
  1. Ask for production access. New accounts start in the sandbox: 200 messages per 24 hours, one per second, and only to verified addresses. In the request you choose whether you mostly send marketing or transactional mail, give a website and confirm that recipients asked for your email. AWS says it answers within 96 hours.

  2. Send a message. Put the message in a file and pass it to send-email:

message.json
{
  "Simple": {
    "Subject": { "Data": "This week: three links worth your time" },
    "Body": {
      "Html": { "Data": "<p>Hello,</p><p>Here are this week's links.</p><p><a href=\"https://example.com/unsubscribe\">Unsubscribe</a></p>" },
      "Text": { "Data": "Hello,\n\nHere are this week's links.\n\nUnsubscribe: https://example.com/unsubscribe" }
    }
  }
}
Terminal
aws sesv2 send-email \
  --from-email-address "News <hello@news.example.com>" \
  --destination ToAddresses=reader@example.org \
  --content file://message.json \
  --region us-east-1
  1. Publish events. Create a configuration set with an Amazon SNS destination for bounces and complaints, and act on what arrives. AWS requires at least one method for bounces and complaints.

That sends one email. A newsletter is that, repeated for a list that keeps changing, with each of the parts below working.

Subscriber management

The list is the hard part of a newsletter built on SES. It needs:

  • A signup path that records the address, when it joined and from where, and a confirmation step so that a typo or a prank can't sign someone else up.
  • Statuses: active, unsubscribed, bounced, complained. Only active addresses get an issue.
  • Imports that clean what they bring: invalid and misspelled addresses, role addresses, duplicates and anyone who left before.
  • Tags, fields and segments, if you will ever send to part of the list.
  • Deleting or exporting a person's data when they ask.

Domain authentication and deliverability

Easy DKIM covers DKIM. For SPF, SES's default MAIL FROM domain is amazonses.com, which doesn't align with your own domain; a custom MAIL FROM domain, with one MX record and an SPF TXT record, fixes that. DMARC passes when either SPF or DKIM aligns, so aligned DKIM alone can be enough.

Mailbox providers also look at behaviour. AWS puts an account under review at a bounce rate of 5% and may pause it at 10%; for complaints, review starts at 0.1% and a pause is possible at 0.5%. Google asks senders of more than 5,000 messages a day to Gmail to set up SPF, DKIM and DMARC, to support one-click unsubscribe in marketing messages, and to keep the spam rate in Postmaster Tools below 0.30%, aiming for under 0.10%.

Unsubscribe and suppression

Two different things get confused here.

  • Unsubscribes are a reader's choice. Every email needs a visible unsubscribe link, and Gmail's bulk-sender rules add a one-click unsubscribe header. SES can host this for you with its contact lists: you add a placeholder to the message and SES adds the link and the List-Unsubscribe headers. That works for single-recipient sends only, replaces headers you set yourself, and doesn't work if you sign DKIM yourself before calling SES.
  • Suppression is about failures. SES's account-level suppression list holds addresses that hard-bounced or complained. It isn't an unsubscribe list, and suppressed sends still count toward your daily quota.

What it costs on the AWS side

SES charges per email sent. AWS now has three pricing plans, and new SES accounts start on the Essentials plan from July 21, 2026. You can switch to à la carte pricing, which has no minimum fees.

Per 1,000 emails Notes
À la carte $0.10 No minimum fees
Essentials plan $0.16 For the first 10 million emails a month, no fixed fee

At 100,000 emails a month that is $10 à la carte or $16 on Essentials, before attachments ($0.12 per GB), a dedicated IP ($24.95 a month each) and any other charge on your AWS bill. New AWS customers can get up to $200 in Free Tier credits that apply to SES.

SES's price is the cheapest part of a newsletter built on it. The rest is the hosting, the engineering to build and maintain the list, the editor and the bounce handling, and the time you spend when deliverability dips.

Using FlockStack instead of assembling the stack

FlockStack Cloud sends through Amazon SES and provides the application on top of it:

  • Writing and publishing: an editor (or Markdown and HTML through the API), a test email, scheduling, and a public website for your issues.
  • The list: signup forms, double opt-in, welcome emails, CSV imports from other newsletter platforms with the checks above, tags, custom fields and segments.
  • Unsubscribes: a signed unsubscribe link in every email, and List-Unsubscribe headers with one-click unsubscribe. Anyone who unsubscribes, bounces or complains stops receiving.
  • Guardrails around reputation: contacts you have never emailed go out as a first slice of 5% (at least 200 and at most 2,000 contacts), and the rest follows after 3 hours if the slice's bounces and complaints stay low. A campaign pauses past 2% hard bounces or 0.08% complaints, and an account is blocked past 5% or 0.3%. The pause levels sit below the points where AWS starts a review.
  • Gmail's spam rate: every email carries a Feedback-ID, so Gmail's spam rates in Google Postmaster Tools can be matched back to the account that sent it.
  • Automations, for a welcome series or a follow-up that runs by itself: see newsletter automation.
  • An API and an MCP server, so your code or an AI assistant can draft, schedule and send: the newsletter API and the newsletter MCP server.
  • A dedicated IP, if you want one, as an add-on from the Pro plan.

Warnings and blocks in the docs explains exactly what pauses a send and what to do.

FlockStack Cloud and your own SES account

On FlockStack Cloud the sending runs on FlockStack's own Amazon SES account, in the region of your account (the United States or the European Union). That has consequences:

  • You don't create or pay for an AWS account, and there is no SES production-access request to make.
  • You can't connect an AWS account of your own to FlockStack Cloud.
  • Your domain's DKIM, return path and DMARC records are still yours to publish, and FlockStack checks them for you.

If you want your own SES account, your own limits and your own bill, run FlockStack yourself: FlockStack is open source under the AGPL-3.0, and self-hosted newsletter software covers what that takes.

Amazon SES is a service of Amazon Web Services. FlockStack is an independent product, not owned, sponsored or endorsed by AWS.

Sources

  • Amazon SES prices, the three pricing plans, the July 21, 2026 start of Essentials for new accounts, attachment and dedicated IP prices, and the Free Tier credits: aws.amazon.com, checked
  • Sandbox limits and production access requests: docs.aws.amazon.com, checked
  • Domain identities, Easy DKIM and its three CNAME records: docs.aws.amazon.com, checked
  • Custom MAIL FROM domains: docs.aws.amazon.com, checked
  • SPF, DKIM and DMARC alignment: docs.aws.amazon.com, checked
  • Bounce and complaint rates that put an account under review: docs.aws.amazon.com, checked
  • Bounce and complaint rates at which AWS might pause sending: docs.aws.amazon.com, checked
  • The account-level suppression list: docs.aws.amazon.com, checked
  • Contact lists and topics, and their limits: docs.aws.amazon.com, checked
  • Hosted unsubscribe links and one-click headers: docs.aws.amazon.com, checked
  • Gmail's requirements for bulk senders: support.google.com, checked
  • How Sendy describes itself: sendy.co, checked

Questions

Can I send a newsletter with Amazon SES alone?
You can send the emails, but SES gives you no editor, signup forms, subscriber management for several newsletters, scheduling or per-issue reports. You build those, or use software that does.
How much does Amazon SES cost for a newsletter?
On AWS's à la carte pricing it is $0.10 per 1,000 emails, and on the Essentials plan, where new accounts start from July 21, 2026, $0.16 per 1,000. At 100,000 emails a month that is $10 or $16, plus any attachments, dedicated IPs and the hosting of the software you run around it.
Do I have to request production access?
Yes, to send to anyone you haven't verified. A new SES account is in the sandbox, with 200 messages per 24 hours and one per second, only to verified addresses. FlockStack Cloud sends from FlockStack's own account, so there is nothing for you to request.
Does SES handle unsubscribes?
Partly. Its contact lists and topics can host an unsubscribe page and add the one-click headers, with limits: one contact list per AWS account and single-recipient sends only. Its suppression list is for bounces and complaints, not unsubscribes.
Can I connect my own AWS account to FlockStack Cloud?
No. FlockStack Cloud sends through FlockStack's own Amazon SES account. You publish DNS records for your domain, and FlockStack handles the sending. To use your own SES account, run FlockStack on your own server.
Is FlockStack affiliated with Amazon Web Services?
No. FlockStack is an independent product that uses Amazon SES to deliver email. Amazon SES is an AWS service.

Send your first issue

Create your account, add your domain and import your list. FlockStack Cloud handles the sending.

Start with FlockStack