Onde criar
- Audience & campaigns → aba Segments.
- New segment — informe nome e a definição em JSON (campo Definition / similar no produto).
Formato obrigatório (versão 1)
Três partes:version, match, rules.
| Campo | Valores | Significado |
|---|---|---|
version | 1 | Versão do esquema (hoje fixo em 1). |
match | "all" ou "any" | all: todas as regras precisam ser verdadeiras (AND). any: basta uma (OR). |
rules | array | Lista de regras. Array vazio = todos os contatos do workspace (útil para teste, perigoso em campanha se esquecer de filtrar). |
Tipos de regra
1) Tag
O contato precisa ter a tag indicada. OtagId é o UUID da tag no workspace (não o nome exibido). No painel, ao criar o segmento, costuma haver lista de tags com nome e início do ID para copiar sem erro.
2) Propriedade customizada
key é a chave do campo no workspace (a mesma da API de contatos). value na regra é sempre string no JSON da definição.
Campos opcionais (continuam na versão 1; omitidos = comportamento antigo):
| Campo | Valores | Padrão | Significado |
|---|---|---|---|
valueMatch | "exact" ou "contains" | "exact" | exact: igualdade ao texto armazenado (comportamento original). contains: o valor salvo no contato contém o texto da regra como substring. |
ignoreCase | true ou false | false | Se true, a comparação ignora maiúsculas/minúsculas (ex.: regra cachoeiro casa com Cachoeiro de Itapemirim). |
- Com
valueMatch: "contains",valuenão pode ser string vazia. - Os modos
valueMatch/ignoreCaseaplicam-se a valores armazenados como string JSON no campo (jsonb_typeof= string). Propriedades numéricas, booleanas ou data não entram nesse filtro de texto — use igualdade exata clássica (valueMatchomitido) apenas quando o valor no banco for string compatível.
3) Marketing geral
Filtra quem aceita ou não comunicação de marketing no cadastro.Exemplos completos para colar
Só quem aceita marketing:uf:
match: "all" com duas regras property (ou property + tag). Com valueMatch omitido, value deve ser igual ao texto salvo; com contains / ignoreCase, ajuste conforme a tabela acima.
Cidade que contém um trecho (OR com outra regra):
Preview e campanhas
Depois de salvar, use Preview na listagem: o backend recalcula o filtro, mostra total e uma amostra de contatos. Se o total for zero e você esperava muitos, revisetagId, key/value e se usou all vs any.
Em campanhas, ao escolher audiência por segmento, o sistema reaplica a mesma definição na hora do envio — o mesmo motor do Preview.
Importante: segmento não substitui política legal nem opt-out. Envios de marketing continuam sujeitos a consentimento e, quando aplicável, a tópicos — veja Tópicos de comunicação.
Erros frequentes
tagIdde outro workspace ou UUID cortado na cópia.keydiferente da definição do campo personalizado.valuena regra como texto, mas o contato tem número ou outro JSON no banco — ou uso decontains/ignoreCaseesperando casar número (só vale para valor armazenado como string).valueMatch: "contains"comvaluevazio.valueMatchouignoreCasecom tipo errado (string diferente deexact/contains, ouignoreCaseque não seja booleano).- Uso de
anyquando a intenção era todas as condições (all).
Próximo passo
- Campanhas no painel — como usar o segmento no Run e o que é validado antes de enfileirar.
