The moment it happens
Post each cancellation and its reason to Slack
Your team sees who cancelled, which product they had and the reason they gave, as it happens.
- Runs
- The moment it happens
- Apps
- Recharge
- AI
- Not needed
- Access
- Subscriptions read
Send this to your assistant
Create a ClickRuntime automation: when a Recharge subscription is cancelled, post the customer, the product and their cancellation reason to #retention in Slack.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
For a subscription business, a cancellation is the most expensive event of the day, yet it often goes unseen. The customer clicks cancel in the Recharge portal, picks a reason, and the next time anyone looks is when the monthly revenue dips. A win-back message that might have worked the same afternoon is never sent.
Whenever a subscription is cancelled in Recharge, ClickRuntime receives the event right away and posts it in Slack with the customer, the product or plan, and the reason they gave. Anyone in the channel can see who left and why, within seconds of the click.
It is a good fit for small subscription brands where founders or support leads personally reach out to people who are leaving, and want to hear the reason while it is fresh.
What you get out of it
Win-back offers can still land
A discount or pause offered the same day, while the customer still remembers your product, converts far better than one sent next month. Speed is what makes a save possible.
You hear the reason in the customer's words
The stated reason arrives with the alert, so the person who contacts them already knows whether the issue was price, taste or delivery. The message starts on the right foot. That makes a reply feel personal rather than scripted.
Founders stay close to churn
Watching cancellations scroll by in Slack keeps the people who decide on pricing and product connected to why customers leave. It is a feel for the business that dashboards rarely give.
High-value customers get special care
A cancellation from a long-time subscriber with a large plan deserves a personal call. The alert makes it easy to notice those among the routine ones and escalate. A personal call can change the outcome.
Operational problems are spotted
Three cancellations in a row mentioning damaged boxes point to a carrier problem. In a live feed you spot the cluster quickly and can fix the cause before more customers leave. A pattern like that is invisible when you read cancellations one by one at the end of a month.
How it works
What happens, step by step
When a customer cancels a Recharge subscription, Recharge tells ClickRuntime straight away.
ClickRuntime picks out who cancelled, the product they had, and the reason and comment they gave.
A message appears in your #retention Slack channel with those details.
Before it runs live
- Connect Recharge
- 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 Recharge 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 event.header("X-Recharge-Topic") != "subscription/cancelled":
return {"skipped": True}
s = event.json["subscription"]
comment = f"\n> {s['cancellation_reason_comments']}" if s.get("cancellation_reason_comments") else ""
notify.slack(f"❌ {s.get('email') or 'Customer ' + str(s['customer_id'])} cancelled {s['product_title']}\n"
f"Reason: {s.get('cancellation_reason') or 'none given'}{comment}", channel="#retention")
return {"subscription": s["id"]}FAQ
Common questions
Does the alert fire for paused subscriptions?
What if the customer gives no reason?
Does it matter which Recharge plan I am on?
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 a subscription payment fails
Each failed charge, and each one that runs out of retries, reaches you with the customer and amount so you can follow up.
See how it worksGet a weekly count of subscription changes
Every Monday you get last week's new, cancelled, paused and skipped subscriptions in one email.
See how it worksFind out the main reasons customers cancel
Once a month you get the cancellation reasons grouped into a few themes, with how often each came up.
See how it worksKeep exploring
Set up “Post each cancellation and its reason to Slack” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.
