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

# Segments

> Dynamic and static audiences built from RFM tiers, consent, tags and predictive scores — with an AI natural-language builder.

A **segment** is an audience. Dynamic segments are live filters that re-evaluate every time you read them; static segments are a fixed membership list you curate.

## Dynamic vs static

<CardGroup cols={2}>
  <Card title="Dynamic" icon="bolt">
    A filter tree. "VIPs who haven't bought in 30 days." Membership is
    computed on read — always current.
  </Card>

  <Card title="Static" icon="lock">
    An explicit set of contacts. "The 200 people I hand-picked for early
    access." Members are added and removed by you.
  </Card>
</CardGroup>

## v1 filter fields

The segment builder and the AI parser expose eight fields:

| Field                 | Values                                                         |
| --------------------- | -------------------------------------------------------------- |
| `rfm_tier`            | RFM tier labels                                                |
| `tag`                 | Any tag on the contact                                         |
| `email_consent`       | `subscribed` / `unsubscribed` / `never_subscribed` / `cleaned` |
| `sms_consent`         | same as email                                                  |
| `purchase_likelihood` | `likely` / `unlikely` / `unknown`                              |
| `churn_likelihood`    | `high_risk` / `medium_risk` / `low_risk` / `unknown`           |
| `vip_likelihood`      | `likely` / `unlikely` / `unknown`                              |
| `responsive_channel`  | `email` / `sms` / `both` / `none` / `unknown`                  |

<Info>
  Direct API callers can also filter on safe native contact columns (name,
  email, phone, locale, timezone, created/updated dates, consent timestamps).
  A handful of fields (city, source, engagement, CLV) are gated as
  post-launch.
</Info>

## Predictive scores

Predictive fields are first-class and scored **daily** by a heuristic model (`heuristic_v1`), reproducible from an append-only score log.

<AccordionGroup>
  <Accordion title="Purchase likelihood" icon="cart-shopping">
    Will this contact buy soon? `likely` / `unlikely` / `unknown`.
  </Accordion>

  <Accordion title="Churn likelihood" icon="user-slash">
    Risk of going dormant. `high_risk` / `medium_risk` / `low_risk`.
  </Accordion>

  <Accordion title="VIP likelihood" icon="crown">
    High-value customer signal.
  </Accordion>

  <Accordion title="Responsive channel" icon="signal">
    Which channel this contact engages with — `email` / `sms` / `both` /
    `none`.
  </Accordion>
</AccordionGroup>

<Note>
  Every predictive value traces back to a stored snapshot with its model name
  and inputs. Scores are never invented — they're recomputed from real
  engagement.
</Note>

## Building a segment

<Tabs>
  <Tab title="Visual builder">
    Add conditions and groups. Combine with AND/OR. Live counts come from a
    preview endpoint as you build.
  </Tab>

  <Tab title="Natural language (AI)">
    Describe the audience in plain language ("engaged SMS subscribers likely
    to churn"). If your AI provider is configured, the request runs a tool
    loop that verifies the draft against your data and proposes a valid
    filter. Without a key configured, a local parser handles the common
    cases.
  </Tab>

  <Tab title="RFM presets">
    Start from RFM tier / consent / tag suggestions that create real
    segments with live counts.
  </Tab>
</Tabs>

## Using segments

* **Campaigns** target a segment.
* **Flows** use segments in audience gates and branch conditions.
* **Ad audiences** sync a segment 1:1 to Meta or Google Customer Match.
* **The API** filters contacts by `segmentId` and manages static membership.

See [Meta audiences](/en/integrations/meta-audiences) and [Google Customer Match](/en/integrations/google-customer-match) for outbound sync.
