The churn score is not a single calculation. It is a dynamic position marker that reflects where each customer sits within their personal purchase rhythm.

The key insight: 60 days without a purchase means something completely different for a customer who buys every 20 days versus one who buys every 90 days. Fixed thresholds treat all customers identically. The multiplier model respects individual purchase rhythm.


The Core Calculation

For every customer, the system calculates days_since_last_order against avg_repurchase_days:

Threshold Calculation
ACTIVE days_since <= avg × 1.5
AT_RISK days_since <= avg × 2.5
LAPSED days_since <= avg × 4.0
CHURNED days_since > avg × 4.0

Churn Score Formula by Stage

Stage Score Calculation
NEW Fixed score: 5
ACTIVE floor((days_since / avg) × 15), capped at 20
AT_RISK 60 + floor(((days_since − avg×1.5) / avg) × 20), capped at 82
LAPSED 85 + floor((days_since / avg) × 2), capped at 94
CHURNED Fixed score: 96

Intervention Routing Logic

Trigger Condition Intervention Type Action
New order placed by existing customer post_purchase Warm confirmation + product usage tip
Customer crosses ACTIVE → AT_RISK at_risk Check-in email referencing their last product
Customer crosses AT_RISK → LAPSED win_back 20% off discount with 7-day urgency
Customer crosses LAPSED → CHURNED win_back Final win-back attempt
Refund event received refund_save Empathetic outreach offering to resolve the issue

The Countdown Metric

For every ACTIVE and AT_RISK customer, the dashboard calculates days remaining before crossing into the next danger zone:

This produces the Churn Countdown panel — a ranked list of the most urgent customers sorted by how many days remain before they cross the threshold. This is where the money is.