Skip to content

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%.

Paste it into your assistant. It tells you what it will send or change before it runs live.

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

  1. Every hour, ClickRuntime reads your Amazon SES bounce and complaint rates.

  2. It compares each with the limit you set.

  3. 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

RunsHourly
Get warned before SES pauses your sendingtoday, 9:00Succeeded
Email · Amazon SES reputation warningReputation.BounceRate: 3.420% (limit 3.00%)

Build your own

Need it to work differently?

This template is a starting point. Copy the prompt and change it, or describe a different automation from scratch, with your own conditions, more apps or an AI step. Your assistant writes it, tests it and runs it on ClickRuntime.
  • 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

This is the Python script that runs each time the automation starts. Your AI assistant writes it for you when you send the prompt, and you allow each step in your assistant. To change how the automation works, describe the change to your assistant and it updates the script for you. For every function it can use, see the script reference.
reputation_bounce_complaint_alert.pyexample
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 rates

FAQ

Common questions

What bounce and complaint rates are acceptable?
AWS reviews accounts when the bounce rate passes about 5% and the complaint rate passes about 0.1%, and the warning levels are lower. Many senders set their own thresholds at roughly 2% and 0.05% to leave a margin.
Does it show which campaign caused the problem?
The alert reports the rates, and the run log shows the time. Matching that to your send history points to the campaign. Detailed per-message data is available through SES event publishing if you need it.
Will it alert again after the rate recovers?
Yes. When the rate falls back under the threshold, the alert is re-armed, so a second spike next week produces a new message. A rate that stays high is reported once. A rate that stays high is reported once, so you are not buried in repeats.
What permissions does it need?
cloudwatch:GetMetricData, ses:GetAccount. Nothing else in your accounts is used.
Does it need AI?
No. It runs without AI, so it doesn't use your plan's AI allowance.
How many runs does it use?
One run each time it runs (hourly). Checks that find nothing to do and stop right away aren't counted.
Can I change how it works?
Yes. Describe the change to your AI assistant, for example a different schedule, channel or filter. It updates the automation, tests it and tells you what changed.

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.