All examples for SaaS Churn Analysis Framework

Analytics + Payment Recovery: Dual-Track Analysis

A growing SaaS with both analytics data and payment failures. Demonstrates behavioral pattern analysis with PostHog, at-risk customer detection, combined with dunning optimization for a comprehensive retention strategy.

Input

What you provide to the skill

Email automation tool, $12K MRR, 200 customers, 7% monthly churn. We have Stripe plus PostHog analytics. About 40% of our churn is payment failures. We want to understand the rest.

Output

What the skill generates for you

CHURN ANALYSIS FRAMEWORK

SITUATION ASSESSMENT

Your Current State:

  • Product: Email automation tool
  • MRR: $12K across 200 customers (~$60 average customer)
  • Monthly churn: 7% (14 customers/month)
  • Data available: Stripe + PostHog analytics
  • Known factor: 40% of churn is payment failures

Churn Breakdown:

  • Total monthly churn: 14 customers (7%)
  • Involuntary (payment failures): ~6 customers (40%)
  • Voluntary (chose to cancel): ~8 customers (60%)

Industry Benchmark Comparison:
Your 7% monthly churn vs. 3-5% B2C SaaS benchmark: ELEVATED

This indicates two problems:

  1. Payment failure recovery needs optimization (6 customers/month is high)
  2. Value delivery issue causing voluntary churn (8 customers/month)

Revenue Impact:

  • Monthly MRR lost: ~$840 (14 customers × $60)
  • Annual MRR churn: ~$10,080
  • Recoverable through interventions: Est. $250-400/month

ANALYSIS FRAMEWORK

Given your data access (Stripe + PostHog), you’ll use a dual-track approach:

Track 1: Behavioral Pattern Analysis (voluntary churn)
Track 2: Payment Failure Recovery System (involuntary churn)


TRACK 1: BEHAVIORAL PATTERN ANALYSIS

Data Export Requirements

From Stripe (last 90 days of churned customers):

  • Customer ID, Email, Signup date, Cancellation date
  • Days as customer, MRR at cancellation, Plan type

From PostHog (for the same customers):

  • Customer ID, Total events logged
  • Login count (total, final 30 days, final 14 days)
  • Core feature usage: “email_sent” events (final 30 days)
  • Core feature usage: “campaign_created” events (final 30 days)
  • Last active date

Analysis Spreadsheet Template

Customer ID Days Active Last Login Days Ago Final 30d Logins Final 30d Emails Sent Churn Pattern
cust_001 22 15 1 3 Early churn - never activated
cust_002 120 25 0 0 Engagement dropoff
cust_003 45 2 18 150 Active but cancelled (investigate!)

Pattern Signals to Identify

Early Churn (< 30 days active):

  • Root cause: Onboarding failure or targeting mismatch
  • Prevalence estimate: 20-30% of voluntary churn
  • Intervention: Improve activation, refine marketing message

Engagement Dropoff:

  • Signal: Used to send 50+ emails/week, down to 0-5 in final month
  • Root cause: Product stopped delivering value OR life circumstances changed
  • Prevalence estimate: 30-40% of voluntary churn
  • Intervention: Re-engagement campaigns at first sign of decline

Never Activated:

  • Signal: < 10 emails sent total, < 5 logins
  • Root cause: Didn’t understand product, wrong expectations
  • Prevalence estimate: 25-35% of voluntary churn
  • Intervention: Onboarding overhaul, better positioning

Exit Survey Design

Send within 24 hours of voluntary cancellation:

Subject: Quick question about [Product]
Hi [Name],
I noticed you cancelled your [Product] subscription. As the founder, I'd really value understanding what happened - your feedback directly shapes what I build.
Would you mind sharing why you decided to cancel? Just reply to this email.
Common reasons I've heard:
- Not using it enough to justify the cost
- Found a different solution
- Missing features I needed
- Too complicated to set up
- Didn't do what I expected
Thanks,
[Your Name]

TRACK 2: PAYMENT FAILURE RECOVERY SYSTEM

Current State Analysis

Your involuntary churn:

  • 6 payment failures/month = 3% of your total customer base
  • Likely current recovery rate: 15-20% (Stripe default)
  • Customers actually lost: ~5/month after retries
  • MRR lost: ~$300/month ($3,600 annually)

Opportunity:
Optimize to 50-60% recovery rate = save 2-3 more customers/month = $120-180 additional MRR saved monthly

Stripe Dunning Optimization

Step 1: Enable Smart Retries

  1. Go to Stripe Dashboard → Settings → Billing → Subscriptions
  2. Toggle ON “Smart Retries”

Step 2: Configure Custom Retry Schedule

  • Day 0: Immediate retry (automatic)
  • Day 3: Second attempt (mid-morning)
  • Day 5: Third attempt
  • Day 7: Fourth attempt
  • Day 10: Final retry before cancellation

Step 3: Custom Dunning Email Sequence

EMAIL 1 - Immediate (Day 0):

Subject: Action needed: Payment issue for [Product]
Hi [Name],
We tried to charge your card for your [Product] subscription, but the payment didn't go through.
→ Update your payment method here: [Stripe Customer Portal Link]
Your account stays active for 10 days while we sort this out, so your email campaigns won't be interrupted.
Thanks,
[Your name]

EMAIL 2 - Reminder (Day 3):

Subject: Quick reminder: Payment method needs updating
Hey [Name],
Just following up - we still weren't able to process your payment for [Product].
To keep your account active and avoid losing access to your:
- Email campaigns and automation
- Contact lists and segments
- Analytics and reports
→ Update your card here: [Link]
Best,
[Your name]

EMAIL 3 - Urgent (Day 6):

Subject: [Name], your [Product] account will be paused in 4 days
Hi [Name],
Your payment method still isn't working, and your account will be paused in 4 days.
If your card expired or needs updating, you can fix it here in 30 seconds: [Link]
If something else is going on - budget constraints, not using the product enough - let me know. I'd rather work something out than lose you over a billing issue.
Thanks,
[Your name]

EMAIL 4 - Final Warning (Day 9):

Subject: Final notice: Your [Product] account pauses tomorrow
[Name],
Tomorrow your [Product] account will be paused and you'll lose access to:
- Your [X] active email campaigns
- Your [Y] contacts and segments
- Your automation workflows
If this is a card issue, update it now: [Link]
Best,
[Your name]

PRE-CHURN INTERVENTION STRATEGY

At-Risk Customer Detection (PostHog)

Since you have PostHog analytics, set up automated alerts for these high-risk signals:

Critical engagement drop:

  • Zero logins in 14 days (for previously active user)
  • Zero “email_sent” events in 7 days (for user who used to send daily/weekly)
  • 70%+ drop in weekly activity vs. their historical average

PostHog Implementation:

  1. Create cohort: “At-Risk - Disengaged”
    • Filters: Last active > 14 days ago AND previous 30d had 5+ logins
  2. Export weekly or set up webhook to email you the list
  3. Manual outreach to these customers

At-Risk Intervention Email Sequence

EMAIL 1 - Personal Check-In (Day 14 of inactivity):

Subject: Haven't seen you in [Product] lately
Hi [Name],
I noticed you haven't logged into [Product] in a couple weeks. Just wanted to check in - is everything okay?
If you're stuck on anything or have questions, I'd love to help - just reply to this email.
Best,
[Your name]

EMAIL 2 - Offer Help (Day 18 of inactivity):

Subject: Quick offer for you
Hey [Name],
If you're too busy to use [Product] right now, I can pause your subscription for a month (no charge) until you're ready to dive back in. Your campaigns and data stay safe.
Or if there's something I can help you set up, just let me know.
[Your name]

EMAIL 3 - Last Outreach (Day 23 of inactivity):

Subject: Before you go...
Hi [Name],
I haven't heard back, so I'm guessing [Product] might not be working out. Before you cancel, would you consider:
1. **Free month** - Give it another try on me
2. **Quick call** - 15 minutes to help you get more value
3. **Share feedback** - Tell me what didn't work
[Your name]

Expected Results:

  • 20-30% of at-risk accounts re-engage
  • 10-15% accept pause instead of cancel
  • Net impact: 0.5-1.0 percentage point churn reduction

IMPLEMENTATION CHECKLIST

Week 1: Data Collection & Analysis

  • Export Stripe data for all churned customers (last 90 days)
  • Export PostHog behavioral data for same customers
  • Complete churn categorization spreadsheet (voluntary vs. involuntary)
  • Analyze behavioral patterns using template above
  • Send exit surveys to last month’s voluntary churns (8 customers)
  • Set up tracking dashboard

Week 2: Intervention Design

  • Review exit survey responses (if any returned - expect 2-3)
  • Identify top 2 voluntary churn patterns from behavioral analysis
  • Draft payment failure email sequence (4 emails)
  • Draft at-risk intervention sequence (3 emails)
  • Enable Stripe Smart Retries
  • Configure custom retry schedule in Stripe

Week 3: Implementation

  • Implement automated exit survey (trigger on cancellation)
  • Launch custom dunning email sequence
  • Set up card expiration reminder system
  • Create PostHog cohort for “At-Risk - Disengaged” customers
  • Send first batch of at-risk intervention emails
  • Schedule weekly churn review meeting (30 min)

EXPECTED IMPACT (90-DAY TIMELINE)

Baseline (Current State)

  • Monthly churn: 7% (14 customers, $840 MRR lost)
  • Voluntary: 8 customers ($480)
  • Involuntary: 6 customers ($360)

Target (After Interventions)

Payment Failure Recovery Optimization:

  • Current recovery: ~20% (1 customer saved)
  • Optimized recovery: 50% (3 customers saved)
  • Impact: Reduce involuntary churn from 6 to 4 customers/month = -1.0% total churn

At-Risk Interventions:

  • At-risk pool: ~12 customers/month showing disengagement
  • Intervention success: 25% re-engage
  • Impact: Save 3 customers/month = -1.5% total churn

Projected Results (Month 3)

Metric Current Target Improvement
Monthly churn rate 7.0% 4.0-5.0% -2.0 to -3.0%
Customers churned 14 8-10 4-6 saved
MRR saved monthly - $240-360 -
Annualized MRR saved - $2,880-4,320 -

ROI Calculation:

  • Investment: 12-15 hours setup + 2-3 hours/week ongoing
  • Return: $240-360/month = $2,880-4,320/year
  • Payback period: Immediate (first recovered customers = positive ROI)

START HERE: Enable Stripe Smart Retries today (5 minutes), then block 2 hours this week to export your churn data and create the behavioral analysis spreadsheet.