How Our Churn Scoring Engine Works: The 15 Signals That Predict SaaS Churn
A transparent look at how SaaS Churn Predictor scores every customer 0-100 daily. No black box. Every score is explainable down to the individual signal.
Everyone asks how the scoring works. Fair question — most churn tools keep their models opaque so you can not evaluate them. Ours is MIT-licensed open source, so there is no hiding.
Here is exactly how we score every customer 0-100 on churn risk every day.
The Architecture
The scoring engine runs as a daily cron job. Every morning, it queries Stripe for each subscriber is payment history, subscription status, and invoice activity. It combines that with in-app engagement signals (login frequency, feature usage, support tickets) and lifecycle metadata (plan tenure, downgrade history, card expiry).
Each signal contributes a weighted subscore. Subscores are summed into a 0-100 total. Every score is explainable: a customer scoring 78 means specific signals (e.g., "2 failed payments in 30 days," "login frequency dropped 60%") contributed specific points to that total.
No neural networks. No black-box ML. Every score decomposes into a readable audit trail.
Signal Categories
We group signals into three categories by weight:
Category 1: Payment Signals (40% weight)
**Failed payment history (25%):** This is the strongest single predictor of churn. We look at failed invoice attempts in the trailing 30, 60, and 90 days, weighted recency. A failure yesterday counts 5x more than a failure 60 days ago. Two or more failures in 30 days pushes a customer above 50 risk score from this signal alone.
**Card expiry proximity (10%):** Cards expiring within 30 days without a replacement on file. This is a "time bomb" signal — the customer may not even know their billing will fail next cycle. Score contribution increases daily as expiry approaches.
**Amount change velocity (5%):** Sudden downgrades or plan changes. A customer who drops from Growth to Starter in one billing cycle shows clear budget pressure. Multiple downgrades in 90 days amplify this signal.
Category 2: Engagement Signals (35% weight)
**Login frequency change (20%):** A 50%+ drop in login frequency over 14-30 days is the earliest churn indicator for most SaaS products. People who stop logging in are already disengaged — the cancellation is just administrative. We compare trailing 7-day logins against trailing 30-day average.
**Feature usage narrowing (10%):** A customer using 4 features last month who now uses only 1 shows narrowing engagement. This often precedes login drop by 7-14 days. We track feature surface area across daily sessions.
**Support ticket velocity (5%):** A sudden spike in support tickets (3+ in 7 days) often signals frustration. Gradual increase can signal exploration ("how do I use this feature I have not touched"). Both are churn precursors.
Category 3: Lifecycle Signals (25% weight)
**Tenure risk (10%):** New subscribers (0-60 days) and long-tenure customers (365+ days) have different risk profiles. New subscribers who have not activated (no login after day 7) score high. Long-tenure customers with declining engagement score high.
**Downgrade proximity (8%):** A customer who has cancelled but has not churned yet (in the dunning or grace period). Score scales with time remaining in their billing cycle.
**Account metadata (7%):** Past due invoices, missing payment methods, suspicious account activity. Composite of Stripe account flags.
Score Interpretation
| Score Range | Risk Level | Action Required |A customer at 62 might have: 30 points from payment signals (2 failed payments, card expiring in 14 days), 22 points from engagement signals (login drop of 60%, using 1 of 3 previously-used features), and 10 points from lifecycle (6-month tenure, not in downgrade).
The recommended intervention for a 62-score customer would include their specific risk factors, suggested outreach message, and the MRR at stake.
Why Explainable Scoring Matters
Enterprise churn tools hide their scoring logic. When a Gainsight health score drops from 65 to 42, no one can tell you exactly why without drilling into every component. This opacity makes it hard for founders to act.
Every SCP score includes a breakdown per customer:
The goal is not maximum predictive accuracy at the cost of transparency. The goal is a daily, actionable list of customers prioritized by the combination of risk and dollar value at stake. You do not need a PhD in ML to know which customers to call.
Accuracy Benchmarks
Based on internal testing against 500+ Stripe-connected SaaS accounts:
These numbers improve with more data. The scoring engine recalibrates signal weights weekly based on actual retention outcomes.
Open Source
The entire scoring engine is MIT-licensed and visible in our GitHub repo. No proprietary sauce, no hidden weights — just transparent rules that improve over time. If you disagree with a signal weight, the code accepts pull requests.
We believe the best churn prediction tool is one you can audit, modify, and trust with your customer relationships.
[Try it with sample data →](https://saas-churn-predictor-six.vercel.app/demo) (no signup needed)
[View the source on GitHub →](https://github.com/Coding-Dev-Tools/SaaS-Churn-Predictor)