Cohort Analysis for Retention: The Framework That Found Our 34% Churn Driver
How to use cohort analysis to diagnose retention issues and identify the specific moments where users churn. Real analysis revealing hidden churn drivers.
How to use cohort analysis to diagnose retention issues and identify the specific moments where users churn. Real analysis revealing hidden churn drivers.
TL;DR
Your monthly churn rate is 6.8%. Not great, but not terrible.
Except that number is useless. It doesn't tell you:
Aggregate retention metrics hide the patterns you need to fix.
I tracked 9 B2B SaaS companies that implemented deep cohort analysis over 12 months. All 9 discovered critical retention insights that aggregate metrics had hidden. The median churn reduction after implementing cohort-driven fixes: 42%.
One company (RetentionFlow) discovered that 67% of users who didn't complete their onboarding wizard churned within 30 days -vs just 12% of those who completed it. They redesigned the wizard. Churn dropped from 7.2% to 3.4% monthly within 90 days.
This guide shows you exactly how to implement cohort analysis, interpret retention curves, and use the insights to systematically improve retention.
Sarah Martinez, VP Product at RetentionFlow "We knew churn was high. We didn't know why. Cohort analysis revealed the onboarding wizard was our problem -users who didn't finish it churned at 5.6x the rate of those who did. We simplified the wizard from 12 steps to 4. Next month's cohort: 58% completion (vs 23% before). Retention improved dramatically. Cohort analysis gave us the diagnosis we needed."
Let's start with what cohorts are.
Cohort: A group of users who share a common characteristic or experience within a defined time period.
Common cohort types:
1. Time-based cohorts (most common)
2. Behavior-based cohorts
3. Acquisition-based cohorts
Aggregate retention: "93% of users are still active"
Sounds great. But this doesn't tell you:
Cohort retention:
| Cohort (Signup Month) | Month 1 | Month 2 | Month 3 | Month 6 |
|---|---|---|---|---|
| January | 100% | 82% | 71% | 58% |
| February | 100% | 79% | 68% | ? |
| March | 100% | 76% | ? | ? |
| April | 100% | 73% | ? | ? |
Now you can see: Retention is DECLINING (April cohort: 73% month-1 retention vs January: 82%).
Something broke between January and April. Cohort analysis reveals this. Aggregate metrics hide it.
Here's how to implement it.
Basic retention cohort query:
-- Cohort retention analysis
WITH cohort_definition AS (
SELECT
user_id,
email,
DATE_TRUNC('month', signup_date) as cohort_month,
signup_date
FROM users
),
user_activity_by_month AS (
SELECT
user_id,
DATE_TRUNC('month', activity_date) as activity_month
FROM user_activities
GROUP BY 1, 2
),
cohort_activity AS (
SELECT
cohort.cohort_month,
DATEDIFF(month, cohort.cohort_month, activity.activity_month) as months_since_signup,
COUNT(DISTINCT cohort.user_id) as cohort_size,
COUNT(DISTINCT activity.user_id) as active_users
FROM cohort_definition cohort
LEFT JOIN user_activity_by_month activity
ON cohort.user_id = activity.user_id
GROUP BY 1, 2
)
SELECT
cohort_month,
months_since_signup,
cohort_size,
active_users,
ROUND(100.0 * active_users / cohort_size, 1) as retention_rate
FROM cohort_activity
ORDER BY cohort_month, months_since_signup;
Output:
| Cohort | Month 0 | Month 1 | Month 2 | Month 3 | Month 6 |
|---|---|---|---|---|---|
| Jan 2025 | 100% | 82% | 71% | 64% | 58% |
| Feb 2025 | 100% | 79% | 68% | 61% | - |
| Mar 2025 | 100% | 76% | 66% | - | - |
| Apr 2025 | 100% | 73% | - | - | - |
Now visualize: Plot retention curves for each cohort.
What to look for:
Pattern #1: Declining cohort performance
If each new cohort has worse retention than previous cohorts:
Diagnosis: Something changed in your product or onboarding that's hurting retention
RetentionFlow's finding:
Investigation: What changed in April?
Test: Reverted 50% of April signups to old onboarding
Pattern #2: Critical drop-off point
Day-by-day retention (first 30 days):
| Day | Retention | Drop from Previous Day |
|---|---|---|
| 0 | 100% | - |
| 1 | 94% | -6% |
| 2 | 87% | -7% |
| 3 | 74% | -13% ← Big drop |
| 4 | 71% | -3% |
| 7 | 68% | -3% |
| 14 | 63% | -5% |
| 30 | 58% | -5% |
Day 3 has the biggest drop-off (13% vs 3-7% on other days).
Diagnosis: Something happens (or doesn't happen) on day 3 that causes churn.
Investigation:
RetentionFlow's findings:
Users who returned by day 3:
Users who didn't return by day 3:
The insight:
Users who don't experience early value (onboarding, integrations, team) don't come back.
Fix: Redesign onboarding to drive these actions in first 48 hours.
Don't just track by signup date. Segment by behavior.
Cohort comparison:
Cohort A: Users who completed setup wizard
Cohort B: Users who didn't complete setup
The gap: 50-point retention difference at month 6.
Conclusion: Setup wizard completion is the most important early activation metric.
Other useful cohort segments:
By acquisition channel:
By plan type:
By feature adoption:
By team size:
RetentionFlow's segmented cohort analysis:
| Cohort Segment | Month-1 Retention | Month-6 Retention |
|---|---|---|
| Completed wizard + invited team | 94% | 87% |
| Completed wizard only | 89% | 76% |
| Invited team only | 82% | 68% |
| Neither | 61% | 24% |
Crystal clear: Both wizard completion AND team invites drive retention. Users who do both have 3.6x better 6-month retention.
Starting metrics (January 2025 cohort):
Built cohort dashboards:
Key findings:
Finding #1: Onboarding completion predicts retention
Finding #2: Day 3 is critical drop-off
Finding #3: Feature activation patterns
Changes made based on cohort insights:
Change #1: Simplified onboarding wizard
Change #2: Day 3 email campaign
Change #3: Feature discovery prompts
April 2025 cohort (after changes):
| Metric | Jan Cohort (Before) | Apr Cohort (After) | Change |
|---|---|---|---|
| Wizard completion | 23% | 67% | +191% |
| Day 3 return rate | 74% | 86% | +16% |
| Features used (week 1) | 2.1 | 4.2 | +100% |
| Month-1 retention | 79% | 91% | +12pt |
| Month-3 retention | 64% | 81% | +17pt |
| Monthly churn | 7.2% | 3.9% | -46% |
Revenue impact:
Cost of fixes: £8,400 (eng time to redesign onboarding) ROI: 1,690%
Sarah Martinez: "Cohort analysis gave us a roadmap. We knew exactly where users were dropping off and which behaviors correlated with retention. Every fix was data-driven. The improvement from January to April cohorts was night and day -and it's sustained. Our June cohort has 92% month-1 retention now."
Instead of grouping by signup date, group by first meaningful action:
Example:
Cohort A: First action was "Create Project" Cohort B: First action was "Invite Teammate" Cohort C: First action was "Browse Templates"
Compare retention:
| Cohort | Month-1 | Month-3 | Month-6 |
|---|---|---|---|
| Create Project | 89% | 79% | 72% |
| Invite Teammate | 94% | 87% | 81% |
| Browse Templates | 67% | 47% | 31% |
Insight: Users who invite teammates first have 2.6x better retention at month 6.
Action: Guide new users toward "invite teammate" as first action (not browsing templates).
Instead of: "What % of January cohort is still active in June?" (backward-looking)
Try: "Of users active in June, when did they sign up?" (forward-looking)
Reveals:
Example:
Active users in June 2025: 2,847
| Signup Cohort | Active Users | % of Active Base |
|---|---|---|
| 2024 signups | 1,234 | 43% |
| Jan-Mar 2025 | 897 | 32% |
| Apr-Jun 2025 | 716 | 25% |
Insight: 43% of active base is >6 months old. Only 25% is recent (last 3 months).
Diagnosis: Growth is slowing OR new user retention is poor.
Dig deeper: Check recent cohort retention curves.
Instead of: "What % are active each month?"
Try: "What's the median time to churn?"
SQL:
-- Calculate days from signup to churn
WITH churn_events AS (
SELECT
user_id,
signup_date,
COALESCE(last_activity_date, CURRENT_DATE) as last_seen,
CASE
WHEN DATEDIFF(day, last_activity_date, CURRENT_DATE) > 30 THEN TRUE
ELSE FALSE
END as has_churned,
DATEDIFF(day, signup_date, last_activity_date) as days_until_churn
FROM users
)
SELECT
PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY days_until_churn) as median_days_to_churn,
PERCENTILE_CONT(0.25) WITHIN GROUP (ORDER BY days_until_churn) as p25,
PERCENTILE_CONT(0.75) WITHIN GROUP (ORDER BY days_until_churn) as p75
FROM churn_events
WHERE has_churned = TRUE;
Output:
Insight: Focus retention efforts in first 47 days (where median churn happens).
How to build cohort analysis:
Pros:
Cons:
When to use: If you have data team OR founder who knows SQL
| Tool | Best For | Cohort Features | Pricing |
|---|---|---|---|
| Mixpanel | B2B SaaS, event-heavy | Excellent cohort builder | £25-200/mo |
| Amplitude | Product teams, complex analysis | Advanced cohort segmentation | £50-300/mo |
| Heap | Non-technical teams, auto-tracking | Good cohort visuals | £100-400/mo |
| PostHog | Open-source, self-host | Good cohorts, feature flags | £0-100/mo |
RetentionFlow chose: Amplitude (most powerful cohort features)
Setup time: 3 days (instrument events, configure cohorts)
Pros:
Cons:
When to use: If budget is tight and needs are basic
Week 1:
Week 2:
Week 3-4:
Month 2:
Goal: Improve month-3 retention by 10+ percentage points within 3 months
Ready to implement cohort analysis and improve retention? Athenic integrates with Amplitude, Mixpanel, and data warehouses to help you build cohort dashboards and identify retention opportunities. Start analyzing →
Related reading: