# A plan change is not churn

Churn is the number everybody watches, so it is worth being strict about what goes into it.
A surprising share of "churn" in subscription reports is customers who never left: they
changed plans, changed billing interval, or were moved to a new subscription by your own
checkout.

## How a plan change looks in Stripe

There are two ways to move a customer from Starter to Team, and they leave different traces:

1. **Update the subscription:** the item's price changes. One subscription, one customer,
   a proration on the next invoice.
2. **Cancel and create:** the old subscription ends, a new one starts, often within the same
   minute. Many checkouts and customer portals do this, especially when the billing interval
   or the currency changes.

A tool that counts per subscription sees the second way as a churned customer and a new one.
Customer churn goes up, new business goes up, and net new MRR is right by accident. Do that
for a year and both your churn rate and your "new customers" are inflated by the same people.

## Count per customer, and net what happens together

Two rules fix most of it:

- **MRR belongs to the customer, not to the subscription.** A customer with a subscription
  that ended and one that began is a customer whose MRR went from 149 to 399: an expansion of
  250. If they went from 399 to 149, a contraction of 250.
- **What happens within a short window is one event.** sumwerk nets the changes of one
  customer within an hour into one movement (or none, if nothing changed in the end). The
  cancel-and-create pair becomes what it is.

| What happened | Per subscription | Per customer, netted |
|---|---|---|
| Starter cancelled 10:02, Team created 10:02 | churn −149, new +399 | expansion +250 |
| Monthly → annual, same price per month | churn, new | nothing: MRR did not change |
| Two seats removed | contraction | contraction |
| Cancelled in March, back in July | churn, new | churn in March, **reactivation** in July |

The last row matters as much as the first: somebody who comes back is not new business. They
knew you, left and returned, and that says something different about your product than a
first purchase does.

## What is churn, then

A customer churns when their MRR goes to zero and stays there: the last paying subscription
ended. Not when it is scheduled to end (that is MRR at risk, and worth a call), not during a
trial, and not while Stripe is still retrying a failed payment (at risk, not gone). The day
of churn is the day the subscription ended, not the day somebody clicked cancel.

Everything that reduces a paying customer's MRR without taking it to zero is contraction:
fewer seats, a smaller plan, a new discount. Keep churn and contraction apart. Gross revenue
retention counts both, but you act on them differently: one is a lost customer, the other is
a customer you still have.

## Plans over time

Once plan changes are movements of a customer, a second question becomes answerable: what was
each plan worth, month by month? Not by the plan customers have today (that rewrites the past
every time somebody upgrades) but by what each subscription item was worth on the day. A
customer who moved to Team in March counts under Starter until March. Then a plan that
shrinks because its customers upgrade looks different from one that shrinks because they
leave, which is the whole point of looking.
