DEV Community

insightlab
insightlab

Posted on

The Churn Prediction Playbook

When I checked my dashboard on a Tuesday morning in March, the number staring back at me was 7.2%. That was my monthly revenue churn — the kind of figure that makes a bootstrapped founder question every decision they've ever made. I had 84 paying customers and was losing six a month. At that rate, I'd bleed out before the year ended.

Eight months later, I had that number down to 3.1%. Not by luck, not by a pricing change, and not by adding features. I did it by building a churn prediction system that flagged at-risk accounts before they ever clicked "cancel." Here's exactly how I built it, the five leading indicators I tracked, and the save sequence that recovered $14,200 in annual revenue.

Why Lagging Indicators Are Killing Your SaaS

Most founders track churn as a lagging indicator — you count who left at the end of the month and shrug. By the time someone cancels, you've already lost. The churn prediction playbook flips this: you identify behavioral signals 30-60 days before cancellation and intervene while the customer still has a reason to stay.

Research from ProfitWell (now Paddle) shows that 40-50% of B2B SaaS churn is preventable. The customers who leave didn't wake up one morning and decide to cancel. They disengaged gradually, hit friction, and eventually rationalized the decision. Your job is to catch them in that gradual phase.

Here's the system I built, broken into four phases.

Phase 1: Track the Five Leading Indicators

I spent two weeks pulling data from my Stripe account, my app's analytics (using PostHog), and my support desk (Help Scout) to identify correlations between user behavior and churn. Five signals consistently preceded cancellations:

1. Login Frequency Decline

The strongest single predictor. I tracked weekly active logins per account and flagged anyone whose login frequency dropped more than 40% over a two-week rolling window. Accounts crossing this threshold had a 3.8x higher churn rate over the following 60 days.

The nuance matters here. A customer going from 5 logins per week to 3 isn't alarming. A customer going from 5 to 1 in week one, then 0 in week two — that's your red flag.

2. Feature Usage Contraction

I tracked how many distinct features each account used per week. When an account using 6+ features dropped to 2 or fewer, churn probability spiked. This signal was especially dangerous because it often indicated the customer had found a workaround for their core problem and was testing whether they still needed your tool at all.

I used feature tagging in PostHog to track this automatically. If you're using Mixpanel or Amplitude, the same approach works with their event segmentation tools.

3. Support Ticket Sentiment Shift

I'm not talking about sentiment analysis tools that score "angry" vs. "happy." I tracked something simpler: the ratio of bug reports to how-to questions. When a customer who previously asked how-to questions started filing bug reports, something had shifted. I also watched for ticket frequency spikes — a customer who hadn't contacted support in months suddenly filing three tickets in a week was either deeply engaged or deeply frustrated.

I manually tagged tickets for 90 days to find the pattern, then built a simple automation using Help Scout's workflows to flag accounts with this shift. No fancy NLP required.

4. Billing Anomalies

Three specific billing patterns predicted churn in my data:

  • Downgrading plans — obvious, but 60% of downgraders churned within 90 days
  • Failed payment retries — accounts with 2+ failed payment attempts had 4.2x higher churn
  • Seat reduction — removing users was the single strongest billing signal, with 71% of accounts who removed seats churning within 120 days

I set up Stripe webhooks to pipe these events into my health scoring system in real time.

5. Admin Engagement Drop

This one surprised me. I tracked whether the account admin (the person who originally signed up) was still the most active user. When admins stopped logging in while team members continued, churn risk increased 2.5x. The admin is your champion — if they disengage, the renewal conversation has no internal advocate.

Phase 2: Build Your Health Score Formula

Once I identified the five signals, I needed a way to combine them into a single, actionable score. I tested weighted scoring systems for a month before landing on this formula:

Health Score = (Login Score × 0.30) + (Feature Score × 0.25) + (Support Score × 0.15) + (Billing Score × 0.20) + (Admin Score × 0.10)
Enter fullscreen mode Exit fullscreen mode

Each component is scored 0-100 based on whether the account is trending healthy (100), stable (50), or at-risk (0). I used simple thresholds:

  • Login Score: 100 if weekly logins stable or growing, 50 if declined 20-40%, 0 if declined >40%
  • Feature Score: 100 if using 4+ features, 50 if using 2-3, 0 if using 1 or fewer
  • Support Score: 100 if no negative signals, 50 if bug report ratio increased, 0 if 3+ tickets in a week with negative sentiment
  • Billing Score: 100 if no anomalies, 50 if one anomaly, 0 if multiple anomalies
  • Admin Score: 100 if admin active within 7 days, 50 if active within 30 days, 0 if inactive 30+ days

Accounts scoring below 50 were flagged as "at-risk." Accounts below 30 were "critical." I built this as a simple Python script that ran nightly and posted results to a Slack channel. Total development time: one weekend. No expensive customer success platform required.

The scoring isn't perfect — I'd rather have a system that catches 80% of at-risk accounts than none at all. After three months, I tuned the weights based on which signals actually correlated with churn. Your weights will differ — start with mine, then adjust.

Phase 3: The 3-Touch Save Sequence

Identifying at-risk accounts is only half the battle. I built a three-touch save sequence that I executed manually for every flagged account:

Touch 1: The Personal Check-In (Day 0)

Within 24 hours of an account being flagged, I sent a personal email — not from a sequence, not from a template. It referenced something specific about their usage: "Hey Sarah, I noticed your team hasn't used the reporting module in a couple weeks — wanted to check if there's anything blocking you or if the current setup is working fine."

This email had a 68% response rate. The key was specificity — generic "how are things going?" emails got ignored, while emails that showed I understood their exact usage patterns got replies.

Touch 2: The Value Reinforcement (Day 7)

If the account was still declining after touch one, I sent a personalized Loom video (2-3 minutes) showing a feature or workflow they weren't using that could solve a problem I knew they had. I'd reference their industry, their team size, and a specific use case.

For example, if a marketing agency client had stopped using the client reporting feature, I'd record a walkthrough showing how another agency used it to cut reporting time by 4 hours per week. This wasn't a sales pitch — it was a targeted tip that happened to remind them why they subscribed.

Touch 3: The Direct Conversation (Day 14)

If the account was still at-risk, I asked for a 15-minute call. Not to save the account — to understand what was broken. I asked three questions: What were you hoping to accomplish when you signed up? Where did we fall short? What would need to change for this to be worth keeping?

I saved 43% of accounts that reached touch three. The feedback from these conversations directly informed my product roadmap — three of my most impactful feature improvements came from touch-three calls.

Phase 4: Close the Feedback Loop

The save sequence isn't just about retention — it's about learning why customers churn and fixing the root cause. I tracked every at-risk flag, every save attempt, and every outcome in a simple Airtable base. After six months, I could see patterns:

  • 34% of churn risk was caused by poor onboarding (users never reached their aha moment)
  • 22% was caused by missing features that competitors had
  • 18% was caused by pricing friction (customers felt they were paying for features they didn't use)
  • 14% was caused by reliability issues (bugs and downtime)
  • 12% was miscellaneous (company went out of business, budget cuts, etc.)

This data drove concrete changes. I rebuilt my onboarding flow to get users to their first value moment within 10 minutes (down from 45). I introduced a lower-tier plan for users who only needed core features. I fixed three reliability issues that were quietly eroding trust.

The Bottom Line

Churn prediction isn't about building a sophisticated machine learning model. It's about paying attention to the signals your customers are already sending you. Track five leading indicators, combine them into a health score, execute a disciplined save sequence, and use what you learn to fix the root causes.

My system cost one weekend and zero dollars in software. It reduced my monthly churn from 7.2% to 3.1% over eight months and recovered $14,200 in annual revenue that would have walked out the door. The feedback I gathered through the save sequence made my product genuinely better — which reduced churn further.

If you're a bootstrapped founder losing more than 5% of your revenue to churn each month, stop reading articles and build your health score today. Every day you wait is another customer quietly deciding to leave.

Tags: #saas #content #bootstrapping #growth #startup

Top comments (0)