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

Regras de segmentação

Como escrever a regra de uma audiência, todas as condições aceitas e a prévia que conta os clientes sem gravar.

Como a regra é escrita

Uma regra é uma árvore. O nó raiz é um grupo com op (AND ou OR, padrão AND) e uma lista conditions. Cada item da lista é uma condição (tem type) ou outro grupo (tem conditions). Qualquer nó aceita "not": true para inverter o resultado.

json
{
  "op": "AND",
  "conditions": [
    { "type": "total_spent", "operator": "gte", "value": 50000, "window_days": 90 },
    {
      "op": "OR",
      "conditions": [
        { "type": "state", "operator": "in", "values": ["SP", "RJ"] },
        { "type": "marketing_consent", "value": true }
      ]
    }
  ]
}

Campos de uma condição:

Campos de uma condição

typestringobrigatório
Qual critério avaliar (tabela abaixo). Também são aceitos os apelidos do painel: purchased_product, purchased_category, total_spent, customer_group e first_purchase.
operatorstring
Operador em palavras: gte, lte, gt, lt, eq, is, purchased, includes, any_of (pertence), not_purchased, excludes, none_of, is_not, neq (não pertence). Vence op quando os dois vêm.
opstring
Operador em símbolos: =, >=, <=, >, <, in, not_in, between, contains. Condições de comparação aceitam =, >=, <=, >, <; as de lista aceitam in e not_in.
valueany
Valor único (número, texto, booleano) ou, nas condições de lista, um valor ou uma lista. Uma lista com um elemento vale como o elemento.
valuesarray
Lista de valores, para as condições de lista.
window_daysinteger
Só considera pedidos dos últimos N dias (condições de pedido).
window_hoursinteger
Janela em horas das condições de comportamento. Padrão 24. O apelido hours também vale.
min_total_centsinteger
Só para abandoned_cart: valor mínimo do carrinho, em centavos.
notboolean
true inverte a condição ou o grupo.

Condições disponíveis

typeO que avaliavalue
bought_productComprou (ou não) certos produtosids de produto (uuid); in/not_in; aceita window_days
bought_categoryComprou (ou não) em certas categoriasids de categoria (uuid); in/not_in; window_days
order_statusTem pedido (ou não) em certos statusletra do status ou nome (C, completed...); in/not_in; window_days
usergroupEstá (ou não) em certos grupos de clientesids de grupo (uuid); in/not_in
state, city, district, countryEndereço cadastradotextos; in/not_in/contains
languageIdioma do cadastropt-BR...; in/not_in/contains
emailE-mailtexto; =/in/not_in/contains
order_dateTem pedido em um intervalo de datasdatas ISO; gte, lte ou between (duas datas)
marketing_consentAceitou receber marketingtrue (padrão) ou false
order_totalSoma dos pedidos, em centavosinteiro; =, >=, <=, >, <; window_days
order_countQuantidade de pedidosinteiro; comparação; window_days
last_purchase_daysDias desde a última comprainteiro; comparação
first_orderTem exatamente um pedidosem valor; window_days
viewed_no_purchaseViu um produto e não o comprou depoiswindow_hours
wishlist_no_purchasePôs na lista de desejos e não comprou depoiswindow_hours
abandoned_cartTem carrinho abandonado ainda não recuperadowindow_hours, min_total_cents
rfm_segmentSegmento RFM do clienteum ou mais rótulos de Resumo RFM; in/not_in
loyalty_tierNível no programa de fidelidadeids de nível; in/not_in
nps_scoreNota da última resposta de NPSinteiro; comparação; window_hours opcional
referrals_rewardedIndicações já recompensadasinteiro; comparação; window_hours opcional
acquisition_channelCanal da primeira compranomes de canal; in/not_in
churn_riskRisco de abandono previsto, de 0 a 1número; comparação
predicted_clvValor futuro previsto (12 meses), em centavosinteiro; comparação
next_order_daysDias previstos até o próximo pedidointeiro; comparação

As condições de previsão (churn_risk, predicted_clv, next_order_days) usam o último cálculo ainda válido do cliente e deixam de fora quem não tem previsão.

O servidor recusa o que não consegue executar

Tipo desconhecido, operador fora da lista, lista vazia em condição de lista, texto onde se espera número, objeto como valor: tudo volta 400 com o campo apontado, por exemplo condition "order_total", field "value": expected an amount in CENTAVOS (whole number), got the text "abc". Datas devem ser ISO (2026-03-01); 01/03/2026 é recusada.

Contar os clientes de uma regra

Calcula quantos clientes a regra alcança agora, sem criar nem alterar nada. É a forma segura de testar uma regra antes de gravá-la ou de usá-la em uma campanha.

POST/api/v1/vendor/crm/audiences/previewSeller

Contar os clientes de uma regra

Cabeçalhos

Authorizationstringobrigatório
Bearer $TOKEN. Token de acesso de um usuário do painel do seller (lojista), obtido no login (veja Tokens).
Content-Typestringobrigatório
application/json.

Corpo da requisição

ruleobject
A regra a testar, no formato descrito acima. Sem rule (ou com conditions vazio) a contagem é a de todos os clientes ativos.

Exemplo de requisição

bash
curl -X POST "$BASE_URL/api/v1/vendor/crm/audiences/preview" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "rule": {
    "op": "AND",
    "conditions": [
      {
        "type": "total_spent",
        "operator": "gte",
        "value": 50000,
        "window_days": 90
      }
    ]
  }
}'

Resposta

200Contagem
json
{
  "count": 3743
}

Campos da resposta

countinteger
Clientes que a regra alcança neste momento.

Erros

StatusQuandoCorpo
401Sem token ou token inválido/expirado.{"error":"missing authorization header"} / {"error":"invalid or expired token"}
403O token não é de um usuário seller (por exemplo, é de um administrador da loja).{"error":"insufficient permissions"}
403O cadastro do seller ainda está em análise (só a tela de cadastro funciona até a aprovação).{"error":"vendor_pending_review","message":"..."}
403O usuário tem papel de seller, mas não está ligado a nenhum seller.{"error":"vendor profile not found"}
403O módulo crm está desligado nesta loja.{"error":"module_disabled","module":"crm"}
400Corpo que não é JSON.{"error":"invalid request body","detail":"..."}
400Regra que o motor não executa.{"error":"failed to evaluate rule","detail":"crm segments: regra de audiência inválida: crm segments: unsupported condition type \"foo\""}
Meça antes de gravar

A contagem usa o escopo do seu seller: condições de pedido olham só os pedidos dele. O mesmo número reaparece como member_count depois da materialização.

Veja também

  • Criar uma audiência
  • Resumo RFM
Anterior
Audiências
Próxima
Materializar e exportar
Nesta página
  • Como a regra é escrita
  • Condições disponíveis
  • Contar os clientes de uma regra
  • Exemplo de requisição
  • Resposta
  • Erros
  • Veja também