VenddorDocumentação API
API atualAPI legada
Guia rápidoReferência completa
Carregando índice…
API atual/Referência completa/CRM: audiências

Regras de audiência

A gramática do JSON de regra, com todas as condições aceitas, seus operadores, tipos de valor e exemplos.

A regra é o campo rule de uma audiência (e do corpo da prévia). Esta página é a referência da gramática: leia uma vez, depois consulte a tabela de condições.

Estrutura

Uma regra é um grupo: um operador lógico e uma lista de itens. Cada item é uma condição (uma folha) ou outro grupo, e você aninha quantos níveis precisar.

json
{
  "op": "AND",
  "conditions": [
    { "type": "order_total", "operator": "gte", "value": 50000, "window_days": 90 },
    {
      "op": "OR",
      "conditions": [
        { "type": "state", "operator": "in", "values": ["SP", "RJ"] },
        { "type": "email", "operator": "contains", "value": "@empresa.com.br" }
      ]
    }
  ]
}

Leia assim: "gastou R$ 500,00 ou mais nos últimos 90 dias e (mora em SP ou RJ ou tem e-mail da empresa)".

ChaveOndeSignificado
opgrupoAND (padrão) ou OR, sem diferenciar maiúsculas. Qualquer outro texto vira AND.
conditionsgrupoLista de condições e subgrupos. Um item só é tratado como grupo se tiver conditions não vazio.
notgrupo ou condiçãotrue nega o item inteiro.
typecondiçãoNome da condição (tabela abaixo).
operatorcondiçãoOperador em forma semântica (gte, in...). Vence op quando os dois existem.
opcondiçãoOperador em forma de símbolo (>=, in...).
valuecondiçãoUm valor, ou uma lista (["a","b"], achatada em "qualquer um").
valuescondiçãoLista de valores. Equivale a value com lista.
window_dayscondiçãoLimita a condição de compra aos últimos N dias.
window_hourscondiçãoJanela em horas das condições de comportamento (padrão 24). hours é aceito como sinônimo.
min_total_centsabandoned_cartValor mínimo do carrinho, em centavos.

Uma regra sem condições ({"op":"AND","conditions":[]}) casa com todos os clientes. É o valor usado quando você cria uma audiência sem enviar rule.

Operadores

Forma semântica (operator)Forma de símbolo (op)Uso
eq, is=igual
gt, lt, gte, lte>, <, >=, <=comparação numérica
purchased, includes, any_ofinpertence a qualquer um dos valores
not_purchased, excludes, none_of, is_not, neqnot_innão pertence a nenhum dos valores
(sem sinônimo)betweenintervalo de duas datas, só em order_date
(sem sinônimo)containscontém o texto, sem diferenciar maiúsculas; só em state, city, district, country, language, email

Condições

Valores de dinheiro são centavos inteiros. Condições sobre pedidos ignoram pedidos cancelados, reembolsados, com falha, anulados e com chargeback (exceto order_status).

type (sinônimo)ValorOperadoresO que testa
bought_product (purchased_product)UUID de produto, um ou váriosin, not_inComprou (ou nunca comprou) algum destes produtos. Aceita window_days.
bought_category (purchased_category)UUID de categoriain, not_inComprou item de alguma destas categorias. Aceita window_days.
order_statusstatus do pedido, uma letra (O, P, C...) ou nome (pending, delivered, cancelled...)in, not_inTem pedido em algum destes status. Nomes são convertidos em letra; use a letra para não depender da conversão. Aceita window_days.
usergroup (customer_group)UUID de grupo de clientesin, not_inPertence a algum destes grupos.
state, city, district, countrytextoin, not_in, containsAlgum endereço da agenda do cliente tem este valor. state usa a sigla (SP).
languagetexto, como pt-BReq, in, not_in, containsIdioma do cadastro.
emailtextoeq, in, not_in, containsE-mail do cadastro.
order_datedata ISO (2026-09-01, 2026-09-01T10:00:00 ou RFC 3339)gte, lte, between (exatamente 2 datas)Tem algum pedido nesta faixa de datas.
marketing_consenttrue ou false(nenhum)Aceitou (true) ou não aceitou (false) receber marketing. Sem value, o padrão é true.
order_total (total_spent)inteiro, centavos=, >=, <=, >, <Soma dos pedidos. Aceita window_days.
order_countinteiro=, >=, <=, >, <Quantidade de pedidos. Aceita window_days.
last_purchase_daysinteiro, dias=, >=, <=, >, <Dias desde a última compra. Quem nunca comprou fica de fora. Aceita window_days.
first_order (first_purchase)(nenhum)(nenhum)Tem exatamente um pedido. Aceita window_days.
viewed_no_purchase(nenhum)(nenhum)Viu um produto há mais de window_hours e não o comprou depois.
wishlist_no_purchase(nenhum)(nenhum)Pôs um produto na lista de desejos há mais de window_hours e não o comprou depois.
abandoned_cart(nenhum)(nenhum)Tem carrinho abandonado e não recuperado nas últimas window_hours. Aceita min_total_cents.
rfm_segmentrótulo RFM (lista abaixo)in, not_inSegmento RFM atual do cliente.
loyalty_tierUUID de nível de fidelidadein, not_inNível atual no programa de fidelidade.
nps_scoreinteiro de 0 a 10=, >=, <=, >, <Nota da resposta de NPS mais recente. Aceita window_hours.
referrals_rewardedinteiro=, >=, <=, >, <Quantas indicações o cliente teve recompensadas. Aceita window_hours.
churn_risknúmero de 0 a 1=, >=, <=, >, <Risco previsto de abandono (última previsão válida).
predicted_clvinteiro, centavos=, >=, <=, >, <Valor previsto do cliente em 12 meses.
next_order_daysinteiro, dias=, >=, <=, >, <Dias previstos até o próximo pedido.
acquisition_channeltexto, canalin, not_inCanal pelo qual o cliente foi adquirido (primeiro contato registrado no pedido).

Os rótulos de rfm_segment são: champions, loyal, potential_loyalist, new_customers, promising, need_attention, at_risk, cant_lose, hibernating, about_to_sleep, lost. Veja como são calculados em Indicadores.

Condições preditivas dependem de dados

churn_risk, predicted_clv e next_order_days só casam com clientes que têm uma previsão válida calculada. Cliente sem previsão fica de fora de qualquer comparação.

Como a regra é validada

Ao criar ou alterar, a plataforma não só confere a forma do JSON: ela ensaia a consulta no banco sem ler dados. Por isso um valor do tipo errado (texto onde se espera UUID, fração em order_count, lista dentro de lista) é recusado na criação com a mensagem nomeando a condição e o campo, em vez de falhar só na materialização. A prévia, a criação e a materialização dão o mesmo veredicto para a mesma regra.

Exemplos

Clientes que compraram duas vezes ou mais nos últimos 6 meses e aceitam marketing:

json
{
  "op": "AND",
  "conditions": [
    { "type": "order_count", "operator": "gte", "value": 2, "window_days": 180 },
    { "type": "marketing_consent", "value": true }
  ]
}

Clientes que não compraram a categoria de chinelos e estão em risco no RFM:

json
{
  "op": "AND",
  "conditions": [
    { "type": "bought_category", "operator": "not_purchased", "value": "aa70faa9-2e94-4700-9e3c-3916cdae024f" },
    { "type": "rfm_segment", "operator": "in", "values": ["at_risk", "cant_lose"] }
  ]
}

Carrinho abandonado de pelo menos R$ 200,00 nas últimas 48 horas:

json
{
  "op": "AND",
  "conditions": [
    { "type": "abandoned_cart", "window_hours": 48, "min_total_cents": 20000 }
  ]
}

Veja também

  • Audiências
  • Ações de audiência
Anterior
CRM, audiências
Próxima
Audiências
Nesta página
  • Estrutura
  • Operadores
  • Condições
  • Exemplos
  • Veja também