Amazon SES logo

How to Send Emails from Shopify Flow Using Amazon SES

Shopify Flow can automate a lot, but it can’t send a custom email on its own: no order confirmations in your own words, no internal alerts, no win-back messages outside Shopify’s default notifications. FlowRelay fixes that with a Send transactional email action that routes each message through an email provider you choose.

Amazon SES (Simple Email Service) is AWS’s email-sending service: cheap at scale, well regarded for deliverability, and a natural fit if you’re already on AWS. It offers an API, but it also hands out plain SMTP credentials, so you can connect it to FlowRelay with just a host, port, username, and password instead of building an API integration. The setup has a few SES-specific quirks worth knowing up front: everything is tied to an AWS region, brand-new accounts start in a restricted sandbox, and the SMTP credentials are a separate generated pair, not your AWS login or access keys. This guide walks through all of it.

What You'll Need

Step 1Open Amazon SES and Choose a Region

Sign in to the AWS console and open Amazon SES (search “SES” if you don’t see it).

Before anything else, pick your region using the selector in the top-right corner, somewhere close to your customers is a good default. This matters more than it looks: your verified identities, your SMTP credentials, and the SMTP endpoint are all region-specific and have to match. A credential created in us-east-1 won’t work against the eu-west-1 endpoint. Whatever you pick here, stay in it for the rest of the setup, and note it down.

Step 2Verify a Sender Identity

SES won’t send mail from an address it hasn’t confirmed you control. In the SES console, go to Configuration → Identities and click Create identity.

Verifying a domain is the better choice: it lets you send from any address on that domain (orders@, hello@, and so on) and improves deliverability. Enter your domain, and SES gives you a set of DNS records (DKIM CNAMEs, and optionally records for a custom MAIL FROM) to add at your DNS host. Add them and wait for SES to mark the domain Verified, usually minutes, occasionally up to 48 hours.

Verifying a single email address is the quick alternative: pick that option, enter the address, and click the confirmation link SES emails you. You’ll only be able to send from that exact address.

Step 3Request Production Access

Every new SES account (per region) starts in the sandbox, where you can only send to addresses you’ve also verified, with very low limits. That’s fine for testing but useless for real customer email, so you’ll want to leave it.

In the SES console, open Account dashboard and use the Request production access option. You’ll describe what you’re sending (choose Transactional), your website, and how you handle bounces and complaints. Approval is often quick but can take a day. Once you’re in production, you can send to any recipient, though your From address still has to be a verified identity from the previous step.

Step 4Create SMTP Credentials

This is the step people get wrong, so read it carefully: SES SMTP credentials are not your AWS account password and not your IAM access keys. They’re a dedicated pair you generate specifically for SMTP.

In the SES console, go to SMTP settings, then click Create SMTP credentials. AWS creates a behind-the-scenes user with send permission and gives you an SMTP username (a string that looks like an access key) and an SMTP password (a longer string). Copy or download both now, the password is shown only once, and if you lose it you’ll have to generate a new pair.

The same SMTP settings page also shows your SMTP endpoint for this region, something like email-smtp.us-east-1.amazonaws.com. Note it down with your credentials.

Step 5Know Your SES SMTP Settings

Pulling the previous step together, here’s what you’ll enter into FlowRelay:

  • Host: your region’s endpoint, e.g. email-smtp.us-east-1.amazonaws.com
  • Port: 587 (STARTTLS) or 465 (SSL). If your network blocks those, SES also listens on 2587 and 2465
  • Username: the SMTP username from the credentials you created
  • Password: the SMTP password from those same credentials (not the IAM secret key)

Step 6Install FlowRelay on Your Shopify Store

Install FlowRelay from the Shopify App Store and accept the requested permissions.

On first launch, FlowRelay shows a short setup checklist: set your sender name and email, connect a provider, and send a test email. The next step covers connecting SES over SMTP.

Step 7Connect Amazon SES to FlowRelay

In FlowRelay, open Settings, find Email delivery, and click Manage providers to open the Connect email provider dialog.

Pick SMTP from the provider list and fill in your SES details: the region endpoint as the host, port 587 (or 465), the SMTP username, and the SMTP password. FlowRelay tests the connection before saving it, so a region/endpoint mismatch or wrong credentials shows up immediately rather than after your first real send.

Make sure the sender address FlowRelay uses (in its sender details, or in Override sender) is one your SES identity covers, the exact verified email address, or any address on your verified domain. SES rejects mail from a From address it doesn’t recognize.

Click Connect. Whichever provider you connect first becomes your Primary, and FlowRelay routes all outbound mail through it. You can connect a second provider later as an automatic Fallback.

Step 8Create Your First Flow Trigger

Open Shopify Flow, create a new workflow, and pick a trigger (Order created is a common one to start with). Add the Send transactional email action; it shows up in the action list once FlowRelay is installed.

You’ll need to fill in a few fields on the action: an email address for the recipient (this can pull straight from the trigger, like the customer’s email), a subject line, and the body, which is the actual HTML content of the email. There’s also an optional preview text field for the snippet shown in inbox previews. For the body, you can write plain HTML or use Liquid to pull in order details, customer names, and other data from the workflow.

Save the workflow and turn it on.

Step 9Test Your Setup

Before you trust a live trigger, use the Send test email button in FlowRelay’s settings. It confirms SES is wired up correctly and shows you where the message lands. If you’re still in the sandbox, send this test to an address you’ve verified, otherwise SES will reject it.

Once that test email arrives, run your Flow workflow under real conditions, like placing a test order, and check FlowRelay’s delivery log to confirm the email went out through SES and see its delivery status.

Common Issues

“535 Authentication Credentials Invalid” / authentication failed

  • Make sure you’re using the SMTP credentials generated on the SES SMTP settings page, not your AWS console password or your IAM access key and secret. They look similar but are not interchangeable; this is the most common cause
  • Confirm the region matches. SMTP credentials are tied to the region they were created in, and they’ll be rejected by another region’s endpoint even when typed correctly. The host and the credentials must be from the same region
  • If the credentials were deleted or you’re unsure they’re valid, generate a fresh pair on the SMTP settings page and reconnect them in FlowRelay

Mail to customers is rejected, or you can only email yourself

  • Your account is almost certainly still in the sandbox, which only allows sending to verified addresses. Open Account dashboard and Request production access, then try again once it’s approved
  • Even in production, double-check the recipient address is correct; sandbox aside, SES will still reject malformed or clearly invalid addresses

“Email address is not verified” referring to your From / sender address

  • The address you’re sending from has to be a verified identity. Confirm it under Configuration → Identities, it should be either the exact verified email address or an address on your verified domain
  • Check FlowRelay’s sender details and any Override sender fields against the verified identity, including the region (an identity verified in one region doesn’t carry over to another)
  • If you verified a single email address rather than a domain, you can only send from that one address. Verify the domain if you need flexibility in the From address

“Connection refused” or “Connection timed out”

  • Try the alternate port. SES accepts 587 and 465, plus 2587 and 2465 specifically for networks that block the standard mail ports
  • Confirm the host is the endpoint for your region (email-smtp.<region>.amazonaws.com). A wrong region in the hostname will fail to connect
  • If a firewall allowlist is involved, allowlist the amazonses.com domain rather than specific IPs; SES endpoint IPs sit behind load balancers and change frequently

“Throttling - Maximum sending rate exceeded” or you hit your daily quota

  • Every SES account has a daily sending quota and a maximum per-second send rate, both enforced on a rolling 24-hour basis. Bursts of workflow emails can trip the rate limit even when you’re under the daily total
  • Request a quota increase from the SES console if you’re consistently near the ceiling
  • Connect a second provider in FlowRelay as a Fallback, so sends keep going out automatically if SES throttles or you run out of quota for the window