Why members churn
Every time a paid period runs out, a member either renews within 30 days or churns. Across 12,104,158 of those renewal decisions in 2016 to early 2017, 5.1% ended in churn. Members renewing manually churn at 7.5× the rate of members on auto-renew.
Each chart below changes one factor at a time. These are associations, not causes: auto-renewers differ from manual renewers in many ways. The model page tests which factors still predict churn when they are considered together.
Three ways to churn
View SQL ↗Of all churners, 24% actively cancelled, 52% were on manual renewal and simply didn't renew, and 24% had auto-renew on but the renewal never went through. That last group is likely payment failure, the cheapest churn to win back.
Show data table
| Month | Churners | Cancelled | Didn't renew | Auto-renew lapsed |
|---|---|---|---|---|
| Jan 2016 | 47,838 | 10,667 | 19,063 | 18,108 |
| Feb 2016 | 51,892 | 11,014 | 21,707 | 19,171 |
| Mar 2016 | 54,955 | 11,693 | 26,351 | 16,911 |
| Apr 2016 | 43,859 | 9,407 | 27,612 | 6,840 |
| May 2016 | 47,276 | 8,111 | 23,593 | 15,572 |
| Jun 2016 | 38,281 | 7,421 | 23,886 | 6,974 |
| Jul 2016 | 38,332 | 7,313 | 23,045 | 7,974 |
| Aug 2016 | 37,771 | 9,082 | 21,506 | 7,183 |
| Sep 2016 | 38,160 | 10,825 | 24,161 | 3,174 |
| Oct 2016 | 40,479 | 11,498 | 21,858 | 7,123 |
| Nov 2016 | 35,199 | 11,017 | 20,657 | 3,525 |
| Dec 2016 | 56,932 | 11,695 | 22,144 | 23,093 |
| Jan 2017 | 47,893 | 13,929 | 26,030 | 7,934 |
| Feb 2017 | 38,330 | 13,704 | 21,758 | 2,868 |
Churn rate at renewal, by factor
Auto-renew
View SQL ↗Whether the member's most recent payment was set to renew automatically.
off churns at 20.9% versus 2.8% for on, 7.5× the rate.
Show data table
| Group | Renewal decisions | Churn rate |
|---|---|---|
| off | 1,552,346 | 20.86% |
| on | 10,551,812 | 2.78% |
Cancelled before expiry
View SQL ↗An explicit cancellation during the paid period. Near-certain churn, so it is also the easiest signal to act on.
yes churns at 77.6% versus 3.9% for no, 19.7× the rate.
Show data table
| Group | Renewal decisions | Churn rate |
|---|---|---|
| no | 11,914,211 | 3.94% |
| yes | 189,947 | 77.59% |
Listening days (last month)
View SQL ↗Days with any listening in the last full month before the renewal decision.
1-4 days churns at 6.7% versus 4.5% for 15+ days, 1.5× the rate.
Show data table
| Group | Renewal decisions | Churn rate |
|---|---|---|
| 0 days | 2,609,116 | 4.28% |
| 1-4 days | 1,207,423 | 6.73% |
| 5-14 days | 2,561,500 | 6.59% |
| 15+ days | 5,726,119 | 4.46% |
Tenure
View SQL ↗Months since the member's first paid period.
<3 mo churns at 12.8% versus 4.4% for 12+ mo, 2.9× the rate.
Show data table
| Group | Renewal decisions | Churn rate |
|---|---|---|
| <3 mo | 1,001,019 | 12.81% |
| 3-5 mo | 1,341,799 | 4.78% |
| 6-11 mo | 2,588,614 | 4.20% |
| 12+ mo | 7,172,726 | 4.41% |
Plan length
View SQL ↗Longer prepaid plans are a commitment; weekly and monthly plans are not.
<=7 days churns at 50.7% versus 4.6% for 30 days, 11.1× the rate.
Show data table
| Group | Renewal decisions | Churn rate |
|---|---|---|
| <=7 days | 4,570 | 50.72% |
| 30 days | 11,840,015 | 4.58% |
| 90 days | 32,493 | 28.01% |
| 180+ days | 227,080 | 27.88% |
Discount
View SQL ↗Price paid versus list price on the expiring period.
50%+ off churns at 69.2% versus 5.1% for full price, 13.6× the rate.
Show data table
| Group | Renewal decisions | Churn rate |
|---|---|---|
| full price | 12,068,469 | 5.10% |
| <50% off | 32,924 | 0.17% |
| 50%+ off | 2,765 | 69.22% |
Returning subscriber
View SQL ↗Whether this member had churned before and come back.
yes churns at 8.9% versus 4.3% for no, 2.1× the rate.
Show data table
| Group | Renewal decisions | Churn rate |
|---|---|---|
| no | 10,025,916 | 4.31% |
| yes | 2,078,242 | 8.93% |
Checking the churn definition against Kaggle's own code
View SQL ↗The competition ships the script that produced its labels. Re-implemented in SQL and run on the same transactions, it agrees with this pipeline's churn flag for 99.5% of the 850,952 members whose membership expired in February 2017. A dbt test fails the build if that drops below 99%.
The labels Kaggle actually published agree with that same script only 98.8% of the time, and show a higher churn rate (4.5% against 3.3%). Scoring this pipeline against the published file would have understated it, so the audit uses the code.
Show data table
| Comparison | Members | Agreement | Churn rate (first) | Churn rate (second) |
|---|---|---|---|---|
| Our pipeline vs Kaggle labelling code | 850,952 | 99.5% | 3.68% | 3.19% |
| Our pipeline vs published v1 labels | 977,026 | 98.2% | 3.89% | 5.56% |
| Published v1 labels vs Kaggle labelling code | 853,769 | 98.8% | 4.53% | 3.34% |