The moment it happens
Get alerted when a Resend email bounces
You hear about every bounce and spam complaint within moments, with the address, subject and reason.
- Runs
- The moment it happens
- Apps
- Resend
- AI
- Not needed
- Access
- Full access key (to create webhook) or set up in dashboard
Send this to your assistant
Create a ClickRuntime automation: when Resend reports a bounce or spam complaint, email me at ops@mycompany.com with the recipient, subject and reason.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
Your app sends a welcome email, a receipt or a password reset through Resend, and it bounces because the address has a typo or the mailbox does not exist. The person never gets the message, and your logs show a successful send. Complaints are worse: each one tells mailbox providers your mail may be unwanted, and a handful can start sending your whole domain to spam.
When Resend reports that an email bounced or was marked as spam, ClickRuntime receives the webhook, verifies its Svix signature to confirm it came from Resend, drops duplicate deliveries using the email ID, and notifies you with the recipient and the reason. The alert arrives as soon as the event occurs.
Developers who send transactional email from their own product, and need to know when delivery silently fails, get the most from it.
What you get out of it
Silent delivery failures stop being silent
A send that returns success can still bounce later. The alert closes the gap between your application saying it sent something and the customer actually receiving it. Your logs alone would never show you this.
Complaint rates stay under control
Mailbox providers watch the share of recipients who report your mail as spam. Reacting to each complaint quickly keeps that share low and your domain in good standing. One quick response per complaint adds up over a year.
Bad addresses are removed promptly
Seeing which address bounced lets you remove it from your list or ask the user to correct it. Sending again to the same dead address only damages your reputation further.
Fake events are rejected
Resend signs its webhooks through Svix, and the signature is checked before an alert is created. That stops forged requests from filling your channel with false bounce notices. Only real Resend events reach your team.
Duplicates are suppressed
Webhook systems may deliver the same event twice. Tracking the email ID means each bounce produces one alert, so people do not learn to ignore the channel. A quiet channel is a trusted channel.
How it works
What happens, step by step
Each time Resend records a bounce or spam complaint, it tells ClickRuntime straight away.
The automation checks the message really came from Resend and skips any email it has already reported.
You get an email with the recipient, the subject and the reason, like "Mailbox full".
Before it runs live
- Connect Resend
- Paste your automation's link into the other app's webhook settings
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
- 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
from clickruntime import on_event, notify
@on_event
def handle(event):
if not event.is_verified: # Resend signs webhooks with Svix (standard webhooks)
return {"rejected": "signature check failed"}
body = event.json or {}
kind = body.get("type")
if kind not in ("email.bounced", "email.complained"):
return {"skipped": kind}
data = body["data"]
reason = data.get("bounce", {}).get("message", "marked as spam") if kind == "email.bounced" else "marked as spam"
notify.email_me(f"Resend {kind.split('.')[1]}: {', '.join(data['to'])}",
f"Recipient: {', '.join(data['to'])}\nSubject: {data.get('subject')}\nReason: {reason}")
return {"emailed": True}FAQ
Common questions
What is a Svix signature and why verify it?
What bounce reasons does Resend report?
Do I need to turn anything on in Resend?
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 a daily list of failed Resend emails
One email each evening groups the day's bounces, failures and complaints by type.
See how it worksPost new orders and sign-ups to Slack
When something happens in your shop, app or form, the details land in the right channel straight away.
See how it worksBook appointments only when you're free
Booking requests are accepted only for free slots within your hours, and land on your calendar with the attendee.
See how it worksKeep exploring
Set up “Get alerted when a Resend email bounces” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.