ScaleBun
Skip to article

Cohorts

Administrator

Cohorts in the Analyze area (Behavior) — route /analyze/cohorts.

Updated Reviewed

Cohorts lives in the Analyze area of the dashboard, under Behavior.

At a glance#

Dashboard route/analyze/cohorts
AreaAnalyze (analyze)
GroupBehavior
PlatformsAvailable for every app platform.

What it does#

Behavioural cohorts are durable, materialised audiences defined by what people did — "bought but never returned", "viewed pricing three times without signing up", "completed onboarding then went quiet".

Rules combine four kinds of condition:

RuleMeaning
didPerformed the event.
did_notDid not perform the event.
countPerformed it at least / at most N times.
sequencePerformed events in a given order.

The backend materialises membership, so this page manages the definitions, shows each cohort's freshness, and lets you refresh it.

When to use it#

When the group is defined by behaviour over history rather than by current attributes. did_not and sequence are the two rules nothing else here offers, and they are where the value is: "did X but not Y" is the shape of almost every interesting retention question.

Three neighbouring concepts, deliberately distinct:

FeatureHow membership works
SegmentsA filter evaluated on read. Always current, never materialised.
Behavioural cohortsMaterialised by the backend. Fast to use, refreshed on a cadence.
Retention cohortsGrouped by when users arrived, for a retention grid.

Workflow#

  1. Check freshness before acting on a cohort

    Membership is materialised, so it is as of the last refresh — not as of now. This is the trade for it being fast, and the page shows you the age.

  2. Build the negative condition explicitly

    did_not needs a window to be meaningful. "Never purchased" and "has not purchased in 30 days" are very different cohorts.

  3. Use sequence sparingly

    Order matters less often than people assume, and a sequence rule that is too strict silently matches almost nobody.

  4. Refresh after an instrumentation change

    A renamed event breaks the rule that referenced the old name. The cohort will not error; it will just shrink.

Permissions and prerequisites#

Requires event history and, for person-level accuracy, identified users.

Limits and edge cases#

  • Materialised means stale between refreshes. For a group that must be exactly current, use a segment.

  • did_not over all history is expensive and rarely what you want. Bound it.

  • A cohort built on a renamed event quietly empties. Nothing errors, because "did not do X" is trivially true for an event nobody sends.

  • Membership can shrink as well as grow on refresh, which surprises people expecting a cohort to be append-only.

Troubleshooting#

Cohort is empty. Remove conditions one at a time. sequence and unbounded did_not are the two most common causes.

Size dropped sharply after a refresh. An event name it depends on stopped arriving. Check Events.

Where the data comes from#

Served by

  • Cohorts

Cohorts · Analyze · Dashboard · ScaleBun