The moment it happens
Get Slack alerts for bounces and spam complaints
Each bounced or spam-flagged email shows up in Slack with the person and the message, as it happens.
- Runs
- The moment it happens
- Apps
- Customer.io
- AI
- Not needed
- Access
- none for receiving (signing key to verify)
Send this to your assistant
Create a ClickRuntime automation: whenever a Customer.io email bounces or is marked as spam, post the person's email, the message name and the event type to #deliverability in Slack.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
Bounces and spam complaints damage sender reputation quickly. A single campaign to an old list can produce hundreds of bounces, and a handful of spam complaints can push a domain toward the junk folder. Customer.io reports these in its dashboards, but marketing and engineering often notice only after deliverability has already dropped.
When Customer.io sends a reporting webhook event, this verifies the X-CIO-Signature header to confirm it really came from Customer.io, filters for bounce and spam complaint events, and posts them to Slack. You add the trigger link as a reporting webhook in Customer.io.
It is valuable for lifecycle marketers and growth engineers who send large volumes of email and need to react quickly. Before anything is posted, the X-CIO-Signature header is verified, so the channel only ever shows real delivery problems reported by your Customer.io workspace and not spoofed events.
What you get out of it
Protect your sender reputation
Spam complaints hurt most when they accumulate unnoticed. Seeing them quickly lets you stop the offending campaign or clean the list before inbox providers penalise you. A handful of spam complaints can push a domain toward the junk folder, and stopping the offending send early limits the damage.
Fix bad addresses fast
Hard bounces mean an address will never work. Learning about them promptly lets you remove or correct them so you stop sending to dead mailboxes. A hard bounce means an address will never work, and removing it promptly stops you sending to dead mailboxes.
Find the campaign causing trouble
A cluster of events in Slack right after a send points to that campaign. You can pause similar sends before they do wider damage. A burst of events right after a send points to that campaign, and you can pause similar sends before the problem grows.
Trust that alerts are genuine
Signature verification means only real Customer.io events produce posts. Nobody can flood your channel with fake complaints. Only requests with a valid signature produce posts, so nobody can flood your channel with fake complaints.
Keep engineering and marketing aligned
Both teams see the same alerts in one channel. A technical cause, such as a bad DNS record, gets noticed because the right people are watching. Marketing and engineering both watch the same channel, so a technical cause such as a broken DNS record gets noticed.
How it works
What happens, step by step
When an email bounces or is marked as spam in Customer.io, Customer.io tells ClickRuntime straight away.
ClickRuntime first checks that the message really came from Customer.io and rejects anything that doesn't.
It ignores every other kind of email activity.
It posts to #deliverability in Slack saying Bounced or Marked as spam, with the recipient and the subject line.
Before it runs live
- Connect Customer.io
- 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 Customer.io steps into one automation
Under the hood
The code that runs this automation
from clickruntime import on_event, notify, log
LABELS = {"bounced": "Bounced", "spammed": "Marked as spam"}
@on_event
def handle(event):
if not event.is_verified:
log.warning("rejected delivery with a bad X-CIO-Signature")
return {"posted": False}
e = event.json or {}
label = LABELS.get(e.get("metric"))
if e.get("object_type") != "email" or not label:
return {"posted": False}
d = e.get("data") or {}
notify.slack(f"{label}: {d.get('recipient')} on \"{d.get('subject')}\"", channel="#deliverability")
return {"posted": True}FAQ
Common questions
Which events are included?
How is the webhook verified?
Can I include the campaign name in the message?
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 an email when someone unsubscribes
You hear about each unsubscribe and which message it came from.
See how it worksGet weekly Customer.io campaign numbers by email
Each Monday you get one table of sends, opens and clicks per campaign for the past week.
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 worksKeep exploring
Set up “Get Slack alerts for bounces and spam complaints” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.