How to handle cancellation requests in Intercom
A practical way to handle cancellation requests that arrive in Intercom: spot them, reply with a macro, offer an alternative once, and always cancel when asked.
Many subscription businesses have a cancel button in the app, and still get a steady stream of “please cancel my account” messages in Intercom. Those messages are a cancel flow too, just an unstructured one. Handled well, they keep a few customers who only needed a pause or a cheaper plan, and they end cleanly for everyone else. Handled badly, they become refund requests, angry reviews or chargebacks.
This guide shows how to spot cancellation requests in Intercom, answer them consistently, and record what happened. It sticks to Intercom’s own help center: creating and managing macros, how to trigger a Workflow, the Topics Explorer, the Stripe app and Data connector templates (all accessed November 2026).
The rule that comes first
A customer who asks to cancel in a support conversation has asked to cancel. You can offer an alternative once, but the request must be carried out if they confirm, and it must not be slower or harder than signing up was. Several jurisdictions now have explicit rules on this; we summarize them in click-to-cancel rules for SaaS. Everything below assumes that rule: the goal is a clear, fast answer, not a maze.
What Intercom gives you natively
Workflows can catch the conversation early
Intercom Workflows start from predefined triggers. The one most teams use for inbound requests is “Customer sends their first message”, which runs once per new conversation. Intercom’s trigger documentation also lists “Customer sends any message”, which fires on every customer message, including replies in an open conversation. Intercom recommends the first-message trigger when you only want to act at the start of a conversation.
Workflows can branch on conditions such as message content, attributes or customer type. There is no built-in “cancellation intent” trigger in the trigger list, so in practice you route on keywords (“cancel”, “unsubscribe”, “close my account”, “stop billing”) or on an attribute you set yourself. Expect false positives (“how do I cancel an invite?”) and keep a human in the loop.
Topics Explorer shows how big the problem is
The Topics Explorer groups conversations into topics and subtopics with AI, without manual tagging. When it is first enabled, it builds its model from the past 90 days of conversations, and it needs at least 15 similar conversations to form a subtopic. Intercom is explicit about its limits: topics do not analyze sentiment. Use it to see whether cancellation and billing conversations are growing, not to make decisions on individual customers.
Macros keep the answer consistent
A macro is a saved reply with optional actions. Actions include assigning to a team or teammate, adding tags, snoozing, closing, changing priority, setting a ticket state and running a data connector. One limit matters here: a single macro cannot both reply to the customer and add an internal note, so you need two macros if you want both. Macro search matches titles only, so name them clearly (for example “Cancel – confirm”, “Cancel – pause offer”).
The Stripe app shows the subscription beside the conversation
If you bill with Stripe, Intercom’s Stripe app shows the customer’s Stripe details, active subscriptions and three most recent payments next to the conversation, and syncs attributes such as stripe_subscription_status and stripe_subscription_period_start_at. Only live mode data syncs. The app needs a paid Stripe account and is available on Intercom’s Essential, Advanced and Expert plans.
The pre-built Stripe Data connector templates are read-only for subscriptions: they can look things up but not pause or cancel. Cancelling from Intercom needs a custom data connector that calls Stripe’s write endpoints, or your teammate doing it in Stripe or in your own admin.
A process you can set up this week
1. Tag every cancellation request
Create a tag such as cancel-request. Add it with a Workflow keyword branch, and let teammates add it by hand when the Workflow misses one. Tags are what make the rest measurable.
2. Look up before you reply
Before answering, check three things in the Stripe app panel or your admin:
- the subscription status and when the current period ends;
- whether the last payment failed (a “cancel” message right after a decline is sometimes a payment problem, not a decision to leave);
- whether the customer is on an annual plan, which changes what “cancel” means for them.
3. Ask for the reason, once
One short question is enough: “Before I cancel, can you tell me what’s not working? It helps us improve.” Do not make the answer a condition for cancelling. If you need a list of reasons that you can act on later, see churn survey questions.
4. Offer one alternative that fits the reason
Match the offer to what they said:
| Reason given | Reasonable single offer |
|---|---|
| Too expensive | A cheaper plan or a time-limited discount |
| Not using it right now | A pause for one or two billing periods |
| Missing a feature | Nothing, or an honest note if it is on the roadmap |
| Switching to another tool | Nothing; cancel and ask for feedback |
| Payment problem | A card update link, not a retention offer |
We compare the options in pause vs discount vs downgrade. One offer, one message. If the customer says no, cancel.
5. Confirm in writing
When you cancel, reply with a confirmation macro that states:
- what was cancelled and the effective date;
- whether access continues until the end of the paid period;
- whether any refund applies, and how much;
- that no further charges will be made.
This message protects you later. If the customer disputes a charge, a dated confirmation in the conversation is exactly the kind of record a card issuer looks for. We cover that in using Intercom conversations as chargeback evidence.
6. Close with the right tags
Use a second macro (internal) to add the outcome: cancel-done, cancel-paused, cancel-downgraded or cancel-retained, plus the reason. Close the conversation. Now you can count outcomes by reason every month.
Example macros
Cancel – first reply
Hi, thanks for letting us know. I can cancel your subscription right away. Before I do, is there anything specific that isn’t working for you? If you’d rather just cancel, reply “cancel” and I’ll take care of it now.
Cancel – pause offer (only if the reason fits)
Understood. If it’s a quiet period, I can pause your subscription for up to two months instead, with no charge during the pause. If you’d still prefer to cancel, just say so and I’ll do it straight away.
Cancel – confirmation
Done: your subscription has been cancelled. You’ll keep access until the end of your current billing period on [date], and you won’t be charged again. If you change your mind, you can restart anytime from your account.
Replace the bracketed parts by hand or with Intercom’s attribute placeholders.
Common mistakes
- Asking more than once. Repeated offers in a support chat feel like a trap, and that is what regulators look at.
- Cancelling in Stripe but not confirming in Intercom. The customer does not know it worked, and you have no record in the conversation.
- Treating payment failures as churn. A customer whose card was declined may write “just cancel it” out of frustration. Send a card update link first; see how to recover failed payments on Stripe.
- Letting reasons live only in free text. If reasons are not tagged, you cannot tell next quarter whether price or a missing feature drove cancellations.
Doing this with NoChurn
NoChurn’s Intercom connector is read-only: it never replies, tags or closes anything in Intercom, so the steps above stay with your team. What it adds is a self-serve path you can link to from your macros: a cancel flow with reasons and offers (discount, pause, plan change), with the one-click cancel always visible, hosted or headless through the API. NoChurn matches Intercom conversations to customers by email (doubtful matches are suggested to you, never merged automatically) and uses them in the churn score and churn drivers, and as dated evidence if a cancelled customer later disputes a charge. See NoChurn + Intercom.