Churn indicators in product usage.
Active days, the last core action and features dropped: the usage signs that come before a cancel, and how to read them next to Stripe billing.
Active days falling
Active days is the number of days in a period on which an account did something meaningful in your product. It is the steadiest usage indicator, because it ignores one-off bursts and tracks the habit. When the habit fades, the subscription usually follows.
How to measure it well:
- Count per account, not per user. On a B2B plan, a day counts if anyone on the account did real work. One person on leave shouldn't raise an alarm; the whole team going quiet should.
- Count real work, not logins. Opening the app out of habit isn't the same as using it. Count days with at least one meaningful event.
- Compare with the account's own baseline. For example, the last 4 weeks against the 8 weeks before. A team that has always used you twice a week is fine at twice a week.
- Look for a steady decline, not one quiet week. Holidays, launches and sick days make single weeks noisy. A slide across several weeks is the signal.
Seasons matter too. Some customers go quiet every summer or every December, and a drop inside those months isn't a warning on its own.
North Metric reads falling usage as usage drops: a steady decline against each customer's own baseline, with usage-only customers shown as fading. You mark your known quiet months, and a drop inside them shows as "Seasonal?" instead of raising risk on its own.
The last core action
The core action is the one thing customers pay you for: sending an invoice, publishing a post, running a deploy, calling your API. The time since an account last did it is often the sharpest usage indicator you have, because logins can carry on out of habit while the real work moves somewhere else.
To set it up:
- Pick one action that means value delivered. Not a login or a page view. If you sell more than one product, pick one action per product.
- Track it as a named event with the account ID, so you can roll it up per customer.
- Learn each account's normal gap. A team that runs payroll once a month goes weeks between core actions and is perfectly fine. A team that sends invoices every day is not fine after a week of silence.
- Flag when the current gap runs well past the normal one. For example, three times the account's usual gap.
Watch for the pattern where logins continue but the core action stops. It can mean the customer is exporting their data, checking old records or comparing options, rather than working in your product.
The core action is also the cheapest indicator to add if you track nothing today. One named event gives you a usage signal you can act on, and it is the base for everything else in this guide.
See which customers already show warning signs in your Stripe billing.
Features dropped
A customer who stops using a feature they relied on has often replaced it with something else. Feature drops are narrower than active days but more specific: they tell you what changed, and that tells you what to say.
Track the handful of features that matter most to keeping customers, usually the ones closest to your core action, and watch them per account:
- A regular feature goes quiet. Used most weeks, then not for several weeks in a row.
- Breadth narrows. The account uses fewer distinct features than it did. A narrower account is easier to replace with a cheaper tool.
- An integration is disconnected. Removing a connection to their other tools takes a deliberate step.
- A new setup stalls. In the first billing cycles, a key feature that never gets switched on is an early warning, not a late one.
The right move after a feature drop is usually help, not a discount. A customer who stopped using something has a usage problem, not a price problem. A short note that names the feature and offers a call or a guide fits better than an offer.
Feature-level tracking needs named events. If you only track page views today, start with the core action and add features one at a time, beginning with the one your best customers use most.
Reading usage next to billing
Usage tells you who is drifting. Billing tells you what it costs and how much time you have left. Read them together and the next step is usually clear:
| Usage | Billing in Stripe | What it usually means | Move |
|---|---|---|---|
| Falling | No change | Drifting, still time | Check-in note with one question |
| Falling | Seats or plan cut | Leaving in steps | Personal note from the founder |
| Steady | Failed payment | A card problem, not a decision | Card-update note when retries end |
| Falling | Cancel scheduled | Decision made | Save email before the period ends |
| Steady | No change | Safe | Leave them alone |
How you read usage depends on how each customer pays:
- Flat or seat plans. Usage lives in your product, so you need event tracking. A seat cut in Stripe after weeks of falling active days confirms what usage already showed.
- Usage-billed plans. Usage is the bill, but the invoice lags by a full billing period. If you bill through Stripe Billing Meters, read metered usage as it comes in rather than waiting for a smaller invoice.
- Hybrid plans. The platform fee can stay flat while the usage part fades. Watch the usage part on its own.
Then weigh each warning by money. For example, a usage drop on a $3K/mo account matters more than the same drop on a $50/mo account, so rank flagged customers by MRR times risk. If you want to roll these signals into one number, the guide to building a customer health score shows how to pick and weight them.
North Metric matches the usage source to how each customer pays: PostHog for flat and seat plans, and Stripe Meters for usage-billed and hybrid plans, with PostHog optional there for earlier warning. See integrations for what it reads from each.
Fair questions.Straight answers.
For most products, the time since an account's last core action, because it tracks the value a customer gets, not their logins. On usage-billed plans, metered usage against the account's own baseline does the same job. In billing, a scheduled cancel outranks everything.