Skip to main content

Churn-risk console

The Churn-risk console (Audience → Churn risk) is the operator surface for retention targeting: it ranks every still-active contact by how likely they are to disengage next, tiers each score into a risk band, and saves the top-N as a static segment your retention campaigns and audience exports can target. It is the page you open to answer “who is about to leave, and who do I win back first.” Churn risk is a tenant-owned control: your organization decides which contacts to score, where to set the top-N cutoff, and which retention segment to save and send to. Orbit ranks the population and persists the segment; the decision to reach out, and the message that lands, belongs to your team. Scoring decides who to win back, never how to send — dispatch always stays on the softswitch. This guide is the operator walkthrough of the console. For the underlying model, its training loop, and the raw API surface, see Churn-risk scoring; for the broader hub, see the Audience hub.

1. What the model returns

The console runs a trained churn-propensity model over your still-active contact population. Each scored contact carries one value:
  • Churn probability — a number from 0 to 1, where higher means the contact is more likely to disengage. The model learns from contacts whose lifecycle outcome is already resolved (churned vs still active) over behavioural signals: tenure, recency, message and event volume, and event variety.
The probability is bucketed into one of three risk tiers, and the console badges and filters every row on the same tier so the ranked table, the badge, and the bar fill always agree: The tiers are the operator-facing bands the retention page badges and filters on. A contact with no score row — an un-scored contact, or one the model could not fit — buckets to Low risk by design: the absence of a score is never evidence of churn, so treat a blank row as “no signal yet,” not “safe.” For the full model contract, the per-contact score object, and the companion scores (buying intent, propensity, lifetime value) the same pass writes, see Churn-risk scoring.

2. Walkthrough of /audience/churn-risk

Open Audience → Churn risk and the page splits into two cards: the model and the at-risk population.

Step 1 — Train the model

Train model fits the churn-propensity model on this workspace’s resolved-outcome history. After it trains, the card shows the sample count, the AUC (how well the model separates churned from active contacts), and the churn share of the training rows — the diagnostic read on how much of your history the model learned from. If there isn’t enough resolved-outcome history yet, the card shows a warning instead of an error: once more contacts reach a settled lifecycle stage (active or churned), training will succeed. You do not need to train on every visit — the scored population reads the most recent fit, so train once after enough outcomes land and re-train on your own cadence when the population shifts.

Step 2 — Score the population

Set Top-N (the number of highest-risk contacts to rank, between 1 and 500) and press Score population. The card returns the ranked table: each row is one still-active contact, highest-risk first, with the contact name, an inverted Churn probability bar (fuller means higher risk), and the Risk tier badge. A summary line above the table shows how many still-active contacts the model scored and how many rows came back. Use the tier filter (All tiers / High risk / Watch list / Low risk) to narrow the table to one band — the filter narrows the rows in view; it does not change the top-N the segment save will capture.

Step 3 — Save the top-N as a segment

Save top N as a segment materializes the ranked population the table shows (the same top-N) as a new static segment — the “churn-risk” audience. A success alert names the segment and the member count, and the segment is ready for the segments list, the campaign and journey audience pickers, and the audience-activation and reverse-ETL exports. The segment is a snapshot: membership is frozen at save time, so a retention blast goes to exactly the cohort you ranked. The model keeps scoring the population on its cadence — re-score and re-save to pick up new high-risk contacts, or drop the saved segment into a campaign as-is for a one-off win-back.

3. Worked example: rank → segment → retention campaign

  1. Open Audience → Churn risk and press Train model. After it trains, note the AUC and sample count — if the churn share of training rows is very low, the model had few positive examples and the ranking will be rougher.
  2. Set Top-N to 100 and press Score population. The table ranks your still-active contacts by churn probability, highest first; the top rows are the High risk tier (0.60 and above).
  3. Filter to High risk to see only the contacts the model rates as most likely to churn. Suppose 42 of the 100 sit in that tier.
  4. Reset the filter to All tiers (so the save captures the full top-100 you scored) and press Save top 100 as a segment. The success alert confirms the segment and the member count.
  5. Open the segment from the segments list — or target it directly from a campaign or journey audience picker — and build the win-back send. See Campaign end-to-end for the send side.
  6. Re-score and re-save on your retention cadence (daily is enough — see the limits below) and your retention audience stays current without touching the send path.

4. Limits and failure modes

Plan around four limits before you build a retention flow on the ranking:
  • Model window. Scores reflect the most recent scoring pass, not real-time behavior. A contact whose last event was minutes ago still carries the score the last pass wrote — re-score to refresh, and do not read the score from a webhook hot path expecting a fresh value. See Churn-risk scoring — cadence.
  • Top-N banding. The console ranks and tiers in one pass; the tier filter narrows the table in view but the segment save captures the Top-N you scored, not the filtered subset. To save only the High-risk tier, score a Top-N large enough that the high band is fully represented, then narrow with segment filters downstream — see Segments API reference.
  • Segment recency requirement. The saved segment is a static snapshot, so a retention send targets exactly the cohort you ranked. Membership does not auto-refresh — re-score and re-save on your cadence to pick up new high-risk contacts, or the segment ages against the live population.
  • Insufficient data. A workspace with no resolved outcomes (no contacts whose lifecycle has settled to active or churned) cannot train the model — the card shows the warning rather than an error. Wait for more outcomes to land, then train; the population read returns null scores until then, which tier as Low risk, not “safe.”
For the full failure-mode list — null scores, stale timestamps, scope and role errors, the 500-contact cohort cap, and the empty-cohort response — see Churn-risk scoring — failure modes.

Access and scope

The console renders for the owner, admin, and developer roles — the same gate as the sibling predictive-models page, because the table reads PII-bearing contact and score rows. The reads require the contacts:read scope; saving a segment requires contacts:write. A viewer seat does not see the page; a seat missing the scope gets a 403 that names the missing scope. The same endpoints back the dashboard and the API — see Churn-risk scoring for the full endpoint contract, and the CDP API reference for the churn-risk and predictive-models schemas.

See also