Receitas de condições

Cada linha mostra o que enviar em conditionGroup, conditionSubGroup, logicOperator.id e logicOperator.arguments para obter a condição desejada. Os operadores listados são os habituais; os aceitos na sua loja estão em Estrutura de condições.

📘

Lembretes

Todos os valores são strings. Listas de IDs vão como vários itens em values: ["15","22"]. Argumentos marcados como “um ID” aceitam um único valor.

Na maioria das condições, os operadores de comparação (1 a 6) e o 9 aceitam um único ID nos argumentos de lista de IDs (ListInt/ListLong); mais de um é recusado. Para listas, use 7 (está contido) ou 8 (não está contido). Aceitam vários IDs com qualquer operador: quantidade em categorias (3/21 e 3/22), quantidade de produtos (4/11), valor em marcas (4/13) e as marcas do subtotal (5/16). Listas de texto não têm esse limite.

1 · Consumidor

CondiçãoGrupo / subgrupoOperadoresArgumentos
Primeira compra1 / 117: "true" = é a primeira compra; "false" = já comprou antes.
Tipo de cadastro1 / 2115: "1" pessoa física, "2" pessoa jurídica.
Aniversariante1 / 316: "dia", "semana" ou "mes" — aniversário do cliente hoje, nesta semana ou neste mês.
Clientes específicos1 / 41, 7, 816: filtro de clientes em JSON. Veja Condição de clientes específicos.
Primeira assinatura1 / 51Sem argumentos ("arguments": []). O carrinho tem item de assinatura e o cliente nunca assinou.
Possui assinatura paga1 / 61/7 nas recorrências informadas; 2/8 em recorrências fora da lista14 (opcional): IDs de recorrência. "0" ou ausente = qualquer recorrência, e então o operador é ignorado (a condição exige uma assinatura paga).
Informação cadastral adicional1 / 247, 819: um ID de campo cadastral; 20: valores aceitos (sem diferenciar maiúsculas).
Segmento de audiência1 / 277, 825: IDs dos segmentos. Disponível em lojas com segmentação de audiência habilitada.

2 · Endereço de entrega

CondiçãoGrupo / subgrupoOperadoresArgumentos
Estado2 / 71, 7 (está em); 2, 8 (não está em)9: IDs de estado (stateId de Estados ou tabela abaixo).
Região2 / 81, 7; 2, 810: "Norte", "Nordeste", "Centro-Oeste", "Sudeste", "Sul".
Faixa de CEP2 / 97 dentro; 8 fora11: CEP inicial; 12: CEP final. Ex.: "01000-000".
Retirada na loja2 / 191Sem argumentos. O cliente escolheu retirar o pedido na loja.
IDs de estado
1 AC2 AL3 AP4 AM5 BA6 CE7 DF8 ES9 GO
10 MA11 MT12 MS13 MG14 PA15 PB16 PR17 PE18 PI
19 RJ20 RN21 RS22 RO23 RR24 SC25 SP26 SE27 TO

3 · Categorias

CondiçãoGrupo / subgrupoOperadoresArgumentos
Carrinho com produtos de categorias3 / 107, 8 (listas); 1–6 com um único ID1: IDs de categoria; 2 (opcional): "true" inclui subcategorias.
Quantidade de produtos em categorias3 / 211, 3–6, 91: IDs de categoria (aceita vários com qualquer operador); 5: quantidade de unidades.
A cada N unidades em categorias3 / 2291: IDs de categoria (aceita vários); 5: quantidade. Soma as unidades das variantes dessas categorias. Funciona sempre como “a cada”, qualquer que seja o operador.
Valor em uma categoria3 / 231, 3–6, 91: um ID de categoria; 4: valor em R$.

4 · Produtos

CondiçãoGrupo / subgrupoOperadoresArgumentos
Carrinho com produtos4 / 111, 2, 7, 83: IDs de produto.
Quantidade de produtos4 / 111, 3–6, 93: IDs de produto; 5: quantidade (use 1 ou mais; não é validada ao salvar). Enviar 5 (ou o operador 9) transforma a condição em “quantidade”.
Carrinho com variantes (SKUs)4 / 121, 2, 7, 88: IDs de variante.
A cada N unidades de uma variante4 / 1298: um ID de variante; 5: quantidade.
Quantidade de SKUs distintos4 / 121, 3–65: quantidade de SKUs diferentes; 8 (opcional): restringe a estas variantes (vazio = todas).
Valor em marcas4 / 131, 3–6, 9; 2 soma as demais marcas13: IDs de marca; 4: valor em R$.

5 · Carrinho

CondiçãoGrupo / subgrupoOperadoresArgumentos
Valor total (com frete)5 / 171, 3–6, 94: valor em R$.
Subtotal (produtos)5 / 161, 3–64: valor em R$. Opcionais: 22 IDs de marca; 23 "false" = considerar só essas marcas, "true" = todas exceto essas; 21 "true" = ignorar produtos remarcados (exige 22).
Quantidade de itens5 / 141, 3–6, 95: quantidade de linhas do carrinho (SKUs diferentes; duas variantes do mesmo produto contam como 2).
Item de assinatura com recorrência5 / 181, 2, 7, 814: IDs de recorrência.

6 · Tráfego / campanha

CondiçãoGrupo / subgrupoOperadoresArgumentos
Parâmetro UTM6 / 207, 8 (1, 2)17: chave do parâmetro, ex.: "utmSource", "utmMedium", "utmCampaign", "utmTerm" ou "utmContent"; 18: valores aceitos (sem diferenciar maiúsculas).

8 · Pagamento

CondiçãoGrupo / subgrupoOperadoresArgumentos
Grupo de forma de pagamento8 / 267, 824: IDs de grupos de pagamento. A condição só é atendida depois que o cliente escolhe a forma de pagamento.
🚧

Combinações não reconhecidas são descartadas

O grupo 7 (“Outros”) e pares grupo/subgrupo fora destas tabelas são ignorados ao salvar, sem erro. Nos grupos 6 e 8 o subgrupo não é conferido: qualquer subgrupo vira, respectivamente, parâmetro UTM e grupo de forma de pagamento. Confira a promoção com Obter promoção depois de salvar.

Condição de clientes específicos

A condição 1 / 4 recebe, no argumento 16, um único valor: o objeto de filtro de Buscar clientes serializado como string JSON. Ao salvar, o filtro é executado e os clientes encontrados ficam vinculados à condição. Todos os campos do filtro são opcionais.

{
  "conditionGroup": 1, "conditionSubGroup": 4,
  "logicOperator": {
    "id": 7,
    "arguments": [
      { "id": 16, "values": [ "{\"customersId\":[501,502,503]}" ] }
    ]
  }
}

Exemplo de filtro (conteúdo da string, antes de serializar): clientes de SP ou RJ que compraram nos últimos 6 meses.

{ "filtersGroup": [ { "states": ["SP", "RJ"], "lastPurchase": { "purchaseSituation": true, "dateFilter": 5 } } ] }
  • A lista é calculada no momento em que a promoção é salva. Clientes cadastrados depois não entram automaticamente.
  • Limite: 80 mil clientes por condição (LIMIT_OF_USERSLINKED_CONDITION_REACHED).
  • Um valor que não é JSON (inclusive "" e a contagem lida no GET) retorna 400 (MISSING_ARGUMENTS, “Filtro de clientes inválido”).
  • Um filtro que não encontra nenhum cliente (inclusive {}) é recusado com 400 (PRIVATE_API_VALIDATION). Confira o filtro antes em Buscar clientes; lá, porém, linkedCustomers: false sem filtersGroup retorna todos os clientes da loja, enquanto na condição isso não vincula ninguém.
  • Resultados da busca de clientes ficam em cache por até 5 minutos, também ao salvar: clientes que acabaram de se cadastrar podem não entrar.
  • Não envie page, limit, orderBy nem orderDirection no filtro da condição: page maior que 1 faz a gravação pular clientes.
  • Use o operador 7 (a promoção vale para esses clientes) ou 8 (vale para todos, exceto esses). O operador 1 só aceita um filtro que resulte em exatamente um cliente. Carrinhos sem cliente identificado não atendem a esta condição com nenhum operador.
  • Para conferir os vinculados depois de salvar, use Clientes de uma condição.

Ao editar

Na leitura, values[0] traz apenas a quantidade de clientes vinculados (ex.: "842"). Reenviar esse número retorna 400. Para manter a lista atual e, se quiser, incluir ou remover clientes, envie:

"{\"promotionId\":1234,\"conditionId\":5521,\"linkedCustomers\":true,\"customersId\":[777],\"customersId_Neq\":[502]}"

onde conditionId é o conditionPromotionId da condição lido no GET imediatamente antes do PUT (ele muda a cada atualização); customersId adiciona e customersId_Neq remove clientes. Sem linkedCustomers: true, ou com um conditionId desatualizado, os clientes atuais não são mantidos e não há erro: a condição fica só com o que customersId e os filtros trouxerem.