코호트
무엇을 하는지 또는 무엇인지로 정의된 사람들의 집합: 모든 코호트는 이름과 정의이며, 정의는 쓰인 대로 읽히는 절입니다. 이 이벤트를 며칠 안에 몇 번 했다, 또는 이 속성이 이 값이다. 빈 정의는 아무도 선택하지 않으며, 이는 의도된 것입니다.


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.