Skip to content

Collects as they arrive, acts daily

Get a daily list of failed Resend emails

One email each evening groups the day's bounces, failures and complaints by type.

Runs
Collects as they arrive, acts daily
Apps
Resend
AI
Not needed
Access
as above

Send this to your assistant

Create a ClickRuntime automation: collect Resend bounces, failed sends and spam complaints during the day and email me one summary at 6pm, grouped by type.

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

If your product sends many emails through Resend, an alert for each failure is too much. A burst of twenty bounces after a bad import would flood the channel, and people mute it. Yet nobody wants to find out three weeks later that a steady trickle of failures has been growing. The need is a calm summary, not a stream of interruptions.

Throughout the day, ClickRuntime stores each delivery failure event that Resend reports. At 18:00 it groups them by type, such as bounced, complained or delayed, and posts a single message listing every failed email with its recipient and reason. Days with no failures produce a short all-clear or nothing at all.

Teams who send moderate to high volumes of email and prefer one daily check to constant alerts will like this approach.

What you get out of it

  • One message replaces a stream

    A single end-of-day list is far easier to read than dozens of pings. People actually look at it, which is the point of any report. The summary respects people's attention.

  • Grouping reveals the cause

    Seeing twelve bounces to one domain next to three spam complaints tells a clearer story than separate alerts. The grouping points to a bad list or a content problem. Patterns that individual pings hide become obvious.

  • Trends show up in the numbers

    A daily list of failures lets you see if the count is rising. A slow climb in the number of bounces is a warning that your list quality is falling.

  • Evenings are a natural review point

    18:00 lands before people leave, so any urgent problem can be handled the same day. A list at the end of the day also keeps mornings interruption free. Urgent items still get handled before people log off.

  • Nothing is lost between checks

    Every event is stored until the digest goes out. Even failures that arrive at 3am are included, so the list is complete when you read it. You never wonder whether an overnight failure slipped by.

How it works

What happens, step by step

  1. Throughout the day, Resend tells ClickRuntime about every bounce, failed send and spam complaint, and the automation saves each one.

  2. At 18:00 it groups the day's problems by type.

  3. You get one email listing each group with the recipient and subject of every affected email.

Before it runs live

  • Connect Resend
  • Paste your automation's link into the other app's webhook settings

What you get

RunsCollects as they arrive, acts daily
Get a daily list of failed Resend emailstoday, 9:00Succeeded
Email · Resend delivery problems todayBounced (3) sam@northwind.example: Your Acme invoice Spam complaints (1) lee@acme.example: October newsletter

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

  • Act only on the items that match your own rules, and skip the rest
  • 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 Resend 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.
daily_delivery_failure_digest.pyexample
from collections import defaultdict
from clickruntime import on_event, on_trigger, notify, state

TYPES = {"email.bounced": "Bounced", "email.failed": "Failed", "email.complained": "Spam complaints"}

@on_event
def remember(event):
    body = event.json or {}
    if body.get("type") not in TYPES:
        return {"skipped": body.get("type")}
    data = body["data"]
    pending = state.get("pending") or []
    pending.append({"type": body["type"], "to": ", ".join(data.get("to", [])), "subject": data.get("subject", "")})
    state.set("pending", pending[-500:])
    return {"stored": len(pending)}

@on_trigger
def send_digest(event):
    pending = state.get("pending") or []
    if not pending:
        return {"sent": False}
    groups = defaultdict(list)
    for p in pending:
        groups[TYPES[p["type"]]].append(f"  {p['to']}: {p['subject']}")
    text = "\n\n".join(f"{name} ({len(rows)})\n" + "\n".join(rows) for name, rows in groups.items())
    notify.email_me(f"Resend: {len(pending)} delivery problems today", text)
    state.set("pending", [])
    return {"sent": True, "count": len(pending)}

FAQ

Common questions

Why use a digest instead of immediate alerts?
Immediate alerts suit low volume or high stakes, while a digest suits steady volume where individual failures are not urgent. You can run both: urgent hard bounces to a channel immediately, and everything else summed up once a day.
Can I change the time of day?
Yes. 18:00 is a common choice, but any hour works. Choose a time when someone is available to act on the list, and set the timezone to match your team, so the digest does not arrive in the middle of the night.
What happens on a day with no failures?
You can have the digest skip posting entirely, or send a short note saying nothing failed. A quiet confirmation is reassuring because it shows the job is working, while silence can mean either good news or a broken integration.
What permissions does it need?
as above. 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 checks. Checks that find nothing new 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 a daily list of failed Resend emails” from your assistant

Copy the prompt above, or connect your assistant first. Free plan, no credit card.