11 September 2026

Cohort retention analysis for wellness brands: M3, SQL, 90 day plan
Cohort retention measures how many users from the same starting group come back over time, and it beats a single blended retention rate because that one number hides which signups actually stick. Focus first on M3 as your earliest reliable filter for real users, then check M12/M3 to judge whether a product has staying power. The rest of this guide covers the formulas, the SQL, and the fixes.
TL;DR:
- Focusing on M3 retention provides a clearer filter for long-term users and helps identify early churn caused by tourist signups.
- Using onboarding, billing, and feature adoption changes can improve retention curves, especially by fixing month 1 cliffs and boosting activation rates.
- Building acquisition cohorts first reveals when retention declines, while behavioral cohorts explain why by linking actions to retention outcomes.
- Accurate cohort tables should show 100% retention at month 0, with proper filtering for complete periods and validation checks for data consistency.
- Ignoring small cohorts or unobserved periods distorts retention metrics, so volume and data hygiene are essential for reliable insights.
Table of Contents
- What cohort retention actually measures (and the formulas you need)
- Which cohort type should you build first?
- How do you read a cohort retention table?
- How do you set up cohort analysis with SQL?
- What mistakes ruin cohort analysis, and how do you fix them?
- What actually moves a retention curve?
- How does an audit turn cohort data into a plan?
- Measurement hygiene: what to prioritise and what to drop
- Get a clear read on your retention before you spend on acquisition
- Sources
- FAQ
What cohort retention actually measures (and the formulas you need)
Cohort retention analysis groups users by a shared starting point (signup week, first purchase, plan upgrade) and tracks what percentage of that exact group is still active in each subsequent period. A single retention rate averages together your best week and your worst, so it tells you almost nothing about which acquisition channel or onboarding flow is driving retention. Retention cohort analysis fixes that by isolating each group and letting you compare curves side by side.
The core formulas are simple enough to memorise:
- Retention rate = (customers at period end − new customers acquired during the period) ÷ customers at period start.
- Churn rate = 1 − retention rate. A business retaining 92% of customers monthly is churning 8%, but that compounds into roughly 62% annual churn once you run it across 12 months, not 8% x 12.
- M3 is the retention rate measured three months after the start event, used to filter out short-term “tourist” users who signed up out of curiosity and never intended to stay.
- M12/M3 ratio divides twelve-month retention by three-month retention. A ratio near 1.0 means whoever survives past month three tends to stay for the long haul.
Statistic callout: A 2025 review of AI companies earning over $1 million in annual recurring revenue found that measuring M12 against M3 gives a materially clearer read on long-term health than M0 based metrics, precisely because M3 has already filtered out the tourists.
Cadence matters too. Daily active-user cohorts suit habit-forming consumer apps; weekly suits most subscription products; monthly suits anything billed monthly, including most wellness memberships. Whatever cadence you choose, treat any cohort under roughly 50 users as directional only. Small denominators swing wildly on one or two cancellations.
Which cohort type should you build first?
Three cohort types cover almost every retention question a data analyst, product manager, or marketer will ask. Picking the wrong one wastes weeks.
Acquisition cohorts group users by when they started, usually signup date or first purchase date. Use signup date when you want to isolate marketing or pricing changes; use first purchase date when free trials or freemium tiers mean “signup” and “customer” aren’t the same event. Acquisition cohorts answer “did retention change” and roughly when.
Behavioural cohorts group users by what they did, not when they arrived. A behavioural cohort might be “users who completed onboarding step 3 within 48 hours” versus everyone else. This is where the real diagnostic power sits, because behavioural cohorts reveal which actions actually predict retention, while acquisition cohorts only show you that something changed. Pair both: an acquisition cohort flags a February drop, a behavioural cohort tells you it’s because fewer new users hit the activation milestone that month.
Predictive cohorts use a model to score churn risk or expansion likelihood before either happens, grouping users by predicted behaviour rather than observed behaviour. These need more data maturity than most wellness or services businesses have on hand, but even a rough risk score (say, “no login in 14 days plus a support ticket”) gives you an intervention window measured in days instead of a post mortem measured in months.
The practical move for most teams: build the acquisition cohort to spot when retention shifted, then slice it by a behavioural cohort to find why. Only invest in predictive cohorts once you’ve exhausted what the first two can tell you.
How do you read a cohort retention table?
A cohort retention table (sometimes called the cohort triangle because of its stair-step shape) puts cohort start dates down the rows and “months since start” (month_no: 0, 1, 2, 3…) across the columns. Each cell holds the percentage of that row’s original cohort still active in that column’s period, and every table should show the raw count alongside the percentage. A 90% retention figure from a cohort of 8,000 users means something completely different from 90% out of 12 users.
Month 0 should always read 100%, because that’s the cohort defining itself. If it doesn’t, your query has a logic error before you’ve even looked at retention.
The shape of the curve, once you plot it, tells its own story:
- Flattening curve: retention drops sharply then levels off. This is healthy. It means you’ve found a durable core user base.
- Slow bleed: retention declines steadily with no floor. Usually points to a feature gap or a substitute product winning gradually.
- Cliff: a sudden drop at a specific month, often month 1 or right before a billing date. Look at onboarding for month 1, and at contract length or price for later cliffs.
- Smile: retention dips then climbs back up. Common in seasonal or reactivation-heavy products, but check whether re-engaged users are being double-counted as loyal.
Never fill an unobserved future cell with a zero. A cohort that started two months ago simply has no month 6 data yet, and treating that empty cell as a zero manufactures a fake decline that doesn’t exist. Filter your table to complete periods only.
Pro Tip: When you present a cohort table to stakeholders, always show cohort size in the row label (“Jan cohort, n=1,240”) rather than burying it in a footnote. It stops someone celebrating a 95% retention figure that’s actually four people out of five.
How do you set up cohort analysis with SQL?
Building the cohort table is a five-decision checklist before you write a single line of SQL.
- Choose the start event. Signup, first login, first purchase, first booking. Whatever it is, it must be logged once per user with a timestamp.
- Choose the return event. “Active” needs a strict definition: logged in, completed a session, made a purchase. Vague definitions of “active” are the single most common source of cohort disagreements between teams.
- Pick a cadence. Daily, weekly, or monthly, matched to your billing or engagement rhythm.
- Set a lookback window. How many periods back do you need? Twelve months is the minimum if you want an M12/M3 ratio.
- Decide your survival definition. Does “retained” mean active in month N, or active in every month since signup? These produce very different numbers, and most analytics tools default to the former without telling you.
The SQL pattern is consistent across most warehouses (BigQuery, Snowflake, Postgres):
First, build a cohort grid: one row per user with their start date truncated to the cohort period (
DATE_TRUNC('month', signup_date)). Then computemonth_nofor every activity record as the difference in periods between the activity date and the user’s cohort date. LEFT JOIN the activity table onto the cohort grid, never an inner join, so users with zero activity in a period still appear as a denominator. Aggregate withCOUNT(DISTINCT user_id)grouped by cohort_date and month_no, then divide by the cohort’s month_0 count to get your percentage.
The LEFT JOIN matters more than it sounds. An inner join silently drops anyone who churned before your join condition matches, which inflates every retention number in the table.
Before you trust the output, run three validation checks. First, confirm month_0 reads exactly 100% for every cohort. Second, confirm your cohort counts match a simple COUNT(DISTINCT user_id) from the raw signup table, because a duplicated user ID is a common source of quiet errors. Third, never let future, unobserved periods show as zero — filter your output to only periods that have actually elapsed. If your identity resolution across devices or logins is shaky, that’s worth fixing before you trust any cohort number at all; a technical primer on identity and traffic quality is a useful companion read here.
What mistakes ruin cohort analysis, and how do you fix them?
Most bad cohort analysis isn’t a maths error. It’s a definition error that quietly compounds.
- Tourist users skew month 0 and month 1. Free trials and low-friction signups pull in browsers who never intended to stay, dragging early retention down and making every cohort look worse than the durable audience within it. The fix is rebasing: recalculate retention using M3 as the new 100% baseline instead of M0. Rebasing to M3 reveals the foundational cohort faster than watching M0 metrics slowly stabilise over six months.
- Re-engagement gets counted as survival. A user who churned in month 2 and came back in month 5 will show up as “retained” in a naive “active in month N” query, inflating your numbers against a strict survival definition (“active every single month since signup”). Pick one definition and label your chart with it explicitly.
- Small cohorts create false confidence. A weekly cohort of 40 signups can swing from 80% to 60% retention on three cancellations. Always pair the percentage with the raw count, and consider aggregating small cohorts into monthly or quarterly buckets until volume grows.
- Partial periods get treated as complete ones. A cohort that started three weeks ago hasn’t had a chance to reach month 1 yet. Filter your reporting window to fully elapsed periods only, or you’ll report a false decline that’s really just missing data.
Pro Tip: If your analytics tool’s default “retention” metric doesn’t specify whether it requires consecutive activity, assume it doesn’t. Most tools count anyone active in month N, full stop, which is generous to your numbers and stingy with the truth.
What actually moves a retention curve?
Cohort curves don’t improve on their own. They move because someone tested a specific lever and measured the cohort before and after.
- Fix the activation milestone. Define the single action that correlates most strongly with long-term retention (a completed profile, a first workout logged, a booked session) and treat it as your onboarding target. Behavioural cohorts built around “hit the milestone within 7 days” versus “didn’t” map directly onto onboarding hypotheses you can A/B test.
- Find and flatten billing cliffs. If your curve shows a cliff at month 1 or month 12 that lines up with a renewal or price increase, that’s a contract-timing problem, not a product problem. Compare the cohort’s retention curve before and after you change trial length or renewal messaging.
- Push feature adoption where it correlates with retention. Use in-product nudges to drive the behaviour your behavioural cohort already shows predicts staying power, then measure whether the nudged cohort’s M3 outperforms the control.
- Test reactivation separately from prevention. A win-back email campaign can produce a “smile” shape in the curve, but that’s not the same as fixing why people left in the first place. Measure whether reactivated users survive past month 2 of their second life, or whether they’re just delaying the same churn.
Pro Tip: Run interventions on freshly acquired cohorts, not your entire existing base, so you get a clean before-and-after comparison instead of a mixed signal contaminated by users who already churned under the old system.
Revenue retention deserves the same rigour as user-count retention, particularly if your wellness brand sells memberships with upsell tiers; the mechanics of expansion revenue and feature adoption are worth reading alongside your cohort work.
How does an audit turn cohort data into a plan?
A cohort table is diagnostic, not a plan. Plexo runs a 90-minute audit for wellness brands specifically to close that gap between “here’s what the data shows” and “here’s what we do about it Monday morning.”
The audit checks data hygiene first: does month_0 actually read 100%, is “active” defined consistently across tools, are cohort counts believable. From there it builds a rapid hypothesis list against the curve shape (cliff, slow bleed, flatten) and prioritises levers by expected impact against effort to implement, each assigned an owner and a metric.
- Data hygiene and cohort sanity checks before anything else gets prioritised.
- A ranked list of levers, not a grab bag of ideas.
- A 90 day plan with named owners and the specific M3 or M12 uplift each experiment is meant to produce.
One wellness client came in with a flattening-looking curve that was actually masking a month 1 cliff tied to a billing date. Once the audit isolated the cohort and rebased to M3, the real onboarding gap became visible, and fixing it was part of the broader operational work that helped move that client’s monthly revenue significantly.
Measurement hygiene: what to prioritise and what to drop
Blended retention numbers flatter you into ignoring your worst cohorts, and that’s the single most damaging habit in this discipline. Pair acquisition cohorts with behavioural ones, and tie every experiment to the metric you’d actually change strategy over, usually M3 or the M12/M3 ratio, not vanity monthly active users.
Presentation discipline beats analytical sophistication most of the time. A table with honest cohort counts and a clearly stated “active” definition, filtered to complete periods, will catch more real problems than a beautifully modelled predictive cohort built on shaky foundations.
— Jordan
Get a clear read on your retention before you spend on acquisition
Most wellness brands try to fix retention by throwing more budget at acquisition, then wonder why the leaky bucket never fills. A 90-minute business audit often starts with exactly the cohort checks covered above: is your “active” definition consistent, are your cohort counts real, and what does your M3 actually say about the users you’re keeping.
The audit isn’t a report you file away. It ends with a tailored 90-day plan with named owners, prioritised levers, and the specific retention metric each one is meant to move, with options to stay hands-on to implement it through a live operating dashboard rather than handing you a slide deck and disappearing. If your cohort tables are telling you something’s wrong but you’re not sure what to fix first, book a business audit and get a straight answer within 90 minutes. For a broader look at how Plexo works with wellness brands, the company overview covers the full scope.
Sources
For hands-on practice, the UCI Online Retail dataset offers real transaction data to test cohort queries against. For churn tactics beyond measurement, PostHog’s retention versus churn guide is worth a read, and teams looking to speed up reporting cycles might find AI-assisted analyst workflows useful for automating repetitive cohort pulls.
FAQ
What is a cohort-based retention graph?
It’s a chart plotting the percentage of each starting group (cohort) still active across successive time periods, usually shown as either overlapping curves or a triangle-shaped table with month_no across the columns.
What is retention analysis?
Retention analysis measures how many customers or users continue engaging with a product or service over time, and cohort retention analysis is the specific technique of grouping those users by shared start dates or behaviours so the comparison is fair rather than blended.
What are the three ways to measure retention?
The three common approaches are acquisition cohorts (grouped by when someone started), behavioural cohorts (grouped by what action they took), and predictive cohorts (grouped by a modelled risk or propensity score), each answering a different question about why retention moves.
Recommended
Newsletter