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 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
- 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.
- Set Top-N to
100and 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). - 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.
- 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.
- 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.
- 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
nullscores until then, which tier as Low risk, not “safe.”
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 thecontacts: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
- Churn-risk scoring — the model contract, per-contact scores, and the raw API surface behind this console
- CDP predictive models — train, score, and schedule the churn-propensity model itself
- Audience hub — where Churn risk sits among the other audience consoles
- Campaign end-to-end — target the saved retention segment with a win-back send
- Segments API reference — filter-based narrowing of a saved cohort
- CDP API reference — the full churn-risk and predictive-models endpoint contracts