Guia/Envios e payload

Como o payload do Envio é montado

Um Envio pega um evento do seu site e entrega ao destino (Meta CAPI, webhook) no formato que ele espera. Esta página explica o que o CrazyLeads enxerga do seu evento, como montar cada campo, e o que acontece quando um dado não vem.


O que o CrazyLeads enxerga

O pixel já coleta sozinho o essencial: endereço da página, referenciador, UTMs, IP, navegador e os identificadores do Meta (fbc/fbp). Além disso, você pode empurrar qualquer propriedade própria — não existe lista fechada.

No seu site
<script>
  window._cl = window._cl || [];

  // Um evento com propriedades próprias
  window._cl.push({ event: 'PrecheckoutOpen', plano: 'anual', origem: 'modal' });
</script>

Se a propriedade valer para todos os eventos da página (tipo de página, produto em foco), registre uma vez como super propriedade:

Super propriedades
// "Super propriedades": grudam em TODO evento seguinte desta sessão
window._cl.push({ tipo_pagina: 'venda', produto: 'Curso X' });
Nada aqui é obrigatório. Um Envio funciona só com o que o pixel já coleta — as propriedades próprias servem para enriquecer o que chega ao destino.

Como cada dado é referenciado

No mapeamento, cada variável é um caminho. O que você empurra em _cl.push aparece sob data.:

Caminhos disponíveis
data.plano                 → propriedade do evento
data.items                 → a lista inteira
data.items[].sku           → um campo DENTRO de cada item
url                        → endereço da página
url.path                   → só o caminho (/checkout)
url.domain                 → só o domínio
url_params.utm_source      → parâmetro da URL
referer, ip, user_agent    → contexto da visita

A porcentagem ao lado da variável

Ao escolher uma variável, aparece um número: 100%, 62%. É a fração dos seus eventos reais dos últimos 30 dias em que aquela variável veio preenchida — medido no seu próprio dado, não estimado.

Serve para você decidir antes de publicar: mapear um campo que chega em 8% dos eventos significa que 92% das entregas vão sair sem ele. Em campo de item, a conta é sobre os itens, não sobre os eventos.

Sem porcentagem = ainda não medimos aquela variável (origem sem histórico). Ausência de medição nunca é exibida como 0%.

O botão “Preencher”

Ele não inventa nem usa um modelo pronto: só propõe variáveis que apareceram nos seus eventos. As regras:

  • casa pelo nome final do caminho — data.email preenche o campo email;
  • havendo duas candidatas, ganha a de maior preenchimento medido;
  • o que quase nunca vem (abaixo de 5%) não é sugerido;
  • dados da pessoa (e-mail, telefone, cidade) vêm do grafo de identidade, não do que foi digitado no formulário;
  • nunca sobrescreve o que você mapeou à mão.

As formas de montar um campo

FormaQuando usar
Do eventoAponta uma variável ou digita um valor fixo.
AlternativasCadeia: um caminho, senão outro, senão um valor fixo. Para quando o mesmo dado tem nomes diferentes entre páginas.
Montar lista / itensVocê escreve os valores à mão, um a um.
Da lista do eventoPara cada item de uma lista que veio no evento, monta um item no destino. O tamanho da lista não precisa ser conhecido.
Contar itensQuantos itens vieram na lista.
Somar itensSoma um campo dos itens, opcionalmente multiplicado por outro (preço × quantidade).

Carrinho com vários produtos

Empurre a lista com os nomes que você já usa — não precisa traduzir para o formato do Meta:

Compra com N produtos
window._cl.push({
  event: 'Purchase',
  pedido: 'ORD-9001',
  items: [                       // a lista pode ter QUALQUER tamanho
    { sku: 'SKU-1', qtd: 1, preco: 79.90 },
    { sku: 'SKU-2', qtd: 2, preco: 19.90 }
  ]
});

No Envio, escolha Da lista do evento em contents e diga que id é sku, quantity é qtd e item_price é preco. O resultado entregue:

O que chega ao Meta
contents    → [{"id": "SKU-1", "quantity": 1, "item_price": 79.90},
                {"id": "SKU-2", "quantity": 2, "item_price": 19.90}]
content_ids → ["SKU-1", "SKU-2"]
num_items   → 2
value       → 119.70          (79,90 + 2 x 19,90)
Uma lista de textos também funciona (skus: ['SKU-1', 'SKU-2']), e texto separado por vírgula é lido como lista.

Expressões: transformar o valor no caminho

Digite {{ em qualquer campo de valor e as variáveis aparecem para completar. Dentro de {{ }}, encadeie funções com |:

Exemplos
{{data.email | split:@:0}}          → "joao.silva"  (usuário do e-mail)
{{data.email | split:@:0 | upper}}  → "JOAO.SILVA"
{{data.cupom | slice:0:4}}          → "DESC"        (4 primeiros caracteres)
{{data.nome_pagina | trim | lower}} → "checkout"
BR-{{data.pedido}}                  → "BR-9001"     (texto + expressão)
{{data.plano | default:gratis}}     → valor, ou "gratis" se não vier

Funções disponíveis: split, slice, upper, lower, trim, replace, first, last, number e default. Se o separador for : ou |, proteja com aspas simples: split:':':1.

É um catálogo fechado, não código livre — por isso a tela consegue validar a expressão inteira antes de publicar. Expressão inválida não é enviada: o erro aparece na própria linha, e o campo fica de fora até ser corrigido.

Parâmetros próprios do seu negócio

Nem tudo cabe nos campos padrão. Plano escolhido, origem do modal, id do vídeo — em Parâmetros customizados você manda junto o que é específico do seu negócio, e no Meta isso vira base para Conversões Personalizadas.

A tela lista as propriedades que os seus eventos já trazem e que ninguém mapeou ainda, com a porcentagem de cada uma. Um clique adiciona.

Dado pessoal não entra aqui. E-mail, telefone, CPF e nome nunca são sugeridos como parâmetro extra: o Meta proíbe dado de identificação fora do bloco de identidade, onde ele vai criptografado. Para isso existem os campos de pessoa (em, ph…), preenchidos pelo grafo de identidade.

Quando o dado não vem

A regra geral: campo sem dado não é enviado — nunca vai vazio nem zerado, porque isso faria o destino registrar um valor que não aconteceu.

  • Variável ausente ou vazia (""): o campo é omitido. Use Alternativas se quiser um valor padrão.
  • Item sem o identificador fica de fora da lista; item sem os campos opcionais entra com o que tem.
  • Lista vazia ou ausente: nada é enviado — inclusive num_items, que não vira 0.
  • Nome de variável escrito errado não vira texto no destino: o campo simplesmente não sai.

Para conferir depois de publicar, o Envio mostra o payload real da última entrega — o corpo exato que o destino recebeu.