Skip to main content

Overview

Cohorts are dynamic user segments based on behaviors or attributes. Use cohorts to compare user groups, filter reports, and understand how different segments perform.

What Are Cohorts?

A cohort is a saved definition of “users who match these criteria”:
Cohort: "Power builders"
Definition:
├── Has done: agent_run_completed
│   └── At least 10 times
│   └── In the last 30 days
├── AND user property: plan = "enterprise"
Dynamic: Cohorts automatically update as users match or unmatch the criteria.

Creating Cohorts

Visual Query Builder

Build cohorts with the intuitive AND/OR interface:
1

Start New Cohort

Navigate to CohortsNew Cohort
2

Add Criteria

Click Add Criteria and choose:
  • Event: Users who did (or didn’t do) an event
  • User Property: Users with specific attributes
  • Cohort: Users in another cohort
3

Combine with AND/OR

┌────────────────────────────────────────┐
│ Users who:                              │
│                                         │
│ [Did] [agent_run_completed] [at least 5x]   │
│                                         │
│  ── AND ──                             │
│                                         │
│ [Have property] [plan] [=] [pro]       │
│                                         │
│  ── OR ──                              │
│                                         │
│ [Did] [premium_feature_used]           │
└────────────────────────────────────────┘
4

Preview & Save

Preview matching users count, then save with a name

Criteria Types

Event-Based Criteria

Users who:
├── Did [event_name]
│   ├── Frequency: at least N times / exactly N times / at most N times
│   ├── Time frame: in the last N days / between dates / ever
│   └── Where: [property filters]

└── Did NOT do [event_name]
    └── Time frame: in the last N days / ever
Examples:
✓ Did "agent_run_completed" at least 5 times in the last 30 days
✓ Did NOT do "integration_connected" in the last 7 days
✓ Did "workflow_published" where surface = "in_app"

Property-Based Criteria

Users where:
├── [property_name] [operator] [value]

│ Operators:
│ ├── String: is, is_not, contains, is_set, is_not_set
│ ├── Number: =, ≠, >, ≥, <, ≤, between
│ └── Boolean: is_true, is_false
Examples:
✓ plan is "pro"
✓ successful_runs > 50
✓ has_completed_onboarding is_true
✓ email is_set

Cohort-Based Criteria

Nest cohorts for complex segments:
Users who:
├── Are in cohort "Active Traders"
├── AND are NOT in cohort "Churned Users"

AND/OR Logic

Combine criteria with logical operators: AND (all must be true):
Users who:
├── Did agent_run_completed (5+ times)
├── AND country = "US"
├── AND plan = "pro"
OR (any can be true):
Users who:
├── Did agent_run_completed (5+ times)
├── OR did workflow_published
├── OR seat_count > 25
Nested logic:
Users who:
├── (Did agent_run_completed AND workflow_id = "weekly_report")
├── OR
├── (Did agent_run_completed AND workflow_id = "crm_sync" AND count >= 10)

Dynamic Cohorts

Cohorts are dynamic—they auto-update as users match or unmatch criteria.
Day 1:
"Active builders" cohort: 500 users

Day 7:
- 50 new users matched (5+ runs)
- 30 users unmatched (30-day window moved)
"Active builders" cohort: 520 users
Recomputed: On each query, ensuring up-to-date membership.

Using Cohorts

In Reports

Filter any report by cohort:
Insights Report:
├── Event: agent_run_completed
├── Filter: Cohort = "Power builders"
└── See metrics for that segment only

In Funnels

Compare conversion across cohorts:
Funnel: Landing → Signup → Activation
├── Cohort A: "Twitter users" → 8% conversion
├── Cohort B: "Discord users" → 15% conversion
└── Cohort C: "Organic" → 12% conversion

In Retention

Analyze retention by cohort:
Retention:
├── Birth: signup_completed
├── Return: agent_run_completed
├── Filter: Cohort = "High-value workspaces"
└── See retention for that segment

In Breakdowns

Break down metrics by cohort:
Breakdown by cohort:
├── Power builders: 45% of runs
├── Casual users: 35% of runs
└── New users: 20% of runs

Example Cohorts

By Activity Level

"Power Users"
├── Did any_event at least 50 times
├── In the last 30 days

"Casual Users"
├── Did any_event at least 5 times
├── AND at most 20 times
├── In the last 30 days

"At-Risk Users"
├── Did any_event in the last 90 days
├── AND did NOT do any_event in the last 14 days

By depth of usage

"High workspaces"
├── User property: seat_count > 50
├── OR did workflow_published at least 5 times in the last 30 days

"Multi-integration"
├── Did integration_connected where provider = "slack"
├── AND did integration_connected where provider = "salesforce"

"Newly activated"
├── Did agent_run_completed in the last 7 days
├── AND did NOT do agent_run_completed before 7 days ago

By lifecycle

"New Users (This Week)"
├── User property: first_seen in the last 7 days

"Completed Onboarding"
├── Did onboarding_completed

"Churned"
├── Did any_event in the last 90 days
├── AND did NOT do any_event in the last 30 days

By Source

"Twitter Acquisition"
├── User property: utm_source = "twitter"
├── OR initial_referrer contains "twitter.com"

"Organic Search"
├── User property: utm_medium = "organic"
├── OR initial_referrer contains "google.com"
├── OR initial_referrer contains "bing.com"

Agent / automation

"Heavy automation"
├── Did workflow_published at least 3 times
├── AND did run_succeeded at least 20 times
├── In the last 30 days

"Template-first"
├── Did template_applied at least 5 times
├── OR user property: favorite_template_id is_set

Managing cohorts

Viewing Membership

See current cohort members:
"Power builders" - 523 users
├── user_12345 (matched 3 days ago)
├── user_67890 (matched 1 week ago)
├── user_abc (matched 2 weeks ago)
└── ... (520 more)

Editing Cohorts

  1. Open cohort
  2. Modify criteria
  3. Preview new membership count
  4. Save changes
Editing a cohort affects all reports using it. Changes apply immediately.

Deleting Cohorts

  1. Open cohort
  2. Click Delete
  3. Confirm (cannot be undone)
Reports using a deleted cohort will show errors. Update or remove cohort filters before deleting.

Best Practices

Name Descriptively

✅ Good names:
"Active Traders (30d, 5+ swaps)"
"High-Value Users (>$10k volume)"
"Twitter Acquisition - Q1 2024"

❌ Poor names:
"Cohort 1"
"Test"
"Users"

Keep Criteria Focused

✅ Focused:
Users who completed 10+ agent runs in 30 days

❌ Overly complex:
Many unrelated AND conditions that are hard to reason about and maintain

Document Logic

Add descriptions to cohorts:
Name: "Churn Risk"
Description: Users active 30-90 days ago but not in last 30 days.
             Use for win-back campaigns.

Review Periodically

Cohort definitions may need updates:
  • Feature renames (event names change)
  • Business logic changes
  • Criteria become too broad/narrow

Next Steps

Filters & Operators

All filter options

Insights

Use cohorts in reports