Hero
Back to all articles

What Is Cohort Analysis? A Practical Guide to Retention & Churn

Cohort analysis groups users by when they signed up or what they did, then tracks each group over time. Learn to read a retention curve and cut churn.

OpenPanel Team

2026-05-29

Updated on 2026-05-29

Your dashboard says you have 12,000 active users this month, up from 11,000 last month. Good news? You can't tell. That single number hides whether you're keeping the users you already had or just replacing the ones who left.

Cohort analysis is how you find out. It groups users by something they share — the week they signed up, or an action they took — and then tracks each group over time. Instead of one blurry total, you get a clear picture of who sticks around, who leaves, and when.

This guide explains what cohort analysis is, how to read a retention curve, how to run one step by step, and where it quietly lies to you.

What is cohort analysis?

A cohort is a group of users who share a starting point. Everyone who signed up the same week is one cohort. Everyone who placed their first order in March is another. Cohort analysis tracks each of these groups separately as time passes, so you can compare how different groups behave instead of mashing them into one average.

The mental model is a spreadsheet grid. Each row is a cohort. Each column is a period of time after their start — week 1, week 2, week 3, and so on. Each cell shows how many of that cohort were still active in that period. Because older cohorts have had more time to age, the filled-in cells form a triangle.

Here's why this matters. Say overall retention looks flat at 30%. That average could mean every cohort retains at a steady 30%, or it could mean your old cohorts are collapsing while new ones retain at 45%. Those are opposite situations — one is healthy, one is on fire — and a single number can't tell them apart. Cohort analysis can.

Acquisition vs behavioral cohorts

There are two ways to group users, and they answer different questions.

Acquisition cohorts

Acquisition cohorts group users by when they started — signup week, first-purchase month, install date. This is the default kind of cohort, and it answers one question well: are newer users retaining better or worse than older ones?

If you shipped a new onboarding flow in April, compare the March cohorts against the April cohorts. If April retains better four weeks in, the onboarding flow worked. Acquisition cohorts turn "we changed something" into "we changed something and retention went up 9 points."

Behavioral cohorts

Behavioral cohorts group users by what they did — created a dashboard, invited a teammate, hit some activation milestone in their first week. These answer the more valuable question: which actions actually predict retention?

If users who connect an integration in week one retain at 60% and everyone else retains at 25%, you've found your activation lever. Now you have a reason to push every new user toward that action.

Acquisition cohortBehavioral cohort
Grouped byWhen users started (signup week or month)An action they took (used a feature, hit activation)
AnswersAre newer users retaining better than older ones?Do users who do X retain better than those who don't?
ExampleEveryone who signed up in MarchEveryone who created a dashboard in week 1
Best forMeasuring whether changes improved retention over timeFinding the actions that drive retention

Most teams start with acquisition cohorts to track the trend, then switch to behavioral cohorts to find the levers behind it.

How to read a cohort table

This is where people get stuck, so let's read a real one. Below is weekly retention for four signup cohorts. Week 0 is the signup week (always 100%), and each later column is the share of that cohort who came back and did something meaningful that week.

Signup weekUsersWeek 0Week 1Week 2Week 3Week 4
Mar 3480100%41%33%29%27%
Mar 10510100%39%31%28%26%
Mar 17465100%44%36%33%31%
Mar 24530100%47%40%36%34%

Read it two ways.

Across a row you see the retention curve for one cohort. The Mar 3 group drops from 100% to 41% in a single week, then the decline slows: 33%, 29%, 27%. That early cliff is normal — most products lose a big chunk of signups immediately. What matters is whether the curve flattens. A curve that flattens means you've found a core of users who keep coming back. A curve that keeps sliding toward zero means you have a leaky bucket and no real retention.

Down a column you compare cohorts at the same age. Look at Week 4: 27%, 26%, 31%, 34%. Later cohorts retain better. Something you did in mid-to-late March improved four-week retention by about 8 points. That trend — reading down the columns — is the single most useful thing a cohort grid gives you, and it's invisible in any total-active-users chart.

How to run a cohort analysis, step by step

You don't need SQL or a spreadsheet full of VLOOKUPs. Any product analytics tool with a retention report will build the grid for you. Here's the process.

  1. Identify your users. Cohort analysis needs to recognize the same person across visits. That means calling an identify method when someone logs in, so events tie to a stable user ID instead of an anonymous session. See identifying users for how this works.
  2. Pick the cohort definition. Start with an acquisition cohort (signup date) to get your baseline retention trend. Once that's running, add a behavioral cohort around a suspected activation action.
  3. Pick the return event. Decide what "retained" means. A login doesn't count for much. Pick an event that represents real value — viewed a report, sent a message, completed an order. Retention is only as honest as the event you choose.
  4. Choose the interval. Daily for high-frequency consumer apps, weekly for most B2B and SaaS products, monthly for low-frequency tools like tax software. Match the interval to how often a healthy user is supposed to come back.
  5. Read the grid, then the curve. Scan down the columns for the cohort-over-cohort trend, then across the rows to see where the curve flattens. Build the report once in a tool like OpenPanel's retention view and it updates as new cohorts mature.

A worked example

A small SaaS team is worried about churn. Their total active users are flat, which they read as "stable." The cohort grid tells a different story.

Their March acquisition cohorts retain around 22% at week four. In early April they ship an onboarding checklist that nudges new users to create their first dashboard. The April cohorts come in at 31% at week four — a 9-point lift that flat top-line numbers completely hid.

Then they build a behavioral cohort: users who created a dashboard in week one versus those who didn't. The dashboard-creators retain at 48%; everyone else at 19%. Now they have proof, not a hunch. Creating a dashboard is the activation moment, so the next quarter's work is obvious: get more new users to that moment, faster.

This is the difference between cohorts and a conversion funnel. A funnel shows where users drop off on the way to a goal in one short window. A cohort shows whether they keep coming back weeks later. You need both: the funnel finds the leak in signup, the cohort tells you whether the people who got through actually stay.

When cohort analysis misleads

Cohort grids look authoritative, which makes their failure modes dangerous. Watch for these.

  • Small cohorts are noise. A cohort of 30 users swinging from 20% to 40% retention is probably randomness, not a trend. Don't make decisions on cohorts smaller than a few hundred users unless the effect is huge.
  • Seasonality fakes trends. A cohort that signed up the week before a holiday will look worse than one from a normal week, for reasons that have nothing to do with your product. Compare like with like.
  • Vanity return events. If "retained" means "opened the app," your retention will look great and mean nothing. Tie retention to an event that represents value.
  • Changing the definition mid-stream. If you redefine the return event or the activation action halfway through, old and new cohorts stop being comparable. Lock your definitions before you start reading trends.
  • Survivorship blindness. The grid shows who stayed. To understand churn you also have to look at the users who left — what they did, or failed to do, before they went quiet.

Cohorts, segments, and funnels

These three get mixed up constantly. Quick version:

  • A funnel measures steps toward a goal over a short window (view → add to cart → checkout). It answers where do people drop off?
  • A cohort measures one group over a long window. It answers do people keep coming back?
  • A segment is a filter you can apply to either one — "users in Germany," "mobile signups." It answers which slice are we even looking at?

They work together. Segment a cohort by acquisition channel and you'll often find paid signups retain far worse than organic ones — the kind of insight that changes where you spend money.

OpenPanel is an open-source analytics platform with retention and cohorts built in, alongside funnels and event tracking. Build acquisition and behavioral cohorts, read the retention curve, and find your activation lever — without sending user data to a third party.

It's cookieless by default, so there's no consent banner to slow anything down, and it's a credible Mixpanel alternative at a fraction of the cost. Use the cloud (Frankfurt-hosted EU option, from $2.50/month with a 30-day free trial) or self-host the whole thing for free with one Docker Compose command (ClickHouse, Postgres, and Redis included). The self-hosted version has the same features as cloud — no gated reports.

Loved by builders everywhere

From indie hackers to global teams, OpenPanel helps people understand their users effortlessly.

  • Steven Tey
    Steven Tey
    @steventey

    Open-source Mixpanel alternative just dropped → http://git.new/openpanel

    It combines the power of Mixpanel + the ease of use of @PlausibleHQ into a fully open-source product.

    Built by @CarlLindesvard and it’s already tracking 750K+ events 🤩

  • Pontus Abrahamsson - oss/acc
    Pontus Abrahamsson - oss/acc
    @pontusab

    Thanks, OpenPanel is a beast, love it!

  • Piotr Kulpinski
    Piotr Kulpinski
    @piotrkulpinski

    The Overview tab in OpenPanel is great. It has everything I need from my analytics: the stats, the graph, traffic sources, locations, devices, etc.

    The UI is beautiful ✨ Clean, modern look, very pleasing to the eye.

  • greg hodson 🍜
    greg hodson 🍜
    @h0dson

    i second this, openpanel is killing it

  • Jacob 🍀 Build in Public
    Jacob 🍀 Build in Public
    @javayhuwx

    🤯 wow, it's amazing! Just integrate @OpenPanelDev into http://indiehackers.site last night, and now I can see visitors coming from all round the world.

    OpenPanel has a more beautiful UI and much more powerful features when compared to Umami.

    #buildinpublic #indiehackers

  • Lee
    Lee
    @DutchEngIishman

    Day two of marketing.

    I like this upward trend..

    P.S. website went live on Sunday

    P.P.S. Openpanel by @CarlLindesvard is awesome.

  • Thomas Sanlis
    Thomas Sanlis
    @T_Zahil

    We're now sponsoring @OpenPanelDev with Uneed 🥳

    If you're looking for open source analytics, OpenPanel is BY FAR the best I've ever seen

    Bonus: 1-click install on Coolify 🥰

Ready to understand your users better?
Start tracking in minutes

Join thousands of companies using OpenPanel. Free 30-day trial, no credit card required. Self-host for free or use our cloud.

Start free trial