コホート
何をするか、何であるかで定義された人々の集合: すべてのコホートは名前と定義であり、定義は書かれたとおりに読める条項です。このイベントを何日以内に何回行った、またはこの属性がこの値を持つ。空の定義は誰も選びません。それは設計です。


The library
Each card is one cohort: its name, whether it is active, how many people it currently selects and how fresh that answer is. A cohort whose clauses count behaviour over history is swept on a schedule and says when it was last evaluated, or that it never has been; one defined purely by current attributes is live and carries no timestamp, because a timestamp would imply a staleness it does not have. The toolbar narrows by search, kind and state, and deleting asks first, warning that analyses filtered by the cohort stop being filtered by it.
三つめの種類は静的です: 定義ではなく、固定された人々のリストです。分析のワークベンチで結果から Save によって残すか、New cohort のダイアログに貼り付けたリストから作ります。再評価は一度も行われないので、掃き取り型のコホートがタイムスタンプを示す場所に、そのカードは一度もなし、それは設計ですと記します。開くと、定義ではなくリストそのものが広がります。何人を保持しているか、リストがどこから来たか、Add people、そして各行の横にある削除です。
The definition editor


Opening a card unfolds its definition in place: behavioural clauses (did an event at least so many times within so many days, with the project's own event names suggested) and state clauses (an attribute compared to a value). A cohort is named first and defined after, and an empty definition selects nobody rather than everybody, which the open row says in as many words. Opening a second card does not close the first, so two definitions can be compared side by side without losing edits.
New cohort はまず名前を尋ね、次に Membership を尋ねます。二つの種類は作り方が違い、コホートに名前を与えるダイアログこそが種類の決まる場所だからです。Defined by rules は上で述べた定義を与えます。A fixed list of people は distinct id の欄を現し、一行にひとつ、一度に 10,000 まで受け取り、あとから足すこともできます。そうして作られたコホートは、人々を内に抱えたまま生まれ、すぐに有効です。
Where cohorts are used
A cohort scopes a question in the Analytics workbench, targets a campaign in the Inbox, and gates workflow triggers on the Workflows screen. The same set of people, wherever the set is needed.
行のコピー先…は、この対象にチェックが入った状態で設定のコピーを開きます。プロジェクト、設定のコピーを参照してください。
Where this meets the API
The concept behind the screen is the People and cohorts pillar; the people being selected are the People directory. On the wire: the library is the cohorts query, cohort reads one and cohortMemberCount counts its people; editing is createCohort, updateCohort, setCohortActive and deleteCohort; a static cohort is born by createStaticCohort from a pasted list or by createCohortFromResult from a result, its list moves by addCohortMembers and removeCohortMembers, and cohortMembers reads it back a page at a time (GraphQL reference).
The definition as JSON
A rules cohort's definition is one JSON object, the definition argument of createCohort and updateCohort and the definition field of the MCP tools prodantix.cohorts.create and prodantix.cohorts.update. It holds clauses, a list of at most 32, and a person is a member when every clause matches. An empty list selects nobody. A field the shape does not name is refused, so read an existing cohort with cohort or prodantix.cohorts.get before changing one.
{
"clauses": [
{ "kind": "state", "condition": { "attribute": "plan", "op": "eq", "value": "pro" } },
{ "kind": "state", "condition": { "attribute": "country", "op": "in", "value": ["DE", "AT", "CH"] } },
{ "kind": "behavioural", "event": "purchase", "atLeast": 3, "withinDays": 30 }
]
}State clauses
{ "kind": "state", "condition": { ... } }. The condition names an attribute, one of the person's properties or distinct_id, an op and, for most operators, a value. The operators are eq, neq, in, not_in, contains, gt, gte, lt, lte, is_set, is_not_set. eq, neq and contains compare as text; gt, gte, lt and lte compare as numbers; in and not_in take a list of values; is_set and is_not_set take none, and a property that is empty text counts as not set. A cohort made only of state clauses is live: a person joins or leaves the moment an event changes the property. The two cohort operators of flag targeting, in_cohort and not_in_cohort, are refused here: a cohort cannot be defined by another cohort.
Behavioural clauses
{ "kind": "behavioural", "event": "purchase", "atLeast": 3, "withinDays": 30 }: the person did the event at least atLeast times in the last withinDays days. Both are whole numbers, and a person counts only once they did the event at all, so an atLeast of 0 reads as 1. One behavioural clause makes the cohort swept: its members are worked out on a schedule rather than as events land, and the cohort says when it last was.
Static cohorts
A static cohort's definition is { "kind": "static", "clauses": [] }: its members are a list somebody wrote, not rules. Given to createCohort it makes an empty list; createStaticCohort or prodantix.cohorts.create_static makes one holding its people, and createCohortFromResult makes one from a result. An update cannot turn a rules cohort into a static one or back; make a new cohort of the kind you want.