Engagement & Churn Scoring
The CRM computes engagement and churn risk scores for each customer.
Engagement Score (0-100)
| Component | Weight | Data Source | Calculation |
|---|---|---|---|
| Recency | 30% | Last activity | Days since last interaction |
| Frequency | 25% | Activity count | Activities per month |
| Monetary | 20% | SCL payments | Total spend / LTV |
| Breadth | 15% | Channel usage | Unique channels engaged |
| Depth | 10% | Engagement | Open rate, click rate |
Score Interpretation
| Score | Level | Description |
|---|---|---|
| 80-100 | Excellent | Highly engaged, frequent activity |
| 60-79 | Good | Regular engagement |
| 40-59 | Average | Moderate engagement |
| 20-39 | Low | Minimal engagement |
| 0-19 | At Risk | Little to no recent activity |
Churn Risk Score (0-100)
| Risk Factor | Weight | Indicator |
|---|---|---|
| Activity decline | 35% | 50%+ drop in activity |
| Payment issues | 25% | Failed payments, overdue |
| Engagement drop | 20% | Stopped opening emails |
| Tier downgrade | 10% | Recent tier reduction |
| Complaints | 10% | Support tickets, negative feedback |
Risk Levels
| Score | Risk Level | Recommended Action |
|---|---|---|
| 80-100 | Critical | Immediate outreach |
| 60-79 | High | Win-back campaign |
| 40-59 | Moderate | Engagement campaign |
| 20-39 | Low | Monitor |
| 0-19 | Minimal | Standard engagement |
Using Scores in Segments
Scores can be used in segment criteria:
const atRiskSegment = {
name: "At Risk Customers",
rules: [
{ field: "churnRiskScore", operator: "gte", value: 70 },
{ field: "membershipStatus", operator: "eq", value: "ACTIVE" }
],
combinator: "AND"
};