Help

Setting up Amazon SES with Newsletter Sender.

Set up your Amazon Simple Email Service (SES) from scratch. Follow these step by step instructions to take an empty AWS account to sending your first newsletter. The initial setup takes roughly 10 minutes, followed by a short wait while AWS reviews your production access.

1Before you start

Ensure you have an AWS account with administrative access, along with the email address you plan to send from (such as news@yourdomain.com). If you haven't set these up yet, check the prerequisites guide first.

Amazon SES operates on a region by region basis. Choose a single region closest to the majority of your audience, and stick with it throughout this guide. Newsletter Sender supports:

Region codeWhere it is
eu-west-1Europe (Ireland)
eu-west-2Europe (London)
eu-central-1Europe (Frankfurt)
us-east-1US East (N. Virginia)
us-east-2US East (Ohio)
us-west-2US West (Oregon)
ca-central-1Canada (Central)
ap-southeast-2Asia Pacific (Sydney)
ap-south-1Asia Pacific (Mumbai)
Not sure? Choose eu-west-1 for readers in the UK and Europe, or us-east-1 for North America.
  1. In Newsletter Sender, go to Settings → Your company and check the From address. Amazon SES is set up for this address's domain, so set it first. Click Save if you changed it.
Newsletter Sender's Your company settings with the From address news@example.com highlighted
Example details shown.

Choose how to set up Amazon SES

  • Automatic setup wizard (recommended): create your AWS user and keys with one button (this also makes your S3 backup bucket), and Newsletter Sender verifies your sending domain, sets up bounce and complaint webhooks and adds the required DNS records directly to Cloudflare.
  • Manual setup: configure AWS by hand if your AWS permissions restrict CloudFormation, or you prefer to create the user and keys yourself.

2Use the setup wizard

The wizard walks you through five quick, focused steps and handles the heavy lifting automatically. A progress bar at the top tracks your setup along the way.

  1. Go to Settings → Sending and select Amazon SES.
  2. Click Use the setup wizard to begin.
Choose how to send with Amazon SES chosen, and the Use the setup wizard and Set it up myself options

Step 1: Region

  1. Select the AWS region closest to where most of your readers live, then click Next. For readers in the UK and Europe, Europe (Ireland) is typically best. Refer to the regions table in Before you start if you're unsure.
Step 1 of 5, Where should Amazon send from, with Ireland chosen and the Next button

Step 2: Generate your AWS keys

  1. Click Create the user and keys in AWS. AWS will open in a new browser tab with the required parameters pre-filled. Sign in with an administrator account if prompted. This automatically creates a restricted IAM user with permissions limited to Amazon SES and SNS (plus adding backup copies to S3), complete with a dedicated access key.
Step 2 of 5, Make your Amazon keys, with the Create the user and keys in AWS button and the two key boxes
  1. AWS will show the Quick create stack screen with all parameters pre-populated. Confirm that the Stack name reads newsletter-sender and that the AWS region in the top right corner matches the region you selected earlier. Leave all other parameters at their defaults.
Quick create stack with the Newsletter Sender template and the stack name newsletter-sender highlighted
Account details are blurred.
  1. Scroll to the bottom and check the box that reads I acknowledge that AWS CloudFormation might create IAM resources. AWS requires this confirmation whenever a template creates users.
  2. Click Create stack.
Capabilities with the I acknowledge tick box and the Create stack button highlighted
  1. Wait for the status to show CREATE_COMPLETE. This usually takes about a minute. If the status doesn't update on its own, click the circular refresh button.
The newsletter-sender stack showing CREATE_COMPLETE
Account details are blurred.
  1. Click the Outputs tab. You will see values for AccessKeyId, SecretAccessKey and Region. Keep this tab open, as you will need to copy these across to Newsletter Sender in the next step.
The Outputs tab with AccessKeyId, Region and SecretAccessKey highlighted
Keys are blurred here. Never share yours.
  1. Switch back to the setup wizard in your Newsletter Sender tab. Copy and paste AccessKeyId into Access key ID, and SecretAccessKey into Secret access key. Be sure to highlight the exact text so no accidental spaces are copied over.
  2. Click Check the keys and continue. The wizard checks your keys directly with AWS before going on. Your keys are encrypted securely within your own Cloudflare account and are never displayed again.

Step 3: Domain

The wizard automatically detects where your domain's DNS is hosted.

If your domain is on Cloudflare, Newsletter Sender can add the required DNS records automatically. It just needs an API token with DNS editing permissions:

  1. Click Make a Cloudflare token. Cloudflare will open the Create API token page in a new tab, with the name Newsletter Sender DNS and all the permissions it needs already filled in. Sign in if prompted.
  2. Under Zone Resources, select your sending domain. Limiting the token to this one domain means it can't see or change any of your other domains.
  3. Click Continue to summary, then Create Token.
  4. Click Copy next to the new token. Cloudflare won't show it again.
  5. Return to the wizard, paste it into Cloudflare token and click Check the token and continue. Prefer to manage DNS yourself? Click I'd rather add the records myself.
Step 3 of 5, example.com is on Cloudflare, with the Make a Cloudflare token button and the token box
Example domain shown.

If your DNS is hosted elsewhere, the wizard shows your provider (such as GoDaddy or Namecheap) and displays the exact records to copy across on the next screen.

  1. Click Next to carry on.
Step 3 of 5, example.com's DNS is with GoDaddy, with the Next button
Example domain shown.

Step 4: Set up

  1. Click Set up Amazon SES. With a single click, Newsletter Sender:
  • Adds and verifies your domain in Amazon SES with Easy DKIM email signing.
  • Sends bounces to their own subdomain (bounce.yourdomain.com), keeping your main inbox clean.
  • Sets up Amazon SNS to feed bounces and spam complaints back into Newsletter Sender automatically.
  • Adds the required DNS records (DKIM, SPF and DMARC) automatically if your domain is on Cloudflare.
  • Sends an automatic production access request to lift Amazon's SES sandbox limits.
Step 4 of 5, Set up Amazon SES, listing what it does, with the Set up Amazon SES button
Example details shown.
Step 4 of 5 after pressing it, with five green ticks
  1. If your DNS is hosted elsewhere, add each record shown on screen at your DNS host. Use the copy buttons next to each name and value. See DNS hosted elsewhere for tips.
  2. Click Next.

Step 5: Final checks

  1. Wait for the status to read You're ready to send. Amazon checks the DNS records automatically, usually within an hour. AWS typically reviews and approves production access requests by email within 24 hours. The wizard checks with AWS every 30 seconds, so you can leave the tab open, or close it and come back later.
  2. Click Write your first email to begin drafting, or Done to return to your dashboard.
Step 5 of 5, All done, with You're ready to send and four green ticks
Example details shown.
Returning later? To check the status or carry on at any time, go to Settings → Sending and click Open the setup wizard.

3What the wizard sets up

Here is a complete breakdown of what's created in your accounts. Nothing else in your accounts is changed or accessed.

In AWS (CloudFormation stack: newsletter-sender)

WhatPurpose
IAM userLimited strictly to Amazon SES and SNS. It has no console access and can't touch anything else in your AWS account.
IAM access keyThe keys Newsletter Sender uses, stored encrypted inside your Cloudflare account and never shown in plain text.
Private S3 bucket (newsletter-sender-backups-[account]-[region])Off-site storage for nightly backups, independent of Cloudflare. Encrypted, completely private, and each copy is deleted automatically after 31 days.
S3 add only permissionLets the key add backups and nothing more. It can't read, change or delete existing backups, protecting your data even if the key were ever stolen.

In Amazon SES

WhatPurpose
Your domain with DKIMLets inboxes check your emails really come from you.
Custom MAIL FROM (bounce.yourdomain.com)Sends bounces back to Amazon SES instead of cluttering your day to day inbox or changing your existing MX records.
Configuration set (newsletter-sender) and SNS topic (newsletter-sender-events)Sends bounce and complaint notices straight to Newsletter Sender, so those addresses are suppressed automatically.
Production access requestAsks AWS to take your account out of the sandbox, so you can send to anyone.

In Cloudflare (if your DNS is on Cloudflare)

RecordNamePurpose
3 × CNAME*._domainkey.yourdomain.comDKIM email signing.
MX and TXTbounce.yourdomain.comLets SES handle bounces, and sets SPF for the bounce subdomain.
TXT_dmarc.yourdomain.comA starter DMARC policy, only added if your domain hasn't got one. An existing policy is never overwritten.
Removing it all To remove the AWS side, delete the newsletter-sender stack in the AWS CloudFormation console. This deletes the IAM user and its access key. As a safeguard, your S3 backup bucket is kept, so an accidental stack deletion never destroys your backups. When you're certain, empty and delete the bucket yourself in S3.

4Manual setup

If your AWS permissions restrict CloudFormation, or you'd rather create the user and keys yourself, do it in the AWS IAM console. In Newsletter Sender, choose Amazon SES, then Set it up myself.

Part 1: Create a restricted IAM user

Newsletter Sender talks to Amazon through its own user, with only the permissions it needs. This user can't sign in to the AWS console.

  1. Log in to the AWS Management Console and go to IAM → Users. Or type IAM in the top search bar and click Users in the sidebar.
  2. Click Create user.
The IAM users page in AWS, with the Create user button highlighted
Your list of users will look different. Names here are blurred.
  1. Enter a user name, such as newsletter-sender.
  2. Leave Provide user access to the AWS Management Console unticked. Newsletter Sender only needs access through the API.
  3. Click Next.
Specify user details with the user name newsletter-sender typed in and the Next button highlighted
  1. Under Permissions options, select Attach policies directly.
  2. In the search box, search for AmazonSESFullAccess and press Enter. This lets it send email and manage your domain in SES.
  3. Tick AmazonSESFullAccess. Tick the box at the start of the row, not the name (the name opens a new tab).
Set permissions with Attach policies directly chosen and AmazonSESFullAccess ticked
  1. Now search for AmazonSNSFullAccess and tick it too. This lets Newsletter Sender hear about bounces and complaints straight away. The counter shows 2 chosen when both are ticked.
  2. Click Next.
AmazonSNSFullAccess ticked, with Permissions policies showing 2 chosen and the Next button highlighted
  1. Review the summary screen and click Create user.
Review and create, showing AmazonSESFullAccess and AmazonSNSFullAccess and the Create user button
  1. In the list of users, click your new user (newsletter-sender) to open its page.
The users list with a User created successfully message and the new newsletter-sender user highlighted

Part 2: Generate access keys

  1. On the user's page, select the Security credentials tab.
The user's page with the Security credentials tab highlighted
Account details are blurred.
  1. Scroll to Access keys and click Create access key. A brand new user has no access keys yet, so this box will be empty.
The Access keys box with the Create access key button highlighted
This user already had a key, so it's blurred. Yours will be empty.
  1. Under Use case, select Application running outside AWS. Newsletter Sender runs on Cloudflare, which is outside AWS.
  2. Ignore the Alternative recommended notice and click Next. If you see a tick box under Confirmation, you've chosen a different option: go back and choose Application running outside AWS.
Access key best practices with Application running outside AWS chosen and the Next button highlighted
  1. (Optional) Add a description, such as Newsletter Sender, to identify this key later.
  2. Click Create access key.
Set description tag with Newsletter Sender typed in and the Create access key button highlighted
  1. Save your keys straight away. Copy the Access key (it starts AKIA), and click Show under Secret access key to copy it.
  2. Click Download .csv file and keep it in your password manager. Then delete the download.
Retrieve access keys, with the access key, the secret access key and the Download .csv file button highlighted
Keys are blurred here. Never share yours.
This is the only time AWS shows the secret key. If you lose it, it can't be recovered and you'll need to make a new pair. Never share these keys or put them in a public repository.

5Part 3: Connect your keys to Newsletter Sender

  1. In Newsletter Sender, go to Settings → Sending, choose Amazon SES and select Set it up myself.
  2. Select your AWS Region. Make sure it matches the region you used in AWS.
  3. Paste your Access key ID and Secret access key into their boxes. Copy them cleanly from AWS so no stray spaces come across.
  4. Click Save. Newsletter Sender checks the keys with AWS before saving. Your keys are stored encrypted inside your own Cloudflare account, and only the last few characters are ever shown again.
Set it up myself, with the region, both keys pasted and the Save button highlighted
Amazon's own example keys shown.

You'll see Sending through Amazon SES. Next, the DNS records.

6Add the DNS records

Amazon needs six DNS records on your domain before it lets you send. If your domain's DNS is on Cloudflare, Newsletter Sender can add them automatically using an API token. If your DNS is hosted elsewhere, see DNS hosted elsewhere below.

Option A: Your DNS is on Cloudflare

  1. In Newsletter Sender, open Is your domain on Cloudflare? We can add the DNS records for you.
  2. Click Make a Cloudflare token. Cloudflare's Create API token page opens in a new tab. Sign in if prompted.
The Cloudflare box open, with the Make a Cloudflare token button, the Paste the token box and Save highlighted
  1. The token is already named Newsletter Sender DNS with its permissions chosen. They let Newsletter Sender read your domain and manage its DNS records, nothing else. Leave them as they are.
  2. Under Zone Resources, select your sending domain. Limiting the token to this one domain means it can't see or change any other domains in your Cloudflare account.
  3. Click Continue to summary, then Create Token.
  4. Click Copy next to the token. Cloudflare shows it only once. If you leave the page before copying it, you'll need to make a new one.
  5. Return to Newsletter Sender, paste it into Paste the token and click Save. You'll see Your domain is on Cloudflare, so we add the DNS records for you.
Your domain is on Cloudflare, so we add the DNS records for you, with the Set up Amazon SES for me button highlighted
  1. Click Set up Amazon SES for me. It takes a few seconds.

That one button does all of this across your AWS and Cloudflare accounts:

  • Adds your domain and DKIM signing in Amazon SES, so receiving email servers can check your messages come from your domain.
  • Sends bounces to bounce.yourdomain.com, keeping them well away from your day to day inbox.
  • Sets up Amazon SNS to send bounces and spam complaints straight back to Newsletter Sender, which stops emailing those addresses.
  • Adds the DNS records to Cloudflare as DNS only (grey cloud), so Amazon can see them. A starter DMARC record is only added if your domain hasn't got one.
  • Asks AWS to lift the sandbox with an automatic production access request (see below).
The ticks after setting up, with Added 6 DNS records in Cloudflare and Asked Amazon to take your account out of the sandbox highlighted
Example domain shown.
You can delete the token afterwards. Newsletter Sender only needs it while setting up. Once Check where it's up to shows green ticks, click Stop in Newsletter Sender, then delete the token in Cloudflare under My Profile → API Tokens. To see the records at any time, click The DNS records we added.

Option B: DNS hosted elsewhere

If your DNS is with a provider such as GoDaddy or Namecheap, click Set up Amazon SES for me without a Cloudflare token. It sets up the AWS side, then shows the exact records to add at your DNS host. Each name and value has its own copy button.

The ticks after setting up, and the first DNS records with their copy buttons highlighted
Example records shown. Yours will have your own domain and codes.
All six DNS records: three CNAME, an MX, an SPF TXT and an optional DMARC TXT
  1. At your DNS host, add each record with the Type shown (CNAME, MX or TXT). Some hosts want only the part before your domain in the name box, such as bounce instead of bounce.yourdomain.com.
  2. Copy the name from Newsletter Sender into your host's Name or Host box, and the value into Target, Points to or Value.
  3. For the MX record on the bounce subdomain, set the priority to 10.
  4. Add all six records, or five if your domain already has a DMARC record. Always keep your existing DMARC policy.
Adding the records to Cloudflare by hand? Make sure all three DKIM CNAME records are set to DNS only (grey cloud). With the orange cloud on, Amazon can't see the records and your domain won't verify.

7Check it's working

  1. In Newsletter Sender, click Check where it's up to. Amazon checks the DNS records automatically, usually within an hour. You can click it again at any time for a live status check.
  2. Make sure each line shows a green tick: your domain can send, Signing (DKIM): success and Bounce address: success.
Check where it's up to, with three green ticks and Still in the SES sandbox highlighted
This account is still waiting for Amazon to take it out of the sandbox.

The last two lines show whether you're still in the Amazon SES sandbox and how fast you can send. New AWS accounts start at 1 email a second and 200 a day, and can only send to addresses you've verified.

8Leave the SES sandbox

Every new Amazon SES account starts in the sandbox. The setup (the wizard or Set up Amazon SES for me) sends the production access request for you, filling in the details:

FieldWhat we fill in
Mail typeMarketing (newsletters are marketing email)
Websitehttps://yourdomain.com, from your From address
How you sendPeople sign up on your website and confirm by email (double opt in), every email has a one click unsubscribe link, and bounces and complaints are removed automatically.

A person at AWS reviews it and replies by email, usually within 24 hours. You don't need to do anything else. Once you're approved, click Check where it's up to: the sandbox line turns green and your sending speed goes up.

If AWS asks for more, reply to their email with how people sign up, how often you send and how you look after your list. That generally gets approval on the second review.

Requesting production access yourself

Only if Newsletter Sender shows We couldn't ask Amazon to take you out of the sandbox. Make sure the AWS console is set to the same region you chose at the start.

  1. Go to Amazon SES → Account dashboard. Check the region at the top right matches yours, and that the banner says Your Amazon SES account is in the sandbox.
The SES Account dashboard showing the sandbox message, with the region at the top right highlighted
This region (London) is still in the sandbox.
  1. Click Request production access. It's on the dashboard, or under Get set up in the sidebar. You can also go straight to the request form.
  2. Under Mail type, select Marketing.
  3. In Website URL, enter the site where readers subscribe, so AWS can see what you send.
  4. In the use case description, describe how you send, such as confirmed opt in sign ups, one click unsubscribes and automatic bounce handling.
  5. Tick I agree to the AWS Service Terms and Acceptable Use Policy. You're confirming you only send to people who opted in.
  6. Click Submit request.
Request production access with Marketing chosen, an example website, the agreement tick box and the Submit request button highlighted
Example website shown.

9Troubleshooting

What you seeCause and fix
Keys rejected when you click SaveCopy both AccessKeyId and SecretAccessKey again, with no spaces at either end. Check the region matches the one where you made the stack.
Stack status says CREATE_FAILED or ROLLBACK_COMPLETEYour AWS sign in isn't allowed to make users. Log in with an administrator account, delete the failed stack in CloudFormation and click Create the user and keys in AWS again.
AWS says a stack called newsletter-sender already existsYou made it before. Open it in CloudFormation and copy the keys from its Outputs tab, or delete the old stack and run the wizard again.
An AccessDenied or not authorized messageIf you made the user by hand, a policy is missing. Open IAM → Users → newsletter-sender → Permissions, click Add permissions and attach both AmazonSESFullAccess and AmazonSNSFullAccess.
Domain still not verified after an hourCheck all three DKIM CNAME records in Cloudflare are set to DNS only (grey cloud), and look for typos such as a doubled domain (abc._domainkey.yourdomain.com.yourdomain.com).
Status says Isn't in Amazon SES yetClick Set up Amazon SES for me again. It's safe to repeat: anything already set up is kept and anything missing is added.
Can't send: still in the SES sandboxNewsletter Sender won't send a campaign from a sandbox account. Wait for AWS to approve you by email, or ask yourself (see Requesting production access yourself).
Cloudflare didn't accept the tokenMake a fresh one with Make a Cloudflare token, copy the whole token with no spaces and save it again.
That token can't see your domainThe token doesn't cover your domain. Make a new one and select your sending domain under Zone Resources.
Backups says your Amazon setup needs one more stepYour stack was made before backups were copied to S3. In CloudFormation, choose newsletter-sender → Update stack → Make a direct update → Replace existing template, paste the address shown in Newsletter Sender and click Next to the end. Tick the IAM box, click Submit, then click Copy to Amazon S3 now.
AWS turned down production accessReply to AWS's email. Explain that your list uses double opt in, bounces are suppressed automatically and every email has a one click unsubscribe link. Requests are often approved on a second review.

Need help? Get in touch with the status messages or errors you see. For your security, never share your secret access key or Cloudflare tokens.