The Churn Risk tab scores every active, on-hold and pending-cancellation subscription from 0 to 100 and shows you the signals behind each score, so you can act on the subscribers most likely to leave before they do.
Summary cards
| Card | What it means |
|---|---|
| High risk | Subscriptions scoring 70 or above — the strongest combination of risk signals: failed payments, on-hold status, or an already-scheduled cancellation. |
| Medium risk | Subscriptions scoring 40 to 69. Worth watching: usually a combination of signals, such as an on-hold subscription with an overdue payment. |
| Low risk | Subscriptions scoring below 40. At most minor signals, such as a manual-renewal subscriber. |
| MRR at risk | Combined monthly recurring revenue of every high-risk subscription — what you stand to lose if none of them recover. |
MRR at risk uses the same monthly recurring value as the Overview tab — each subscription’s recurring total normalised to a year by its billing period, divided by its interval, then divided by 12. See Metric Definitions.
The subscriber table
The Subscribers by risk score table lists one subscription per row, highest score first, with the Subscription number, Customer, Product, Status (Active, On hold or Pending cancellation), its MRR, the Risk score and band, and Why — the specific signals that produced the score.
Use the Show filter above the table to narrow it to All, High, Medium or Low.
The signals and their weights
The weights are published deliberately: a score you can inspect is a score you can trust and argue with.
| Signal shown in Why | Points | When it applies |
|---|---|---|
| Cancellation already scheduled | 95 — replaces the score | The subscription is pending cancellation. This is not a prediction — it has already happened. See the note below. |
| Subscription on hold | 25 | The subscription status is on-hold, usually after a failed payment. |
| N failed renewal payments | 15 each, capped at 35 | A renewal payment failed within the last 90 days. One failure scores 15, two score 30, three or more score 35. |
| Payment overdue by N days | 20 — flat | The scheduled payment date passed more than 3 days ago. The grace period stops a gateway retrying overnight from being flagged. |
| No successful renewal yet | 15 | The first renewal was due and never landed. |
| Still within its first billing cycle | 10 | Too early to have renewed yet — mild early-life risk. |
| Manual renewal, no saved payment method | 10 | The subscriber has to pay manually each cycle, which many never do. |
1. "Cancellation already scheduled" replaces the score rather than adding to it. A pending-cancellation subscription scores exactly 95, whatever else is true of it — the other signals are not evaluated. So a subscriber with a scheduled cancellation and three failed payments still shows 95, not 130.
2. "Payment overdue by N days" does not scale with N. It is a flat 20 points once the payment is more than 3 days late. The number of days is shown because it is useful to know, not because it changes the score.
Why scores never exceed 100
Adding every signal at its maximum gives 115, so the final score is clamped to the range 0–100. In practice a subscription carrying almost every signal lands at 100 rather than 115, and the difference between two such subscriptions is not visible. Both are as high-risk as the model can express.
Tuning the weights
The weights can be adjusted with the zorem_subs_churn_signal_weights filter, which receives an array with exactly these keys and defaults:
| Key | Default | Controls |
|---|---|---|
on_hold | 25 | Subscription on hold |
failed_renewal | 15 | Points per failed renewal |
failed_renewal_max | 35 | Ceiling for failed renewals however many there are |
payment_overdue | 20 | Payment more than 3 days overdue |
no_renewal_yet | 15 | First renewal due and never landed |
manual_renewal | 10 | Manual renewal, no saved payment method |
first_cycles | 10 | Still within the first billing cycle |
Return the whole array with the values you want; anything you leave out keeps its default. Band thresholds (70 and 40) and the fixed pending-cancellation score of 95 are not filterable. Scores are recalculated on the next run — use Recalculate to see the effect immediately.
When scores are calculated
- Nightly — every open subscription is rescored as part of the plugin’s daily job (the
zorem_subscription_daily_snapshotevent). - About 5 minutes after a state change — when a subscription’s status changes, a renewal payment fails, or a renewal payment completes, a rescore is queued. It is debounced, so a burst of events triggers one recompute rather than many.
- On demand — the Recalculate button at the top of the tab rescores everything immediately, without waiting for the scheduler.
The first time you open the tab you will see No risk scores yet with a Calculate risk scores button. Click it rather than waiting for the nightly run.
The nightly and post-change rescores both run through WP-Cron. On a site where cron is disabled or unreliable, scores will go stale — the Recalculate button always works regardless, because it runs immediately.
Using the report
- Failed payments and overdue subscriptions are the most recoverable — a dunning email or a request to update the card often saves them.
- Manual-renewal subscribers are worth converting to automatic payment; that single change removes a standing 10-point risk.
- Pending cancellations at 95 are not predictions — they are decisions already made. Treat them as a win-back list, not a prevention list.
- MRR at risk is the figure to take to a revenue meeting. It is the concrete cost of not acting.
Troubleshooting
| Problem | What to check |
|---|---|
| No scores appear after clicking Calculate | The store may have no open subscriptions in the scored statuses (active, on-hold, pending-cancel). Check that subscriptions exist in those states. |
| Scores look stale and never update on their own | The nightly and debounced rescores use WP-Cron. If DISABLE_WP_CRON is set without a real server cron, only the Recalculate button will refresh them. |
| MRR at risk is 0 but there are high-risk subscriptions | MRR excludes subscriptions on a free trial and lifetime subscriptions, and counts only active ones. A high-risk list made up of on-hold or pending-cancellation subscriptions can legitimately carry no MRR. |
| A subscription scores 95 and the Why column shows only one signal | Expected — a scheduled cancellation replaces the score, so the other signals are not evaluated or listed. |
| Recalculate times out on a large store | Scores are written in chunks, but a very large subscriber base can exceed the request limit. Let the nightly job handle it, or raise the PHP time limit temporarily. |
| The counts here disagree with the Upcoming Revenue tab | Expected — this tab scores pending-cancellation subscriptions; the forecast excludes them. |