# 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.

- Workflow type: agent
- Services: ChartMogul, HubSpot, Slack Bot
- Categories: Customer Support, Sales
- Published: 2026-08-04

## What it does

- 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 you'll need

- 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

## Prompt

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.

## How to customize

- 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.

## Example output

Overnight revenue at risk: $1,690 MRR across 3 accounts

1. Northwind Logistics | CHURNED | $840 MRR lost | HIGH VALUE
   LTV $18,400 · Growth plan · Owner: Dana Reyes
2. Acme Corp | DOWNGRADED | $700 MRR lost | HIGH VALUE
   Now $300 MRR · LTV $22,100 · Scale to Starter · Owner: Sam Patel
3. Bluefin Studio | DOWNGRADED | $150 MRR lost
   Now $450 MRR · LTV $7,900 · Pro to Basic · Owner: Priya Nair

3 follow-up tasks created in HubSpot, all due today.

## FAQ

### Does this cover downgrades, or only customers who cancel completely?

Both. A downgrade is usually the earliest sign that an account is slipping away, often weeks before a full cancellation, so it is included alongside outright churn. If you would rather only hear about cancellations, that is a one line change.

### What happens on a day when no customers churned?

Nothing gets posted. The workflow checks, finds no losses and stops quietly. That way a message in the channel always means something real happened and the team does not learn to ignore it.

### Who gets the follow up task?

Whoever owns that company in HubSpot. The task is due the same day and has the lost revenue in the title, so it is obvious how urgent it is from the task list. If no owner or matching company can be found, the account still appears in the Slack summary marked as unassigned.

### Will this work if my billing runs through Stripe or another payment system?

Yes. As long as your billing data reaches ChartMogul, it does not matter what is upstream. ChartMogul is doing the revenue tracking and this workflow reads the results.

### Could it create duplicate tasks for the same customer?

It runs once a day and only looks at the previous 24 hours, so each churn or downgrade event is picked up in a single run.

Use this prompt in General Input: https://www.generalinput.com/prompts/daily-churn-and-downgrade-watchlist-for-customer-success