A group sharing a characteristic
A cohort is a group of users defined by a shared starting condition, usually the time they arrived, then tracked forward to see how their behaviour changes. Holding the start fixed is the whole trick: it lets you compare January's signups with March's on equal terms, and it separates a product that is genuinely improving from one that is merely growing its top line while every batch of new users quietly leaks away.
Cohort analysis is borrowed from epidemiology, where a cohort study follows a group exposed to similar conditions over time and reads outcomesOutcomeStrategyA desired business or user outcomeView reference → against that fixed longitudinal frame. The method entered business as companies looked for behavioural insight beyond aggregate metrics, because an aggregate retention number hides the thing that matters: whether the product is getting better at keeping each successive intake.
The move into software product analytics came with the subscriptionSubscriptionSales & RevenueA recurring subscriptionView reference → and SaaS era, when retention, not a single purchase, decided whether a business compounded. Practitioners formalised the retention curve, the percentage of a cohort still active at day 1, day 7, day 30, and the comparison of curves across acquisition windows became a standard health check. Retention is calculated as active users from a cohort divided by the cohort's original size, read at each interval.
The refinement that growth teams now treat as doctrine is that a flattening retention curve, one that levels off above zero rather than decaying to it, is the real signal of product-market fit. A curve that keeps falling means the product never finds a durable habit, however good the top-of-funnelFunnelGrowthA conversion funnel tracking user progressionView reference → looks. Cohorts make that distinction legible in a way a blended retention figure never can.
A meal-planning app ships a redesigned onboarding flow on 1 March. To judge it honestly, the team compares the February cohort against the March cohort rather than watching the blended number, which would mix old and new users and blur the effect.
February's cohort, 5,000 users, retains 41 percent at day 7 and 22 percent at day 30. March's cohort, 5,300 users, retains 47 percent at day 7 and 26 percent at day 30. The day-7 lift is real and it survives to day 30, so the onboarding change improved durable retention, not just first-session curiosity. Had day 7 risen while day 30 stayed flat, the read would be a novelty bump that fades, and the team would have shipped a worse product while congratulating itself.
In the Unified Product Graph, a cohort lives in the Growth domain within the Business, GTM and Growth region. It connects to the people it stands for through CohortrepresentsPersonacross-domain, draws its definition from a cohort_represents_personaCohortdefined byBehavioral Segmentsemantic edge, and reads its numbers via cohort_defined_by_behavioral_segmentCohortmeasured byMetriccausal. The cohort_measured_by_metricCohortexposed toExperiment Runcross-domain edge ties a cohort to the experimentExperimentValidationA test designed to validate a hypothesisView reference → it tests, which is where retention analysis and experimentation meet. The schema also carries the region's anti-pattern guard against "growth without retention", because acquiring users who churn is expensive waste, and a cohort with no retention metricMetricStrategyA unified metric that measures progress, health, or behaviour across the productView reference → leaves that waste invisible.cohort_exposed_to_experiment_run
Type-specific fields on BaseNode
definitionstringHow this cohort is defined
acquisition_startstringStart of the acquisition window (ISO format)
acquisition_endstringEnd of the acquisition window (ISO format)
sizenumberNumber of users in the cohort
retention_day_7number7-day retention rate (0-1)
retention_day_30number30-day retention rate (0-1)
idstringrequiredUnique identifier (UUID)
typeNodeTyperequiredDiscriminator for the entity type
titlestringrequiredDisplay name
descriptionstringOptional detailed description
statusstringLifecycle status
tagsstring[]Freeform tags for filtering
5 edge types connected to this entity.
product_segments_into_cohortcohort_exposed_to_experiment_runcohort_represents_personacohort_defined_by_behavioral_segmentcohort_measured_by_metric