Collects as they arrive, acts daily
Find out why customers cancel
Cancellation feedback is sorted into reasons, and each month you get a breakdown.
- Runs
- Collects as they arrive, acts daily
- Apps
- Stripe
- AI
- Yes, uses the built-in AI allowance
- Access
- read
Send this to your assistant
Create a ClickRuntime automation: when a Stripe subscription is cancelled, sort the cancellation feedback and comment into a reason like price, missing feature or switched tool, and email me a breakdown on the 1st of each month.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A SaaS founder sees 40 cancellations in a quarter and a pile of free-text answers in Stripe's cancellation_details: too expensive, switching to a competitor, missing an export feature, just testing. Nobody has time to read them all and tag them by hand, so the loudest anecdote wins the next roadmap meeting. Real reasons for churn stay unmeasured, and pricing or product decisions rest on guesses.
As cancellations arrive, ClickRuntime reads the cancellation reason and comment from Stripe, has ClickRuntime's built-in AI place it in a category such as price, missing feature, support, competitor or no longer needed, and increments a counter for that category. Once a month it emails you the totals alongside a few representative comments.
It is built for small subscription businesses that cannot justify a customer research project but still want evidence.
What you get out of it
Churn reasons become numbers you can compare
Instead of a feeling that people leave over price, you see that 14 of 40 cancellations cited price and 9 cited a missing integration. Ranked categories turn a vague worry into something you can prioritize.
Roadmap debates rest on evidence
When the loudest customer is not the most typical one, a monthly breakdown settles the argument. You can show the team the share of churn tied to a specific feature gap before committing engineering time to it.
Pricing changes get tested against real feedback
After a price increase, a rise in the price category is visible within a month. That tells you early whether the change is costing you customers, while there is still time to adjust.
Nobody reads hundreds of comments by hand
The AI step tags each reason as it comes in, so the work that used to take an afternoon every quarter is finished before you sit down. Your time goes to acting on the pattern.
A consistent record across months
Counters persist from one month to the next, so you can see whether a fix actually reduced a category. A support improvement that cuts churn from poor service shows up as a falling number rather than a hunch.
How it works
What happens, step by step
Each time a customer cancels in Stripe, ClickRuntime reads the feedback they left.
AI sorts the feedback into a reason, such as price, switched tool or missing feature.
It keeps a running count for each reason.
Once a month you get an email with the breakdown of reasons.
Before it runs live
- Connect Stripe
- 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 Stripe steps into one automation
Under the hood
The code that runs this automation
from datetime import date
from clickruntime import on_event, on_trigger, ai, state, notify, verify, credentials
REASONS = ["price", "missing feature", "switched tool", "not using it", "support", "other"]
@on_event
def handle(event):
if not verify.stripe(event.body, event.header("Stripe-Signature"), credentials.secret("STRIPE_WEBHOOK_SECRET")):
return {"ignored": "bad signature"}
if event.json["type"] != "customer.subscription.deleted":
return {"ignored": event.json["type"]}
details = event.json["data"]["object"].get("cancellation_details") or {}
text = f"feedback: {details.get('feedback')}; comment: {(details.get('comment') or '')[:1000]}"
label = ai.generate(text, max_output_tokens=10,
system=f"Pick one cancellation reason from: {', '.join(REASONS)}. Answer with the reason only.").text.strip().lower()
label = label if label in REASONS else "other"
counts = state.get("counts") or {}
counts[label] = counts.get(label, 0) + 1
state.set("counts", counts)
return {"reason": label}
@on_trigger
def monthly(event):
counts = state.get("counts") or {}
lines = [f"{n:>3} {r}" for r, n in sorted(counts.items(), key=lambda x: -x[1])]
notify.email_me(f"Cancellation reasons up to {date.today():%b %d}", "\n".join(lines) or "No cancellations.")
state.set("counts", {})
return countsFAQ
Common questions
Which Stripe fields does it read?
Can I define my own churn categories?
Does the AI see customer names or card details?
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
Track failed payments until they're recovered
Every failed payment is followed until it's paid, and each Friday you see what's recovered and what's still unpaid.
See how it worksGet alerted when a payment fails
Each failed charge or invoice payment shows up in Slack with the customer, amount and reason.
See how it worksGet yesterday's revenue every morning
Each morning you see yesterday's charges, refunds and new subscriptions in one message.
See how it worksKeep exploring
Set up “Find out why customers cancel” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.