Retention & Survival Curves
A subscriber who cancels in month two is worth a fraction of one who stays a year. This tool shows how long your customers actually stay, which sign-up groups hold on best, and why the churn rate most companies quote is wrong.
OVERVIEW & WHAT THIS TOOL SOLVES
Dividing this year's cancellations by total customers—or averaging tenure across only the customers who have already cancelled—gives a systematically wrong retention picture because recent sign-ups haven't had time to churn yet. The Retention & Survival Curve Lab aligns staggered customer cohorts at Tenure Period 0 and applies the Kaplan–Meier estimator to handle right-censored active customers properly, pairing survival curves with cohort drift heatmaps and Log-Rank segment tests.
🎯 Questions It Answers
- What percentage of customers truly survive past Month 3, Month 6, and Month 12 once right-censoring is accounted for?
- Where is the sharpest drop-off cliff in the customer lifecycle (period hazard rate
h_t), and what is the median customer lifetime? - Do acquisition channels, plans, or sign-up cohorts differ significantly in retention (Log-Rank test and cohort drift audit)?
📂 What Data You Need
- Subscription / Contract Records: Customer tenure duration (
t), churn event indicator (1 = churned, 0 = active/censored), and optional segment/cohort - Transaction Log Mode: Raw order dates per customer with a tunable inactivity churn rule (
kmissed periods = churned) - Landmark Case Studies: Pre-loaded subscription, repeat-order, heavy-censoring, and segment-comparison datasets
💡 What You'll Discover
- Kaplan–Meier Survival & Hazard Curves: Step-by-step retention probability
Ŝ(t)with Greenwood 95% confidence bands - Median Lifetime & RMST: Half-life tenure and Restricted Mean Survival Time (expected active periods up to horizon
T) - Cohort Heatmap & Log-Rank Test: Sign-up cohort quality drift detection and formal chi-square comparison across segments
🔍 Key Nuances & Common Traps to Watch For
What is Right-Censoring? A customer who signed up 4 months ago and is still active today has not "churned at 4 months" and has not "stayed for 12 months"—their ultimate lifetime is right-censored at period 4. Kaplan–Meier keeps them in the at-risk denominator through period 4 and removes them cleanly afterward without counting them as a cancellation.
- Why Naive Retention Flatters Growing Businesses: A flood of new sign-ups last month inflates your active denominator today, making a 45% annual churn problem look like 15% churn.
- When Median Lifetime Is Undefined: If more than 50% of customers are still active at the end of your observation window, the survival curve never crosses 0.50—report Restricted Mean Survival Time (RMST) instead of inventing a half-life.
- Contractual vs. Non-Contractual Churn: In grocery or retail repeat-buying, no one calls to cancel; use the inactivity window slider (
kperiods) to test how sensitive your survival curve is to the churn definition.
📐 Under the Hood: Model Equations & Variable Definitions
1. Kaplan–Meier Survival Estimator & Period Hazard Rate
💬 Read it in plain English: At each tenure period t_i, the conditional survival rate is 1 minus the fraction of at-risk customers who churned (d_i / n_i); multiplying those step survival rates from period 1 to t gives cumulative retention Ŝ(t).
2. Restricted Mean Survival Time (RMST) & Log-Rank Segment Test
💬 Read it in plain English: RMST sums the area under the survival curve up to horizon T to estimate expected active periods per customer, while the Log-Rank test compares observed vs. expected churn counts at every time step across customer segments.
Step 1 CHOOSE YOUR DATA
Each case is a real retention question. Start with Parcel & Pantry if this is your first time — a meal-kit company whose March and April sign-ups look suspiciously bad. Or bring your own file: either one row per customer per period, or one row per customer with a duration.
Use a Case Study
Upload Your Data
Drag & Drop raw data file (.csv, .tsv, .txt)
Two shapes are accepted. An activity panel has one row per
customer per period (customer_id, period,
is_active). A duration table has one row per
customer (customer_id, duration,
churned). Optional columns are picked up automatically:
signup_cohort (or cohort), segment and
spend. Without a cohort column, an activity panel groups
customers by the period they first appear in. Files of up to 250,000 rows
are accepted.
Coming from the CLV tool? Its files work here unchanged.
Step 2 DEFINE WHAT “GONE” MEANS
This comes first because it decides everything after it. There is no statistical answer to it — it is a business judgement, and the honest thing is to make it on purpose, write it down, and check how much it mattered.
What kind of business is this?
How long someone has to go quiet before you give up on them. Shorter is twitchier; longer waits around for people who were never coming back.
Settings
Splits the curve so you can see whether one group leaves sooner than another.
The age the headline numbers are quoted at. Pick one your data can actually support.
🤔 Try this:
- Load Crave (a delivery app) and leave the rule at 3 quiet periods. Note the median lifetime.
- Now drag the slider to 1. The median collapses — on this data from about 21 periods to about 3.
- Look at the reactivation line underneath. At a one-period rule almost every customer you just declared “lost” came back. The rule is not measuring churn, it is measuring people who skipped a month.
- Nothing about the customers changed between those two runs. Only your definition did.
Step 3 START HERE
The short version first: how long customers stay, when you lose them, and whether it is getting better or worse. Everything below this box is the evidence.
How honest is your churn rate?
The same data, counted three ways, at the age you chose. Count them as retained assumes every unfinished customer stays forever — too optimistic. Drop them throws those customers out entirely — too pessimistic. Kaplan-Meier uses each one for exactly as long as you watched them, which is why it lands between the other two.
📊 How to Read This Chart
- The gap between the outer bars is your margin of error from sloppiness alone — before any sampling uncertainty.
- Three identical bars is a real answer, not a broken chart. The shortcuts can only go wrong when somebody is still unfinished before the age you are quoting. If every customer in the file was watched for the same length of time, there is nothing yet for them to mishandle — push the horizon further out and watch them come apart.
- A wide gap means the answer depends on how you treat unfinished customers, so the method has to be stated alongside the number.
The survival curve
Start at 100% of customers and read left to right. The line is the share still with you at each age. Every step down is a group of customers leaving; the small ticks are customers whose story ended while still active — they are not losses, they are people you simply stopped observing. The shaded band is uncertainty, and it widens as fewer customers remain.
📊 How to Read This Chart
- The steep bit at the start is the onboarding cliff. On most subscription data this is the single biggest drop on the chart.
- Where the line crosses 50% is the median lifetime: the age by which half your customers have gone. If the line never gets there, there is no median, and this tool will refuse to invent one.
- The faded right-hand end is drawn faded on purpose: fewer than 20 customers remain, so that part of the curve can swing wildly on one person leaving. Never quote a lifetime from it.
- A long flat stretch is good news — the customers who made it that far are staying.
When do you lose them?
The share of remaining customers who leave in each period. This is a different question from the curve above: it asks not “how many are left” but “how dangerous is this particular month”. A tall first bar means your problem is onboarding, not loyalty.
📊 How to Read This Chart
- A tall first bar then a low flat run is the normal shape. The people who survive the first period are a different, stickier population.
- A bar that spikes later is worth investigating — an annual renewal, the end of a discount, a contract anniversary.
- Late bars bounce around because few customers remain. Read them with the at-risk counts beside the curve above.
Cohorts: is it getting better or worse?
One row per sign-up group, columns are age since joining. Read down a column to compare groups at the same age — that is the only fair comparison, because a group that joined last month cannot be judged at month six. The blank triangle is not missing data; it is future that has not happened yet.
📊 How to Read This Chart
- A pale row is a cohort that churned faster than the others. Before blaming the calendar, ask what was different about how those customers were acquired: a promotion, a channel, a price.
- Rows getting darker as you go down means recent cohorts hold on better — whatever you changed is working.
- Compare like with like. The bottom rows are short because those customers only just arrived, not because they all left.
Do some groups leave sooner?
One curve per group, with a log-rank test asking whether the difference in timing is bigger than luck would produce, and RMST — the average time retained within your chosen horizon, which works even when a group has no median.
| Group | Customers | Left | Median | Average time retained |
|---|
📊 How to Read This Chart
- Curves that cross are the trap. One group leaves early and the other leaves late, so a single test comparing them overall can report “no difference” while the two groups behave nothing alike. Compare them at the age that matters to you instead.
- A significant result tells you the timing differs, not by how much. That is what the RMST column is for.
- No significant difference is a real finding, not a failure. It means your groups churn on the same schedule.
How your data was read
This is the step students distrust most, so here it is in the open: five customers from your file, and exactly how each one became a duration and a status.
| Customer | Their activity | Joined | Last seen | Duration | Status |
|---|
Churn time is the first quiet period of the run that triggered the rule, not the last. Someone last seen in period 8 who then goes quiet churned at 9, because 9 is when they stopped.
WHAT THIS MEANS
Methods & Results
Managerial Interpretation
WHAT TO WATCH
EXPLORATORY QUESTIONS
All answerable with the controls above. The last two are the ones worth arguing about.
- How much does the definition matter? On Crave, record the median at 1, 2 and 3 quiet periods. Which would you report to a board, and what would you say when asked why?
- How wrong is the shortcut? Compare the three bars in “How honest is your churn rate?”. If your company quoted the optimistic one, how many customers would that overstate by over a year?
- Where should the money go? Look at “When do you lose them?”. If the first period is the worst by far, what does that say about spending on a loyalty discount for month-twelve customers?
- Was it really February’s fault? On Parcel & Pantry, find the two weak cohorts. The Head of Growth says the promotion “brought in 520 customers”. Using the cohort table, what would you say back?
- When can you not answer the question? Load Marlowe Riptide. Most of those fans joined recently. Why does the tool refuse to give a lifetime, and what can you honestly report?
- Can a test miss a real difference? Find the case where two group curves cross. The log-rank test may say there is no significant difference. Is that the same as the groups behaving the same way? What would you report instead?