Daily churn and downgrade watchlist for customer success
Every weekday morning, get a ranked list of accounts that churned or downgraded overnight, with follow-up tasks already assigned to their owners.
Every weekday at 8:03am, build a ranked churn and downgrade watchlist for our customer success team and deliver it as HubSpot tasks plus a single Slack summary. Use a cron trigger. ChartMogul does not emit outgoing webhooks and is not available as a polling source, so the schedule is the trigger and the workflow pulls the data itself. Do not write this as a 'when a customer churns in ChartMogul' event trigger.
Start with ChartMogul List Activities to pull every MRR-affecting activity from the previous 24 hours. Keep only the churn and contraction events, and discard new business, expansion and reactivation. Contraction means a downgrade rather than a full cancellation, and it matters as much as churn because it is the earlier warning signal, so do not narrow this to cancellations only.
If there are no churn or contraction events in that window, stop the run without posting anything. Do not send an empty digest or a 'nothing to report' message. The channel stays quiet on clean days so that any message in it means something real happened.
For each affected account, enrich it in ChartMogul. Use Search Customers by Email when the activity gives you a customer email address, and fall back to List Customers when it does not. Capture current MRR, lifetime value and the plan name for each account.
Then find the matching CRM record. Use HubSpot Search Companies against the account name or domain, and use HubSpot Search Contacts against the customer email when the company lookup returns nothing or is ambiguous. Read the record owner off whichever match you land on.
Create a same-day follow-up task for that owner with HubSpot Create Task. Assign it to the owner you found, set the due date to today, and put the lost MRR amount in the task subject so the size of the loss is visible in a task list without opening it, for example 'Churn follow-up: Acme Corp, $840 MRR lost'. Associate the task with the company record you matched. If no owner or no CRM record can be found for an account, skip the task for that one and mark it as unassigned in the Slack summary rather than failing the whole run.
Finish with one consolidated Slack message using the Slack Bot Send a Message operation to the customer success channel. Rank the accounts by MRR at risk, highest first. For each account give the name, whether it churned or contracted, the MRR lost, its current MRR, lifetime value, plan and the task owner. Open the message with the total MRR lost overnight and the number of accounts affected. Flag any account whose lost MRR is above our high-value threshold of $500 so the worst cases stand out. Post exactly one message covering every account, never one message per account.
Example output
Additional information
What does this prompt do?
- Checks every weekday morning for accounts that cancelled or downgraded in the last 24 hours, so nobody has to refresh a dashboard to find out.
- Pulls each account's current revenue, lifetime value and plan so you can see what is genuinely at stake before you reach out.
- Finds the matching company and its owner in your CRM, then creates a same day follow up task with the lost revenue right in the task title.
- Posts one Slack summary ranked by revenue at risk and flags your biggest losses. On days when nothing was lost it posts nothing at all.
What do I need to use this?
- A ChartMogul account with your subscription billing data flowing into it
- A HubSpot login that can create tasks and see which team member owns each company
- A Slack workspace and the channel where you want the morning summary to land
- The Slack app added to that channel so it is allowed to post there
- A revenue figure that counts as a high value loss for your business, used to flag the worst cases
How can I customize it?
- Change when it runs, for example earlier in the morning or every day including weekends.
- Set your own high value threshold so only the losses that really matter get flagged.
- Narrow it to full cancellations only, or keep downgrades included as an early warning signal.
- Send the summary to a different channel, or as a direct message to the customer success lead.
FAQs
Does this cover downgrades, or only customers who cancel completely?
What happens on a day when no customers churned?
Who gets the follow up task?
Will this work if my billing runs through Stripe or another payment system?
Could it create duplicate tasks for the same customer?
Related templates
Every weekday, find every unpaid JobNimbus invoice, email each customer one reminder that gets firmer as it ages, and post a receivables summary to Slack.
Every weekday at 7am, your active courses are checked for missing work, silent logins, and slipping grades, with a ranked list sent to your advising channel.
Every hour, find the tickets closest to breaching, leave a nudge on each one, and post a ranked at-risk list to your support channel.
Every weekday afternoon, each student who is behind gets a warm, personal message in their Canvas inbox listing exactly what they owe.
Every Monday at 8am, see exactly which assignments have work waiting, sorted worst first, posted to Slack and logged to a spreadsheet.
Every weekday morning we compare your password vault against your HR records and suspend access for anyone who has already left.
Stop finding out about churn a week too late.
Put every lost and shrinking account in front of the right owner the morning it happens, ranked by what it costs you.