Collects as they arrive, acts daily
Find 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.
- Runs
- Collects as they arrive, acts daily
- Apps
- Recharge
- AI
- Yes, uses the built-in AI allowance
- Access
- Subscriptions read
Send this to your assistant
Create a ClickRuntime automation: keep every Recharge cancellation reason, and on the 1st of each month email me the top five themes with a count and an example for each.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A Shopify subscription store using Recharge gets a trickle of cancellations, each with a reason the customer picked from a list or typed into a box: too expensive, too much product piling up, switched brands, shipping damage. Reading them one at a time tells you nothing. Nobody has time to tally them by hand, so the real reasons people leave stay anecdotal and decisions rest on guesses.
As cancellations happen, ClickRuntime stores each reason. At the end of the month, built-in AI reads the full set, groups the reasons into themes and counts how often each came up, and emails you the result with a few representative quotes. No separate AI account or key is needed.
Subscription brand owners and retention managers get the most from it, because the themes point at what to fix: pricing, frequency options or product quality.
What you get out of it
Churn causes become concrete
Instead of a vague feeling that customers leave over price, you see that a third cite too much product and a fifth mention delivery issues. Fixes can be aimed at the largest cause.
Skip and frequency options get tested
If many customers say they have too much stock, offering a longer delivery interval or a skip option is a direct response. The summary tells you whether that idea has support in your own data. Guesswork about what customers want gets replaced by their own words.
Free-text answers finally count
Typed reasons are the most informative, and the hardest to analyze. AI grouping turns hundreds of short comments into a short list of themes, so the detail is no longer wasted.
Month-over-month movement is visible
When last month's top reason was price and this month's is quality, something changed in your business or supply chain. A regular summary lets you notice and ask why. Trends tell you more than any single month.
Product and support teams share evidence
A themed summary is easy to forward to the people who run packaging, fulfillment or customer service. It carries real customer words, which is more persuasive than a manager's impression.
How it works
What happens, step by step
Each time a customer cancels a Recharge subscription, ClickRuntime saves the reason and any comment they wrote.
On the 1st of the month, AI reads all the saved reasons and groups them into a few themes.
You get an email listing each theme with how often it came up and an example quote from a customer.
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
- Change what the AI looks for, or how it writes the result
- 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, on_trigger, state, ai, notify
@on_event
def handle(event):
if event.header("X-Recharge-Topic") == "subscription/cancelled":
s = event.json["subscription"]
reason = " ".join(filter(None, [s.get("cancellation_reason"), s.get("cancellation_reason_comments")]))
reasons = state.get("reasons") or []
reasons.append(reason[:300] or "no reason")
state.set("reasons", reasons)
return {"ok": True}
@on_trigger
def run(event): # 1st of the month
reasons = state.get("reasons") or []
if not reasons:
return {"reasons": 0}
themes = ai.generate("\n".join(f"{i}. {r}" for i, r in enumerate(reasons, 1)), max_output_tokens=600,
system="These are subscription cancellation reasons. Give the top five themes, "
"each with a count and one example quoted.").text
notify.email_me(f"Why {len(reasons)} customers cancelled last month", themes)
state.delete("reasons")
return {"reasons": len(reasons)}FAQ
Common questions
How does it collect the reasons during the month?
What if customers choose from a preset list of reasons?
Does the AI summary ever invent reasons?
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 weekly count of subscription changes
Every Monday you get last week's new, cancelled, paused and skipped subscriptions in one email.
See how it worksGet 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 worksPost each cancellation and its reason to Slack
Your team sees who cancelled, which product they had and the reason they gave, as it happens.
See how it worksKeep exploring
Set up “Find out the main reasons customers cancel” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.
