Hourly
Get warned before SES pauses your sending
You hear once when bounces or complaints pass your limits, while there's still time to act.
- Runs
- Hourly
- Apps
- Amazon SES
- AI
- Not needed
- Access
- cloudwatch:GetMetricData, ses:GetAccount
Send this to your assistant
Create a ClickRuntime automation: every hour, check my Amazon SES bounce and complaint rates in us-east-1 and email me if bounces are above 3% or complaints above 0.08%.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
Amazon SES watches two numbers closely: the share of your emails that bounce and the share that readers mark as spam. When either one rises above the limits AWS publishes, the account goes under review, and if it does not come back down, AWS can pause your sending altogether. For a company that sends order confirmations or login codes through SES, a pause means customers stop getting those emails at once. The warning signs are in the reputation metrics, but nobody looks at them until the pause notice arrives.
Every hour, the automation reads your account's bounce and complaint rates, compares each with the thresholds you set, and alerts you the first time a rate crosses its line. It does not repeat while the rate stays high, and it can alert again if the rate recovers and breaks the line later.
Anyone who sends marketing or transactional email through their own AWS account should have a warning like this in place.
What you get out of it
Sending is not paused by surprise
An hourly check lets you react when the bounce rate reaches 3%, well before the point where AWS puts the account under review or pauses sending. The margin between warning and pause is where the saving is.
The cause is found while it is fresh
A jump in complaints usually follows one specific send, such as an import of old addresses or a campaign to the wrong segment. Knowing the hour it began makes the culprit easy to identify.
Sender reputation is protected
Mailbox providers watch the same signals. Fixing a list problem quickly keeps your messages in inboxes, where a long period of high bounces would push them toward spam folders. A healthy reputation also matters for delivery speed and placement.
Transactional email stays dependable
Receipts and reset links share the account with your campaigns. Keeping the account healthy means a marketing mistake does not stop customers from getting the messages they need. Separating the concerns is simple only if you notice problems early.
Alerts fire once per problem
The alert is sent when a line is crossed, not every hour while it stays crossed. You are told about the event, and your mailbox is not filled with repeats while you fix it.
How it works
What happens, step by step
Every hour, ClickRuntime reads your Amazon SES bounce and complaint rates.
It compares each with the limit you set.
The first time one goes over, you get an email with the current rate and the limit. It won't repeat until the rate recovers and crosses the line again.
Before it runs live
- Connect Amazon SES
What you get
Build your own
Need it to work differently?
Your own rules
Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.
Any number of apps
One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.
AI where it helps
Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.
On a schedule or on each event
Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.
Changes you can ask for
- Run it at a different time, more or less often, or only on weekdays
- Add an AI step, for example to summarize, sort or draft a reply
- Add another app, for example also send it to Slack
- Combine it with other Amazon SES steps into one automation
Under the hood
The code that runs this automation
from datetime import datetime, timedelta, timezone
from requests_aws4auth import AWS4Auth
from clickruntime import on_trigger, credentials, http, notify
REGION = "us-east-1"
LIMITS = {"Reputation.BounceRate": 0.03, "Reputation.ComplaintRate": 0.0008}
@on_trigger
def run(event):
auth = AWS4Auth(credentials.secret("AWS_ACCESS_KEY_ID"), credentials.secret("AWS_SECRET_ACCESS_KEY"), REGION, "monitoring")
end = datetime.now(timezone.utc)
over, rates = [], {}
for metric, limit in LIMITS.items():
resp = http.get(f"https://monitoring.{REGION}.amazonaws.com/", auth=auth, headers={"Accept": "application/json"}, params={
"Action": "GetMetricStatistics", "Version": "2010-08-01", "Namespace": "AWS/SES", "MetricName": metric,
"StartTime": (end - timedelta(hours=1)).isoformat(), "EndTime": end.isoformat(),
"Period": 3600, "Statistics.member.1": "Maximum"})
resp.raise_for_status()
points = resp.json()["GetMetricStatisticsResponse"]["GetMetricStatisticsResult"]["Datapoints"]
rates[metric] = max((p["Maximum"] for p in points), default=0)
if rates[metric] > limit:
over.append(f"{metric}: {rates[metric]:.3%} (limit {limit:.2%})")
if over:
notify.email_me("Amazon SES reputation warning", "\n".join(over))
return ratesFAQ
Common questions
What bounce and complaint rates are acceptable?
Does it show which campaign caused the problem?
Will it alert again after the rate recovers?
What permissions does it need?
Does it need AI?
How many runs does it use?
Can I change how it works?
Related
You might also like
Get your SES quota and volume each morning
Each day you see how much of your quota you used and whether the account is still in the sandbox.
See how it worksGet a weekly list of suppressed addresses
Every Monday you see which addresses SES stopped sending to last week, and why.
See how it worksKnow the moment your website goes down
Your team hears in Slack when the site stops responding or slows down, and again when it's back.
See how it worksKeep exploring
Set up “Get warned before SES pauses your sending” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.