Proje vitrini hazırlanıyorPreparing project showcaseПодготавливаем витрину проекта

Reporting & Analytics

Churn risk score: seeing customers before they leave

An account silent for forty-one days with a renewal fifty-five days out: a field guide to building a churn risk score, from signal choice to thresholds and backtesting.

Rocketly · 2026-09-05

Tuesday, 9:15 a.m. Someone on the customer success team opens the quarterly renewal list: sixty-two accounts, three of them flagged red. One of the flags sits on an account that has been invoiced without incident for two years, has never paid late, and has barely filed a support ticket. There is a single reason for the red: forty-one days have passed with no recorded activity on that account. No call, no answered email, no meeting. The renewal date is fifty-five days out. Every number in this article is illustrative, but the question is real: is that flag an early warning, or just a record of the fact that nobody happened to call?

What follows treats a churn risk score as a decision tool rather than a prediction contest. We start with what the score actually measures and what it structurally cannot. Then we work through which signals genuinely predict departure, how to turn those signals into a number, and where to set the threshold. After that: where to look when the score is wrong, what the first forty-eight hours on a red account look like, which customers are worth saving, who owns the score week to week, and finally how to test whether the score is doing any work at all.

What does a churn risk score actually measure?

A churn risk score does not know the future. It does one thing: it tells you which of your current customers have started behaving the way customers who already left behaved before they left. That distinction looks pedantic and changes everything. "This account is going to churn" is a prophecy, and when it misses, the whole model loses credibility. "The last ninety days on this account look like the last ninety days of the accounts we lost in Q2" is an observation — checkable, arguable, and something a team can act on.

This is also what separates a risk score from a health measure. Health describes the present state: are they using the product, are they getting value, are they satisfied. Risk looks at direction — is the state improving or decaying. The same account can be both healthy and at risk: a large customer may still be a heavy user while usage has dropped every month for a quarter. Compressing both into a single number breaks both. We unpacked how the health side is built in the piece on customer health scores; the risk score is the derivative of that picture.

There is one more boundary worth naming. A score can only read behavior you can see. A budget freeze inside the customer's company, the resignation of your internal champion, a competitor's proposal landing on a desk — none of that appears in your system. That is why a well-built score never decides anything on its own; it starts a conversation. Its job is to say the right account name in the right week. What happens next is human work.

Which signals really predict churn?

It helps to sort churn signals into three families. First, contact signals: days since last interaction, an email thread that went unanswered, meetings cancelled and never rebooked, calls that go unreturned. Second, usage and transaction signals: order frequency falling, average basket shrinking, a line item quietly dropping off the reorder, silence in the run-up to a renewal date. Third, friction signals: support volume spiking or, more tellingly, dropping to zero; resolution times stretching; invoice disputes; payments drifting later month by month.

That last family hides the most underrated signal of all: payment behavior. When a customer has privately decided to leave, accounting usually finds out first. Net 30 becomes net 45, then net 60, and reminders go unanswered. We laid out how to read that same drift as its own model in the article on payment risk scoring — two scores reading the same records with different questions, each one a check on the other.

The most common mistake when collecting signals is treating them as equally serious. A support ticket is not bad news on its own; zero tickets is often worse, because it means the customer no longer thinks you are worth asking. One cancelled meeting is noise; two cancellations followed by silence is a pattern. A score should reward patterns, not incidents. Keeping the customer activity timeline open while you review accounts shows you exactly where a thread stopped, and how the raw material for the score accumulates in the first place.

How do you turn signals into a number?

A weighted sum is enough to start, and it beats a sophisticated model precisely because it is transparent. Each signal gets a sub-score from zero to one hundred, each signal gets a weight, and the total lands on a hundred-point scale. What matters is that the weights are not invented in a meeting: pull the customers you lost over the last twelve months, count how many of these signals had degraded in the ninety days before each departure, and give the heaviest weight to whichever signal degraded most consistently.

Then run the check in reverse. Did the same signals also degrade among customers who stayed? A signal that breaks just as often in both groups is not discriminating, and its weight should come down. That two-sided test is what turns a formula that "sounds reasonable" into one you can defend with numbers.

In Rocketly this logic lives in the Custom Report Builder: you pick fields from customer, deal, task and appointment sources, set filters and grouping, and see in one report how many accounts cross each signal's threshold. Change a weight and you can watch which accounts move between bands in the same place. The formula stops being a debate and becomes a report definition.

SignalExample thresholdExample weightWhy this weight
Days since last meaningful contact30 / 60 / 90 days30%Degrades most consistently before departure, and is the cheapest to measure
Drop in order or usage frequencyDown 25% vs. prior quarter25%Shows intent through behavior; least open to interpretation
Payment timing driftAverage terms +15 days20%The earliest visible trace of a decision already made
Support load and resolution timeResolution at twice the target15%Captures friction, but misleads when read alone
Time remaining to renewalUnder 90 days10%Risk is not static; the same signal costs more as the date approaches

Treat those values as a starting point, not a standard. In a subscription business order frequency is meaningless and usage frequency takes its place. In a project-based agency, days since last contact does almost all the work by itself. Derive your own weights from your own churn history.

Where should the threshold sit?

Choosing a threshold is a capacity question, not a statistical one. The right question is not "above how many points is an account at risk" but "how many accounts can we genuinely work this week." If your team can hold fifteen serious conversations a week, a threshold that flags sixty accounts makes the list unusable. An account that gets flagged and never contacted is worse than one never flagged at all: it teaches the team that the list can be ignored.

So build bands rather than a single line. The top band holds the small number of accounts that must be spoken to this week; the middle band is for watching; the bottom band simply shows up in the report. Movement between bands carries as much information as the bands themselves — the week an account crosses from watch to urgent tells you more than its absolute score ever will.

Rocketly's RFM Segmentation report is a ready-made version of this band logic: it scores customers on recency, frequency and monetary value and sorts them into Champions, Loyal, At Risk and Lost. Reading that segmentation for a few weeks before you build your own weighted score shows how many accounts pile up in each band and where your team's real capacity lands. The same prioritization discipline on the sales side is covered in the piece on deciding which lead to touch first.

When the score is wrong, where do you look?

The most common source of a false alarm is not the customer — it is the data. When the score says "forty-one days since last contact," that can mean two different things: nobody spoke to them, or somebody did and never logged it. The second case is far more common than teams expect. A rep talks on the phone, follows up over WhatsApp, logs nothing; the system sees silence and paints it red.

The second source is a broken connection. When email sync or the phone system integration stops quietly, the vein feeding the score is cut and the entire portfolio starts looking risky in the same week. That kind of mass degradation is actually a useful diagnosis: if dozens of accounts turn red at once, the problem is not with your customers. Monitoring that tells you before anyone else that a connection dropped is the invisible precondition for a trustworthy score.

The third source is definition drift. What counts as "activity" — an opened email, a replied email, a completed task? If two people on the team work from different definitions, the score becomes debatable. In Rocketly the Methodology Panel beside each metric states which records, which filters and which date field produced that number, and the Data Freshness Indicator says when the card was last updated. The argument about what the score is based on ends with reading the panel.

When a metric moves unexpectedly, the "Why did this change?" evidence drawer lists the records behind the movement — which accounts crossed a band, which dropped out. Combined with Deep Dive, where clicking a slice of a chart opens the paginated list of records behind it, "the score got worse" becomes "these fourteen accounts crossed the band because of this signal."

What happens in the first forty-eight hours on a red account?

The only output of a score is a list of names; its value shows up in what you do with that list. The work of the first forty-eight hours is diagnosis, not rescue. You read the account's last ninety days: which conversation was left unfinished, which request dragged, which contact stopped replying. Then you form a hypothesis — "our champion changed roles," or "they have bought only one line for three months and dropped the second product."

Then comes first contact, and its tone decides the outcome. Calling to ask about the renewal enlarges the risk; the customer hears sales pressure and closes up. The opening that works is sharing the observation and asking a question: "Orders on the second line stopped last quarter — did something break on our side?" That invites diagnosis instead of defense. How this becomes a standing routine rather than a scramble is set out in the article on proactive support.

The third step is writing the outcome back into the score. If the conversation happened, whatever you learned gets recorded on the account. Otherwise the same account lands on the list two weeks later with the same red flag and the team does the same work twice. With Report Alert Rules you define which metric, which threshold, which period and who gets notified; Scheduled Reports deliver the weekly list to a recipient list at the hour you choose. The warning enters someone's day instead of waiting on a screen nobody opened.

Which customers are worth saving?

Not every at-risk account is worth saving, and saying so plainly makes the score more useful. A save costs time, usually a discount, sometimes a product commitment; that budget is finite. Three questions settle it: what does this account contribute annually, how much of that contribution does servicing it consume, and does losing it enlarge another risk?

The third question is the one most often skipped. If a large share of revenue sits with a handful of customers, even losing a mid-sized account increases dependency. We covered how to measure that balance in the piece on revenue concentration; laying the churn score over that picture takes the emotion out of "who do we fight for."

For some accounts the right decision is not to fight. A customer whose cost to serve exceeds its contribution, who demands constant exceptions and wears the team down, improves the portfolio by leaving. There the score's job is not rescue but a planned exit — clean handover notes, settled balances, final deliveries closed properly. Rocketly's Customer Lifecycle Analysis maps the stages a customer moves through from first contact to first purchase, from repeat orders to going quiet, and how long they spend in each; that view separates accounts that ended naturally from those that broke early.

Who owns the score and what is the rhythm?

A score with no owner dies within a few weeks. Ownership has two halves: the formula and the list. The formula owner is usually whoever runs reporting; they maintain the weights, the thresholds and the definitions. The list owner is the team lead responsible for customers; they decide each week who speaks to which account.

Keep the rhythm plain. Once a week, a review that never runs past fifteen minutes: accounts that crossed a band this week, what last week's conversations turned up, which risks closed and which are still open. Once a month, review the formula. Once a quarter, measure how accurate the score has been.

What keeps that rhythm alive is everyone looking at the same slice of data. With Saved Report Views you store a combination of filters, date range, grouping and column layout as a view and share it with the team; the meeting starts by opening the saved view instead of rebuilding the same report every week. The sales-side equivalent of the same discipline is in the article on deal health scoring, where the rhythm again matters more than the formula.

How do you know the score is working?

The only honest test of a risk score is a backtest. Go back three months, take the accounts flagged at risk on that date, and look at today: how many actually left, how many stayed. Then invert it: of the customers you lost in the last three months, how many were on the list before they went? The first ratio tells you how clean the score is, the second how much it covers. Read only one and you will fool yourself — a score that flags everyone misses nobody and helps no one.

Do not measure with a single average. First-year customers do not behave like fifth-year customers, and pooling them hides real decay. What reading by joining period reveals is worked through in the piece on cohort analysis.

Finally, make learning from losses routine. For every departed customer, read how the score moved over its last ninety days: which signal broke first, and how late did the system catch it? That reading is the raw material for the next revision of your weights. The equivalent discipline on the sales side is described in the article on running a lost-deal debrief. Because Rocketly's Period Comparison places the previous equal-length period beside the current one in a click, you can run that reading the same way quarter after quarter.

Where should you start?

For the first week, one signal is enough: days since last contact. Build a list from that single signal, call the top ten accounts, and write down what you find. Add the drop in orders or usage in week two. Add payment drift in week three. Most teams that try to build the whole score at once abandon the formula before it ships; teams that start with one signal have a working routine by week three.

The first version of that routine can be assembled from reports that ship as standard: the Churn Risk Score report lists records that cross the risk threshold separately, and Anomaly Alerts send an in-app warning to the manager on their own when the weekly drop in new leads and deals passes the threshold you set. If you want to try it against your own data, open a free account and pull your first list this week.

FAQ

How many customers do you need for this to be worth it?

Below fifty customers you do not need a formula; your team already knows every account by name. The score earns its keep when the portfolio grows past what one person can hold in their head and renewals scatter across the calendar. Even in a small book, reporting days since last contact is still worth doing.

How often should the score refresh?

Weekly suits most businesses, because the intervention rhythm is weekly too. Daily refresh adds volatility and hands the team a list that changes every morning. What matters is that refresh frequency matches your capacity to act.

How do I cut down on false alarms?

Close the data gaps first: unlogged phone calls and broken integrations produce most false positives. Then score patterns rather than isolated incidents. Finally, tighten the threshold to match how many conversations your team can genuinely hold in a week.

Should I offer a discount to an at-risk customer?

A discount works when price is the actual cause; when the cause is unrealized value, it postpones the loss and permanently damages the margin. Run the diagnostic conversation first, find the cause, and put a discount on the table only if price is genuinely the reason and you get a commitment in return.