> ## Documentation Index
> Fetch the complete documentation index at: https://docs.thread.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Cohorts

> Enroll customers at scale from a pasted CSV and watch each enrollment wave move through the funnel together.

Cohorts are how you enroll customers with a guide at scale — paste a list, map the columns, confirm — and how you watch each wave move afterward. You'll find them under **Guides › Cohorts**.

<Frame>
  <img src="https://mintcdn.com/threadsolutionsinc/zrnqSMRcQ5MGUbqN/images/screenshots/guides/cohort-detail.png?fit=max&auto=format&n=zrnqSMRcQ5MGUbqN&q=85&s=6d6da2a230e222410e9f9e19ff595486" alt="A weekly cohort detail: five stage cards partitioning 26 customers, and the roster with stage, the guide's last action, days in stage with a STALL chip, and a blocker column" width="3200" height="2000" data-path="images/screenshots/guides/cohort-detail.png" />
</Frame>

<Note>
  Cohorts, like the rest of the Guides authoring surfaces, are visible to **org admins**. See
  [User management](/admin-guide/user-management).
</Note>

## What a cohort is

A cohort is not a container you create — it's a time bucket derived from when each customer enrolled. The moment a customer enrolls with a guide, they land in the cohort for that day, that week, and that month, and they stay there permanently: a cohort is a property of *when it happened*, not a label anyone assigns or moves.

That has two useful consequences:

* **Every door joins automatically.** Customers enrolled one at a time from the guide page and customers enrolled in a CSV batch bucket the same way — there's nothing to add them to.
* **Day, week, and month are three views of the same customers**, not three kinds of cohort. The list has a granularity switcher; flipping it re-groups the same enrollments.

## Enroll a batch

Click **Enroll customers** on the Cohorts page to open the three-step flow: **Paste customers → Map columns → Start & confirm**.

<Steps>
  <Step title="Paste customers">
    Pick the **guide** the whole batch enrolls with — its enabled channels decide who counts as reachable, so the picker shows each guide's channels (and warns when a channel has no sender yet). Then paste your CSV. The template columns are **company, contact, phone, email, account owner, account owner email, AE, AE email** (a template download is on the page); a header row is detected automatically, and only a way to reach the customer — a phone or an email — is required. A live count and preflight verdicts appear as you paste.
  </Step>

  <Step title="Map columns">
    Each field is auto-matched to a column by its header (with a positional fallback for headerless pastes); you can remap anything with the per-field selectors, each showing sample values from your paste. A preview of the first five rows shows every row's preflight badge, so a mapping mistake is visible before you go further. The contact is the person the guide addresses; owner and AE are your team — their names give the guide context, and their emails are where it pages when it needs them.
  </Step>

  <Step title="Start & confirm">
    The preflight card tallies the batch, the timing card states when outreach begins, and a consent attestation checkbox gates the confirm button. Confirm runs the batch and shows a result panel listing every row's outcome — enrollments and refusals alike, never silently dropped.
  </Step>
</Steps>

## Preflight badges

Every row is judged before anything is written, and every excluded row states its reason in plain words:

| Badge                | Meaning                                                                                                                                                                             |
| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Ready**            | Enrolls on confirm.                                                                                                                                                                 |
| **Invalid**          | A field failed validation — a missing contact name, a phone that isn't E.164, a malformed email.                                                                                    |
| **Duplicate**        | The same customer appears earlier in this paste.                                                                                                                                    |
| **Already enrolled** | This customer already has a live enrollment with the chosen guide. Re-pasting is safe — they refuse rather than duplicate.                                                          |
| **Opted out**        | The customer previously texted STOP or unsubscribed. A row with an opted-out phone but a clean email (on an email-enabled guide) still enrolls, email-only, with a visible warning. |
| **Unreachable**      | No address matches a channel the chosen guide has enabled.                                                                                                                          |

The client-side judgment is advisory; the server re-checks everything at confirm.

## The consent attestation

The confirm step is blocked until you check the attestation: *these customers agreed we may text and call them about this outcome*. Your attestation — who checked it and when — is recorded on every customer enrolled. There is no way to skip it; a batch row without consent is refused before anything is written. See [Compliance](/guides/compliance).

## How large batches go out

Guides open each conversation themselves, and big batches are paced honestly rather than promised instantly: the first **96** ready customers get their first outreach within the hour, and the rest follow in hourly waves of 96. The confirm screen states the full schedule for your batch before you commit. Batches are capped at **500** rows — for more, split the paste and confirm it in parts (safe, since already-enrolled customers refuse rather than duplicate).

If your organization's texting registration is still verifying with carriers, texts hold until it clears while email legs go out on schedule — the confirm step calls this out when it applies.

## The cohort list

The Cohorts page lists every bucket with at least one enrollment, newest first, under a **Day / Week / Month** switcher:

* **Customers** — how many enrolled in that window.
* **Stages** — a partition bar across the five funnel stages (enrolled → reached → engaged → verifying → done). Segments sum to the cohort, so it reads as "where everyone is right now."
* **Verified** — outcomes closed by a fresh source read only. An operator's manual confirmation counts as done, but not as verified — green is earned. See [Outcomes and verification](/guides/outcomes-and-verification).
* **Stall rate** — the share of customers sitting in a stage short of done for 7+ days. It's flagged when it reaches 15%.

## The cohort detail page

Open a cohort to see five stage cards — one per funnel stage, always shown, each with its count and share of the cohort. Clicking a card filters the roster to that stage.

The roster shows, per customer:

* **Company** — the contact's name, with the company as a subline.
* **Stage** — their current funnel stage, plus a status lane when it applies: **Needs you** (the guide paged you) or **Paused**.
* **Guide's last action** — a one-line summary of the most recent thing the guide did, with a relative timestamp. Attempts are phrased "sent," never "delivered."
* **In stage** — days in the current stage, with a **STALL** chip at 7 days short of done.
* **Blocker** — a derived read on what's holding the row: **Awaiting you** (the guide needs your input), **Awaiting approval** (a proposed call or close awaits your tap), **No response** (repeated sends since their last reply), or **Send blocked** (a send was refused — an opt-out, a gate).

Filters compose: the blocker dropdown, days-in-stage presets (Any / 3+ / 7+), a **Stalled only** toggle, and the stage chip, with an n-of-N counter showing what survived.

Clicking a row opens a read-only drawer: the customer's facts, verification status, and the same certified activity log the watch page renders — including the "Enrolled via CSV upload" provenance line for batch rows. To act on a customer (message, nudge, pause, confirm), follow the drawer's **Open watch page** link; see [The watch page](/guides/watch-page).

## Current limits

<Note>
  Cohorts are new, and a few things aren't built yet:

  * **Paste only.** There's no file-upload picker yet — copy your spreadsheet's cells and paste them.
  * **Scheduled starts aren't available yet.** The option renders in the flow but is disabled; batches enroll now.
  * **No bulk actions from the roster yet.** Operator verbs (nudge, pause, re-enroll) run per customer from the watch page; acting on many rows at once is coming.
</Note>

## Related

* [Enrolling customers](/guides/enrolling-customers) — enrolling one customer at a time.
* [Outcomes and verification](/guides/outcomes-and-verification) — the five stages and what "verified" means.
* [Channels](/guides/channels) — how texting, email, and voice behave per channel.
