River
Y CombinatorBacked by Y Combinator

Sales & PartnershipsFree

Churn Analysis Tested Against Renewals

A warning sign that also appears in the accounts that renewed is not a warning sign, and the review says which is which.

Start here

River returns a document and a sheet. The document is the timeline with two dates marked: the day the customer did something they could not walk back, and the day you needed to know in order to reach your slowest save play. The sheet holds every warning sign present on the account, scored against the accounts that renewed in the same window, with the days of runway each one leaves and the play that runway can still reach.

Presence proves nothing. Six of eight churned accounts had lost their champion, which sounds decisive until you count the twenty-nine of sixty-three that kept the contract and had also lost theirs. That signal moves the odds from 11.3 percent to 17.1 percent, and it hands you most of your book. The scoring here runs every candidate signal past the same cohort of renewal decisions, keeps the ones genuinely rare among the accounts that stayed, and prints the raw fractions beside every rate.

Written for the customer success lead running the review, the account manager who has to explain the loss, and the founder who wants the review to change something. It ends with a query rather than a lesson, so the same rules run against today's book and return names. The forward-looking read on a live account is the renewal risk brief, the expansion side is the expansion brief, and the meeting this belongs in is the QBR pack.

Why a list of warning signs is the wrong output

The move is borrowed and old. When investigators traced a hepatitis A outbreak to one restaurant, asking the sick which dishes they ate only told them which dishes were popular, so they interviewed people who ate there and stayed well. Salsa: 94 percent of cases against 39 percent of controls. The key feature of analytic epidemiology is a comparison group, and a churn review that reads only the accounts that left has no comparison group at all.

Rarity is only half of it. What a signal is worth depends on how common the outcome is in the population you apply it to, since the lower the prevalence, the lower that value for the same detection rate. At an 11.3 percent churn rate almost every named signal stays under 25 percent. The second column is runway. A signal is only a save trigger if it arrives with more days than your slowest play needs, and the reliable ones rarely do.

Brackenhall Retail Group, 184,000 dollars, notice on 3 October. The account was lost on 6 June, when somebody exported 41 times their own twelve-month median. Their three sharpest signals, at 62 to 80 percent, all arrived inside 31 days, and the exec play takes 34. The usage rule did fire on 8 May with 29 days left, which was time enough for three of the four plays and not the one the team chose.

How it works

  1. Build the cohort

    Every renewal decision in the trailing window, kept and lost, assembled before anyone reads the churn.

  2. Date the loss point

    Find the first act the customer could not reverse, which is rarely anywhere near the date of notice.

  3. Score against the kept

    Each signal's frequency among accounts that stayed, turned into a rate you can compare to the base rate.

  4. Match play to runway

    Median lead time per signal set against how long each of your own save plays takes to arrange.

What you get

  • Every signal scored against the accounts that renewed in the same window, raw fractions shown
  • The loss point dated from the first act the customer could not walk back
  • A detection deadline counted backwards from how long your slowest save play takes to arrange
  • Median runway per signal, so a reliable signal that arrives too late is labelled that way
  • Where each signal's data lived, and whether anybody ever queried it before the notice
  • The surviving rules run across today's book, returning names and expected true positives
  • The strongest surviving signal is silence in [a real request register](/templates/voice-of-customer-to-product-pack), not another dashboard count

Common questions

We have eight churned accounts. Is that enough to score anything?

It is enough to rank and not enough to test. Every rate here is printed beside its fraction, so 5 of 8 never appears as 62 percent on its own, and any signal resting on a cell under five cases is marked as provisional. Ranking eight losses against sixty-three renewals still beats reading the eight alone.

Champion departure is on every churn checklist there is.

It was on this account too, 232 days before the notice. It was also on 29 of the 63 accounts that renewed, which puts it at 17.1 percent against a base rate of 11.3. As a trigger it flags 51 of 61 live accounts. It is a real signal and it is nowhere near strong enough to spend an escalation on.

Our strongest signals arrive too late to act on. So what use are they?

They correct the forecast, which is a different job from saving the account. Two or more irreversible acts runs at 83 percent and flags three accounts holding 412,000 dollars. Two tripped it inside the last 34 days and get one attempt. The third tripped it 71 days ago, so the honest move is planning the replacement revenue.

We have no play book with lead times attached.

Then the deadline cannot be computed, which is why the form asks for one. Estimate from the last three saves you actually ran: how many days passed between deciding and the customer feeling it. Rough numbers are fine. Without them every signal looks actionable, which is how a review ends in a resolution nobody can run.

Is this not just blaming a CSM with the benefit of hindsight?

The opposite, because the deadline comes from your play book rather than from the outcome. Here it lands on 3 May and the verdict is that one signal fired on 8 May with 29 days of runway, and the team reached for the play that needs 34. That is a mismatch in the process, not a missed catch.

Some of this was never recorded anywhere. Then what?

Every signal lands in one of three buckets: on a dashboard somebody read, held in a system nobody queried, or not recorded at all. On the worked account four of the four highest-scoring signals sat in the second bucket, so the fix was a scheduled query rather than a new tool or a new health score.

How is this different from scoring renewal risk?

Risk scoring reads one live account against a model. This reads one dead account against its cohort to work out which inputs that model should have. Run this after a loss and it produces the rules; the renewal risk brief applies them forward. The lost-deal equivalent is the deal post mortem.

Churn Analysis Tested Against Renewals

Fill in the form and your workspace opens with the work already underway.