Build PostHog Cohorts for Lifecycle Analysis
Choose static membership for a fixed historical group and dynamic rules for a group meant to change. Document the time window because a cohort label such as active users is incomplete without it.
Before you start: Have identified events or reliable person properties and a written lifecycle question. Know whether the analysis needs today’s membership or membership at an earlier point.
Worked example: A weekly engaged cohort includes people who saved a report in the last seven days. A release follow-up cohort might instead freeze the users invited to the beta on launch day.
Step-by-step guide
State the lifecycle question
Choose whether the cohort represents acquisition, engagement, dormancy or a fixed research audience. Define the user opportunity before choosing conditions.
Choose the membership model
Open People, then Cohorts, and click + New Cohort. Choose dynamic rules for changing membership or a static population for a fixed study group. Keep the purpose in the name so later readers know whether membership can change.
Write explicit rules
For the engaged example, choose the completed-event criterion, select report saved and set the last seven days. Add relevant person-property and internal-user exclusions. For a fixed list, use the static cohort’s upload or person-selection controls.
Validate known users
Check an included user, an excluded user and a boundary case near the time cutoff. Correct identity or property issues before interpreting cohort size.
Apply to one analysis
Use the cohort in a relevant insight and compare it with an explicitly defined baseline. Do not treat current membership as historical membership without checking semantics.
Save the definition
Save the cohort with its purpose and owner. Ordinary dynamic cohorts refresh periodically rather than instantly; PostHog documents a 24-hour update cycle, with realtime cohorts rolling out separately. Preserve a dated static snapshot when the decision needs reproducible membership.
Common mistakes
Active without an interval
Membership becomes ambiguous. State the event and time window.
Dynamic treated as fixed
Today’s cohort can change tomorrow. Freeze membership when the question requires it.
Missing identification
Behavioral records may not connect to the intended people. Validate identity before counting.
Tips
Name the cohort after its criteria rather than a marketing label.
Check a boundary user near the cutoff.
Preserve fixed study populations separately from rolling segments.
Sources and verification
Based on product documentation checked on 2026-10-24. This is a documentation-based guide, not a hands-on benchmark. Features and availability can change.