Route cancelled Recharge subscribers into Klaviyo win-back lists
When a Recharge subscription is cancelled, sort the customer into the right Klaviyo win-back audience and flag big spenders for a personal call.
Trigger this workflow with a webhook from Recharge subscribed to the subscription/cancelled topic on API version 2021-11. Every time a subscriber cancels, the payload gives me the cancelled subscription, including the customer id, the product that was cancelled, and the cancellation reason. Recharge sends both a free text reason and a reason code, so read both.
Start by building a picture of who just churned. Use Recharge Get Customer with the customer id from the payload to get their email, their name, and the date they became a customer. Use Recharge List Subscriptions filtered to that customer to confirm which product was cancelled and whether they still have any other active subscriptions. Use Recharge List Orders filtered to that customer to count how many orders they have received and to sum their lifetime spend. Recharge returns money as decimal strings in the store currency, so convert before adding. From the customer creation date and the cancellation date, work out tenure in whole months.
Now pick the win-back audience from the cancellation reason. Reasons are loosely worded free text plus a reason code, so interpret the meaning rather than matching exact strings. Price objections such as "too expensive", "costs too much", or "cannot afford it right now" go to the discount win-back list. Volume and pacing complaints such as "too much product", "still have plenty left", or "shipments come too often" go to the lower frequency list, because the fix there is a longer interval and not a discount. Quality, fit, and experience complaints such as "did not like the taste", "it did not work for me", or delivery and service problems go to the feedback list, where a human should hear the detail before any offer goes out. If the reason is blank or genuinely unclear, use the general win-back list and say so in the summary rather than guessing.
Write what you learned onto the customer's Klaviyo profile with Klaviyo Create or Update Profile (Upsert), matching on their email. Set churn properties for the raw cancellation reason, the segment you chose, tenure in months, order count, lifetime value, the cancelled product name, and the cancellation date. Then place them on the chosen audience with Klaviyo Add Profiles to List.
Only segment and tag in Klaviyo. Do not send any email from this workflow. The merchant already owns their win-back flows in Klaviyo and those flows trigger off list membership, so this workflow is done once the profile is enriched and sitting on the right list.
Finally, post a short summary to the retention channel with the Slack Bot Send a Message operation. Include the customer name and email, the product they cancelled, the reason in their own words, tenure in months, order count, lifetime value, and which audience they landed on. If lifetime value is above the high value threshold, lead the message with a clear flag saying a human should reach out personally before the automated sequence runs, so the team has a chance to save the relationship with a real conversation. If the customer still has other active subscriptions, label it as a partial cancellation so nobody sends a win-back offer to a current subscriber.
Let me configure the Klaviyo list ids for the discount, lower frequency, feedback, and general win-back segments, the Slack channel to post retention summaries into, and the lifetime value threshold that counts as high value.
What does this prompt do?
- Picks up every subscription cancellation the moment it happens and reads the reason the customer gave.
- Builds a quick picture of that customer: how long they subscribed, how many orders they placed, how much they spent in total, and which product they dropped.
- Sends them to the win-back audience that matches their reason, so price objections, too much product, and quality complaints each get their own follow-up instead of one blanket discount.
- Posts a short summary to your retention channel and calls out high value cancellations so someone can reach out personally before the automated emails start.
What do I need to use this?
- A Recharge store where you manage your subscriptions
- A Klaviyo account with the win-back audiences already created, for example one for price, one for frequency, and one for feedback
- A Slack workspace with a retention channel where the summaries should land
- A rough idea of what counts as a high value customer for you, in total lifetime spend
How can I customize it?
- Change which reason maps to which audience, or add more segments such as seasonal shoppers or customers who would rather pause than cancel
- Set the lifetime spend threshold that marks a cancellation as high value and worth a personal call
- Point the summary at a different Slack channel, or post only the high value cancellations if your volume makes the channel noisy
FAQs
Does this send the win-back emails itself?
What happens if the cancellation reason is vague or left blank?
Will it work if the customer still has other active subscriptions?
How does it decide that someone is high value?
Do I need to set up the lists in Klaviyo first?
Related templates
When someone leaves, we check which shared passwords they used in their final months and post a ranked rotation list to your security channel.
Every Monday, check every S3 bucket for public exposure, missing encryption and weak backup settings, then get the risks ranked in Slack.
Twice every weekday, the conversations from your social inbox land on the right HubSpot contact timelines, with a Slack recap for sales.
Every morning, find the addresses that hard bounced or filed a spam complaint, update the matching HubSpot contacts, and post a short Slack recap.
Every weekday at 4pm, spot the threads that went quiet, stage a ready-to-send nudge in your mailbox, and get a ranked Slack recap.
When you merge a fix in GitHub, this agent checks the matching dead-letter queue, replays the failed messages, and reports back on the pull request and in Slack.
Stop sending every churned subscriber the same discount.
Route each cancellation to the audience that actually fits the reason, and catch your best customers before the automated sequence does.