---
title: "List CRM Groups"
method: GET
path: "/crm-groups"
tags: ["CRM Groups"]
---

# List CRM Groups

`GET /crm-groups`

Paginated list of CRM Groups for this shop — creator cohorts you can target or exclude in automations. Membership is live for filter-built groups and frozen for groups built from a dashboard segment; see `conditions` on each group. Create segment-based groups with POST /crm-groups/from-segment; filter-built groups are still portal-only.

## Query parameters

- `page` integer
- `page_size` integer
- `name_contains` string, nullable

## Response `200`

Successful Response

- CrmGroupsPaginatedResponse
  - `data` CrmGroupResource[], required
    - `crm_group_id` string, required — UUID — stable across creator membership changes.
    - `name` string, required
    - `description` string, nullable
    - `conditions` CrmGroupCondition[] — Filter conditions joined with AND. Membership semantics depend on how the group was built: filter-built groups are dynamic and creators flow in/out as their attributes change, while groups created from a dashboard segment (POST /crm-groups/from-segment) are snapshots whose members were fixed at creation. A single `creatorNames` condition is the signal for the latter.
      - `field` string, required — e.g. 'status', 'products', 'shop_gmv'.
      - `operator` string, required — e.g. 'is_one_of', 'gte'.
      - `value` unknown, required
      - `value_count` integer, nullable — Set only when `value` is a long list that has been sampled down. It is the true length; `value` holds the first 50 entries. Groups built from a dashboard segment store their whole membership inline, so this is common on those. Read the group's `creator_count` for its size, not `len(value)`.
    - `creator_count` integer, required — Current member count.
    - `last_synced_at` string, nullable — Group DEFINITION write time (`crm_groups.updated_at`), NOT a membership evaluation — it can be far older than the members (an edit doesn't even bump it). For membership freshness read ``members_last_changed_at``. Kept for backward-compat.
    - `members_last_changed_at` string, nullable — When a creator most recently entered this group (MAX crm_creator_group_mappings.added_date) — the freshness signal the portal shows. Null if the group has no members.
  - `pagination` unknown, required

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/reacherapp/apis/reacher-data-api.md) · [All operations](https://skmtc.dev/reacherapp/apis/reacher-data-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/reacherapp/reacher-data-api/revisions/5eefff009b5b/schema)
