Use AWS SES with GetFluxly
Connect Amazon SES to GetFluxly and run behavior-triggered lifecycle email through the cheapest production-grade send path most teams already have access to. GetFluxly captures product events, builds unified customer profiles, fires automations on the rules you define, and hands the rendered message to SES for the actual delivery. Your sender reputation, IP warmth, and domain authentication stay in AWS where they already live.
When to use AWS SES
Reach for SES when sending costs matter and you already operate inside AWS. SES bills around $0.10 per 1,000 emails with no monthly minimum, which is roughly an order of magnitude cheaper than the typical hosted ESP at SaaS scale. The trade-off is that SES gives you raw send-and-receive primitives, so you bring the templating, deliverability tooling, and lifecycle logic. That's exactly the layer GetFluxly handles, so the combination lands you with a low-cost, behavior-triggered email stack without the hosted ESP markup.
SES is also the right pick when you need region-pinned sending for data residency (GetFluxly will dispatch into whichever SES region holds the verified identity), or when you want a dedicated IP and a warm-up plan you control end-to-end.
Requirements before connecting
Before you start the connection, make sure you have an AWS account with SES enabled in your chosen region, a domain you can publish DNS records on, and access to the IAM console so you can create a dedicated sending user. If your account is still in the SES sandbox, plan to request production access in parallel. The approval usually lands within 24 hours and you can keep working against verified recipients in the meantime.
On the GetFluxly side you need a project, a server token
(gflux_secret_live_...), and access to Settings → Email providers.
Verify your sending domain
In the SES console, open Verified identities → Create
identity → Domain and enter the apex domain you want to
send from (for example yourdomain.com). SES will
generate three DKIM CNAME records. Copy them and add
them at your DNS provider exactly as SES displays them. Status
flips to Verified once the records propagate,
usually within a few minutes.
Verifying the apex domain covers every from address
that lives under it (hello@, billing@,
noreply@ and so on) so you don't need to verify
individual mailboxes.
Add SPF, DKIM, and DMARC
These records live on your domain's DNS, not on GetFluxly, and they tell receiving mailboxes that AWS SES is allowed to send on your behalf. All three are publishable in seconds; getting them right is the single biggest deliverability win you can make.
SPF
Add a TXT record at the apex of the sending domain
that includes Amazon SES. If you already have an SPF record, merge
the include: rather than publishing two SPF records
(multiple SPF records on the same name fail validation).
Type: TXT
Host: yourdomain.com
Value: v=spf1 include:amazonses.com -all DKIM
SES auto-generated three CNAME records when you
verified the domain in the previous step. They look like this, host
and value strings are unique per domain:
Type: CNAME
Host: <selector1>._domainkey.yourdomain.com
Value: <selector1>.dkim.amazonses.com
Type: CNAME
Host: <selector2>._domainkey.yourdomain.com
Value: <selector2>.dkim.amazonses.com
Type: CNAME
Host: <selector3>._domainkey.yourdomain.com
Value: <selector3>.dkim.amazonses.com DMARC
DMARC tells receivers what to do if SPF and DKIM both fail.
Start with p=none while you confirm legitimate mail
passes, then ratchet up to quarantine and eventually
reject.
Type: TXT
Host: _dmarc.yourdomain.com
Value: v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.com; fo=1 getfluxly.com for SPF, DKIM, or DMARC.
GetFluxly never appears in your From: header.
Create SES credentials
GetFluxly speaks two SES dialects: the SES API (signed with an IAM access key pair) and SMTP (using SES SMTP credentials). Pick the path that matches your sending volume and network policy.
Option A IAM access key (recommended)
Create a dedicated IAM user (not your root credentials) so you can rotate or revoke without breaking the rest of your infrastructure. Attach the minimal policy below, then mint an access key under the user. Copy the access key id and secret access key AWS only shows the secret once.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ses:SendEmail",
"ses:SendRawEmail"
],
"Resource": "*"
}
]
} Option B SES SMTP credentials
In SES choose SMTP settings → Create SMTP
credentials. AWS provisions a wrapper IAM user and hands
back an SMTP username and password. Use these with the GetFluxly
Custom SMTP connector and the region's SMTP endpoint, e.g.
email-smtp.us-east-1.amazonaws.com on port 587 with STARTTLS.
Or provision SES via CloudFormation
If your team manages AWS in code, ship the SES + IAM setup as a CloudFormation stack so the sending identity is reviewable, version controlled, and reproducible across environments. Drop this template into your IaC repo and deploy it once per environment.
AWSTemplateFormatVersion: "2010-09-09"
Description: GetFluxly + Amazon SES lifecycle sending stack
Parameters:
SendingDomain:
Type: String
Description: Apex domain to send from (e.g. yourdomain.com)
Resources:
SesIdentity:
Type: AWS::SES::EmailIdentity
Properties:
EmailIdentity: !Ref SendingDomain
DkimAttributes:
SigningEnabled: true
GetFluxlySender:
Type: AWS::IAM::User
Properties:
UserName: getfluxly-ses-sender
GetFluxlySenderPolicy:
Type: AWS::IAM::Policy
Properties:
PolicyName: getfluxly-ses-send
Users: [!Ref GetFluxlySender]
PolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: Allow
Action:
- ses:SendEmail
- ses:SendRawEmail
Resource: "*"
GetFluxlyAccessKey:
Type: AWS::IAM::AccessKey
Properties:
UserName: !Ref GetFluxlySender
Outputs:
AccessKeyId:
Value: !Ref GetFluxlyAccessKey
Description: Paste this into GetFluxly → Email providers → Amazon SES.
SecretAccessKey:
Value: !GetAtt GetFluxlyAccessKey.SecretAccessKey
Description: Paste this into GetFluxly. Treat it like a password.
After the stack creates, fetch the outputs (
aws cloudformation describe-stacks) and paste them into
the GetFluxly provider form. The DKIM CNAMEs come from the SES
console under the new identity, add those to your DNS exactly as
shown above.
Connect AWS SES in GetFluxly
Open your GetFluxly project, go to Settings → Email providers, click Add provider, and choose Amazon SES. Fill in the fields below and save
GetFluxly verifies the credentials with a real SendEmail
preflight before it persists the record.
| Field | Example | Notes |
|---|---|---|
display_name | SES Production | Free-form. Shown in the provider list. |
region | us-east-1 | Must match the region of your verified identity. |
from_email | hello@yourdomain.com | Lives under your verified SES identity. |
from_name | Acme | Optional friendly name shown to recipients. |
access_key_id | AKIA… | From the IAM access key. |
secret_access_key | … | Encrypted with AES-GCM before it touches our database. |
Or call the API directly:
curl -X POST https://api.getfluxly.com/v1/projects/PROJECT_ID/email-providers \
-H "Authorization: Bearer gflux_secret_live_REPLACE_ME" \
-H "Content-Type: application/json" \
-d '{
"provider": "aws_ses",
"display_name": "SES Production",
"region": "us-east-1",
"from_email": "hello@yourdomain.com",
"from_name": "Acme",
"access_key_id": "AKIA...",
"secret_access_key": "..."
}' Handle bounces and complaints
SES emits feedback events through SNS. Wire them to GetFluxly so a hard bounce or complaint immediately suppresses the recipient from future sends, that single hop is the difference between a healthy sending reputation and a quiet drift into the spam folder.
-
Create an SNS topic in the same region as your SES identity, e.g.
getfluxly-ses-feedback. - In SES, open Verified identities → your domain → Notifications and assign the SNS topic to Bounce and Complaint feedback.
-
In GetFluxly, copy the project webhook URL from Settings → Webhooks → AWS SES, it looks like
https://api.getfluxly.com/v1/webhooks/aws-ses/<project_id>. - Subscribe that URL to the SNS topic as an HTTPS subscription. SES sends a confirmation ping; GetFluxly auto-confirms it on first receipt.
From this point on, every bounce or complaint updates the suppression list and tags the contact in the unified profile so your segments naturally exclude them.
Test your first lifecycle email
Hit the verify endpoint to dispatch a single message through SES. If it lands, your wiring is good and you can point an automation at this provider record.
curl -X POST https://api.getfluxly.com/v1/email-providers/PROVIDER_ID/test \
-H "Authorization: Bearer gflux_secret_live_REPLACE_ME" \
-H "Content-Type: application/json" \
-d '{ "to": "you@yourdomain.com" }'
For an end-to-end behavior-triggered test, set up a one-step
automation: when user fires signed_up → send the
welcome email through SES, then trigger the event from your
staging app. The send shows up in GetFluxly's send log within
a couple of seconds.
Common errors
MessageRejected: Email address is not verified the address in from_email is not under a
verified identity in the configured region. Re-check the region pin
and confirm the identity status reads Verified.
InvalidClientTokenId / SignatureDoesNotMatch the access key pair is wrong or has been deactivated. Mint a
fresh access key for the IAM user and update the GetFluxly record.
Sandbox cap (200/day, verified recipients only). New SES accounts are sandboxed. Request production access in the SES console to lift the cap.
Throttling: Maximum sending rate exceeded.
Your account is over the per-second send quota. GetFluxly retries
with exponential backoff, but if you're consistently hitting
this, request a sending quota increase in the SES console.
Mail going to spam despite SPF and DKIM passing.
Almost always a missing or misconfigured DMARC record, or a
sending domain with no warm-up history. Confirm DMARC is published
on _dmarc.yourdomain.com and ramp volume gradually
(~50→500→5,000/day) over the first two weeks.
FAQ
Does GetFluxly charge extra to send through AWS SES?
No. GetFluxly does not bill per email. Your sending costs stay on the AWS bill you already pay (typically $0.10 per 1,000 emails on SES) and GetFluxly handles segmentation, automation, profiles, and tracking on top of that send path.
Do I need a dedicated AWS account for SES?
No. You can connect SES inside an existing AWS account. We recommend a dedicated IAM user (not your root credentials) so you can rotate or revoke without touching anything else in your infrastructure.
Does GetFluxly support both the SES API and SMTP?
Yes. The native SES connector uses the SigV4 SES API for the lowest overhead. If your network policy requires SMTP, you can connect SES through the Custom SMTP provider instead. Point it at email-smtp.us-east-1.amazonaws.com on port 587 with STARTTLS using SES SMTP credentials.
Will my AWS SES sandbox limit affect lifecycle email?
Yes. New SES accounts are sandboxed and can only send to verified recipients with a 200 message daily cap. Request production access in the SES console; approval typically lands within 24 hours and unlocks full production sending.
How does GetFluxly handle SES bounces and complaints?
GetFluxly exposes a per-project webhook URL. Configure an SNS topic for bounces and complaints in the SES console and subscribe the GetFluxly webhook URL to that topic. Hard bounces and complaint events update the suppression list automatically and the recipient is excluded from future sends.
Can I use AWS SES with multiple sending domains?
Yes. Verify each domain in the SES console with its own DKIM record set, then create one GetFluxly email-provider record per from-address. Each automation can target whichever provider record matches the brand or product line you want recipients to see.
Does GetFluxly require any always-on AWS infrastructure?
No EC2, no Lambda, no managed services beyond SES itself. GetFluxly stores your SES access key encrypted at rest (AES-GCM, per-project envelope) and dials the SES API directly from our dispatcher when an automation fires.
How do I see email history in AWS SES?
SES on its own does not give you a per-recipient inbox view. It emits sending events (send, delivery, bounce, complaint, open, click) that you route to CloudWatch, SNS, or Kinesis Data Firehose with a configuration set, then query wherever you landed them. When SES is connected to GetFluxly those same events are ingested for you, so every profile carries its own email history alongside its product events with nothing to build.
Can AWS SES send marketing emails?
Yes. SES is raw sending infrastructure and does not care whether a message is a receipt or a campaign, as long as you follow the AWS acceptable use policy and handle unsubscribes. What SES does not give you is the layer above it: segmentation, journeys, and open or click reporting. You bring that yourself, which is exactly the part GetFluxly supplies.