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

# Tipos de cláusula

> Os blocos de condição que montam um segmento: traits, eventos, contagem, agregação, funil e pertencimento a outro segmento — cada um com seus campos, operadores e exemplos.

As **cláusulas** são os blocos de condição de um [segmento](/audiencia/segmentos). Cada cláusula é
uma pergunta que o PrismaFlow faz sobre o perfil ("comprou nos últimos 30 dias?", "tem gasto acima
de X?"). Você combina as cláusulas dentro de **grupos** e pode aninhar grupos para montar lógicas
complexas. No builder, clique no **+** para abrir o menu com todos os tipos:

<Frame caption="O menu 'Adicionar cláusula': grupos booleanos (E, OU, NÃO) no topo, depois cláusulas de trait, de evento e de segmento.">
  <img src="https://mintcdn.com/prismaflow/8OUHYg8TpA-Arbt8/images/anotadas/criar-segmento-clausulas-2.png?fit=max&auto=format&n=8OUHYg8TpA-Arbt8&q=85&s=7a3ee462ade5ec73fe2d2045e251134f" alt="Menu de tipos de cláusula com os grupos E, OU e NÃO" width="1600" height="1570" data-path="images/anotadas/criar-segmento-clausulas-2.png" />
</Frame>

## Grupos: E, OU e NÃO

Antes das condições, vêm os grupos, que dizem **como elas se combinam**:

* **E (AND)** — todas as condições filhas precisam ser verdadeiras.
* **OU (OR)** — pelo menos uma precisa ser verdadeira.
* **NÃO (NOT)** — **inverte** a condição filha. Serve para **excluir** quem bate em algo — por
  exemplo, *comprou nos últimos 30 dias **e não** está no segmento de cancelados*.

Grupos podem ficar dentro de grupos. Exemplo: *comprou nos últimos 30 dias **E** (é VIP **OU** tem
gasto > R\$ 5.000)* — um grupo **E** no topo, com um grupo **OU** aninhado.

<Note>
  O grupo **NÃO** só aparece no menu quando a regra já tem **pelo menos uma cláusula positiva**.
  Faz sentido: o segmento precisa primeiro de algo que **inclua** pessoas para depois você
  **excluir** um grupo — senão não haveria audiência para negar. Monte a condição positiva (quem
  entra) e só então use o NÃO para tirar quem você não quer.
</Note>

## Operadores

Vários tipos de cláusula (Trait do perfil e os **Filtros** das cláusulas de evento) usam o mesmo
conjunto de operadores para comparar um campo com um valor:

| Operador                           | Significa                              | Exemplo                     |
| ---------------------------------- | -------------------------------------- | --------------------------- |
| **é** / **não é**                  | igual / diferente                      | `plano` é `"premium"`       |
| **maior que** / **maior ou igual** | `>` / `≥`                              | `lifetime_value` ≥ `100`    |
| **menor que** / **menor ou igual** | `<` / `≤`                              | `idade < 18`                |
| **está em** / **não está em**      | dentro / fora de uma lista             | `cidade` está em `[SP, RJ]` |
| **contém**                         | tem o trecho (texto) ou o item (lista) | `tags` contém `"vip"`       |
| **existe**                         | o campo tem algum valor                | `email` existe              |

<Note>
  O operador **não existe** **não** é suportado dentro de segmentos. Para "o cliente não tem tal
  comportamento", use a cláusula **Evento não ocorreu** (mais abaixo).
</Note>

## Cláusulas de trait

### Trait do perfil

Compara um **trait** do perfil com um valor fixo. É a cláusula mais **leve** — ela só olha os
traits do perfil, sem consultar eventos.

<Frame caption="Trait do perfil: a chave do trait, um operador e um valor.">
  <img src="https://mintcdn.com/prismaflow/8OUHYg8TpA-Arbt8/images/anotadas/criar-segmento-trait-config.png?fit=max&auto=format&n=8OUHYg8TpA-Arbt8&q=85&s=f01bea4a0516d0e8825166a09d4ce9a9" alt="Configuração da cláusula Trait do perfil" width="1190" height="648" data-path="images/anotadas/criar-segmento-trait-config.png" />
</Frame>

Você preenche três coisas: a **chave do trait** (no formato `traits.<chave>.value`, ex.:
`traits.lifetime_value.value`), o **operador** (da tabela acima) e o **valor** de comparação.

Exemplos: `plano` **é** `premium`; `lifetime_value` **maior ou igual** `100`; `cidade` **está em**
`[São Paulo, Rio]`; `email` **existe**.

### Trait mudou

Verifica se o valor de um trait **mudou** dentro de uma janela de tempo — olhando o histórico de
mudanças, não só o valor atual.

<Frame caption="Trait mudou: chave, janela em dias e filtros opcionais por novo valor / valor anterior.">
  <img src="https://mintcdn.com/prismaflow/8OUHYg8TpA-Arbt8/images/anotadas/criar-segmento-trait-change-config.png?fit=max&auto=format&n=8OUHYg8TpA-Arbt8&q=85&s=1a097bbf217a9fbd52fd7edbb253cb3c" alt="Configuração da cláusula Trait mudou" width="1203" height="868" data-path="images/anotadas/criar-segmento-trait-change-config.png" />
</Frame>

Você informa a **chave do trait** (em `snake_case`) e a **janela em dias**. Há ainda dois filtros
**opcionais**:

* **Filtrar por novo valor** — condiciona o valor para o qual o trait **passou** (ex.: mudou
  **para** `cancelado`).
* **Filtrar por valor anterior** — condiciona o valor que o trait **tinha antes** (ex.: **saiu de**
  `ativo`).

Exemplo: *o trait `status` mudou para `cancelado` nos últimos 7 dias* — útil para reagir a uma
mudança específica, não só ao estado final.

## Cláusulas de evento

Todas as cláusulas de evento compartilham dois elementos:

* uma **janela em dias** (de 1 a 365) — o período recente que será olhado;
* uma aba de **Filtros** — condições sobre as **propriedades** do evento, usando os mesmos
  [operadores](#operadores) (ex.: só compras com `amount` > `100`).

Os seletores mostram apenas eventos que têm [definição](/eventos/definicoes) **ativa**.

### Evento ocorreu

O perfil **disparou** o evento dentro da janela.

<Frame caption="Evento ocorreu: escolha o evento, a versão e a janela. A aba Filtros condiciona as propriedades.">
  <img src="https://mintcdn.com/prismaflow/8OUHYg8TpA-Arbt8/images/anotadas/criar-segmento-evento-ocorreu-config.png?fit=max&auto=format&n=8OUHYg8TpA-Arbt8&q=85&s=8344db21e6aa6f84feff73ffe5e9e8d3" alt="Configuração da cláusula Evento ocorreu" width="1211" height="916" data-path="images/anotadas/criar-segmento-evento-ocorreu-config.png" />
</Frame>

Escolha o **evento** e a **versão**, a **janela**, e (opcional) os **filtros**. Exemplo: *disparou
`Purchase@1` nos últimos 30 dias com `payment_method` **é** `pix`*.

### Evento não ocorreu

O oposto: o perfil **não disparou** o evento (respeitando os filtros, se houver) dentro da janela.

<Frame caption="Evento não ocorreu: mesma configuração do anterior, com a lógica invertida.">
  <img src="https://mintcdn.com/prismaflow/8OUHYg8TpA-Arbt8/images/anotadas/criar-segmento-evento-nao-ocorreu-config.png?fit=max&auto=format&n=8OUHYg8TpA-Arbt8&q=85&s=993c90ed1ad138443521d6f3356c3c54" alt="Configuração da cláusula Evento não ocorreu" width="1215" height="860" data-path="images/anotadas/criar-segmento-evento-nao-ocorreu-config.png" />
</Frame>

Clássico de **reativação / win-back**: *não fez `Login` nos últimos 60 dias*, ou *não comprou
(`Purchase`) nos últimos 90 dias*. Costuma vir junto de uma cláusula positiva (ex.: *é cliente
**E** não comprou há 90 dias*).

### Contagem de eventos

Conta **quantas vezes** o evento ocorreu na janela e compara esse número com um valor.

<Frame caption="Contagem de eventos: além de Evento e Filtros, a aba Contagem define o operador e o número.">
  <img src="https://mintcdn.com/prismaflow/8OUHYg8TpA-Arbt8/images/anotadas/criar-segmento-contagem-de-eventos-config.png?fit=max&auto=format&n=8OUHYg8TpA-Arbt8&q=85&s=673a0ad999759ec77568573662316d48" alt="Configuração da cláusula Contagem de eventos" width="1252" height="904" data-path="images/anotadas/criar-segmento-contagem-de-eventos-config.png" />
</Frame>

Além de **Evento** e **Filtros**, há a aba **Contagem**, onde você define o **operador**
(`≥`, `>`, `=`, `≤`, `<`, `≠`) e o **número**. Exemplo: *comprou **≥ 3** vezes nos últimos 90 dias*
(clientes recorrentes).

### Agregação de evento

Em vez de **contar** ocorrências, **calcula** algo sobre uma **propriedade numérica** do evento e
compara com um valor. As funções são **soma**, **média**, **máximo** e **mínimo**.

A configuração é como a de contagem (Evento, Filtros e uma aba para escolher a **função** e a
**propriedade**). Exemplos:

* **Soma** de `amount` nas compras **≥ 1.000** → clientes de alto valor acumulado.
* **Média** de `amount` **≥ 200** → ticket médio alto.
* **Máximo** de `amount` **≥ 5.000** → já fez ao menos uma compra grande.

### Funil de eventos

Uma **sequência ordenada** de eventos: eles precisam ter acontecido **na ordem**, dentro da janela.

<Frame caption="Funil: as etapas em ordem, e a profundidade mínima (quantas etapas completar).">
  <img src="https://mintcdn.com/prismaflow/8OUHYg8TpA-Arbt8/images/anotadas/criar-segmento-funil-de-eventos-config.png?fit=max&auto=format&n=8OUHYg8TpA-Arbt8&q=85&s=8038ab526df820f40d79ede72c006ecb" alt="Configuração da cláusula Funil de eventos" width="1184" height="1005" data-path="images/anotadas/criar-segmento-funil-de-eventos-config.png" />
</Frame>

Use **Adicionar etapa** para incluir cada evento na ordem (até 10 etapas). O campo **Profundidade
mínima** define **quantas etapas** o perfil precisa ter completado para entrar.

Exemplo: funil *Viu produto → Adicionou ao carrinho → Comprou*. Com profundidade mínima **2**, o
segmento pega quem **chegou ao carrinho** (incluindo quem não comprou) — ou seja, **abandono de
carrinho**. Com profundidade **3**, só quem completou a compra.

## Cláusula de segmento

### Pertence a segmento

O perfil **é membro de outro segmento**. Permite reaproveitar audiências como blocos de montar.

<Frame caption="Pertence a segmento: escolha outro segmento. Os que criariam um ciclo ficam desabilitados.">
  <img src="https://mintcdn.com/prismaflow/8OUHYg8TpA-Arbt8/images/anotadas/criar-segmento-membership-config.png?fit=max&auto=format&n=8OUHYg8TpA-Arbt8&q=85&s=5084d9fbe08694e6fce94a48f65e3463" alt="Configuração da cláusula Pertence a segmento" width="1203" height="584" data-path="images/anotadas/criar-segmento-membership-config.png" />
</Frame>

Exemplo: *está em **"VIP"** **E** **não** está em **"Cancelados"*** — combinando esta cláusula com
o grupo **NÃO**. Você pode usar até **5** cláusulas de pertencimento por segmento.

<Note>
  Segmentos que criariam um **ciclo** (A depende de B, que depende de A) ficam **desabilitados** no
  seletor — assim você não monta uma dependência circular sem querer.
</Note>

## Limites de uma regra

Para manter as consultas saudáveis, uma regra tem limites:

| Limite                                | Valor        |
| ------------------------------------- | ------------ |
| Profundidade de aninhamento de grupos | 5            |
| Total de nós (grupos + cláusulas)     | 50           |
| Cláusulas de trait                    | 20           |
| Cláusulas de evento (incluindo funil) | 10           |
| Cláusulas "Trait mudou"               | 10           |
| Cláusulas "Pertence a segmento"       | 5            |
| Filtros por cláusula                  | 10           |
| Etapas de um funil                    | 10           |
| Janela de tempo                       | 1 a 365 dias |

## Bom saber

<CardGroup cols={1}>
  <Card title="A janela é sempre em dias" icon="calendar-days">
    As cláusulas de evento e "Trait mudou" olham para uma janela recente — de 1 a 365 dias. Janelas
    maiores cobrem mais histórico, mas pesam mais na consulta.
  </Card>

  <Card title="Só eventos ativos aparecem" icon="circle-check">
    Os seletores de evento mostram apenas eventos com [definição](/eventos/definicoes) ativa.
  </Card>

  <Card title="Cláusula de trait é a mais leve" icon="feather">
    Condições só de trait consultam o perfil direto (rápido e barato). Assim que entra um evento na
    regra, a consulta passa a ser mais pesada — algo que a [prévia](/audiencia/segmentos) sinaliza
    no custo estimado.
  </Card>
</CardGroup>
