Esta documentação descreve, passo a passo, como configurar o envio de webhooks de um sistema externo (CRM, CMS, plataforma de e-commerce, ERP etc.) para um contêiner Server-Side do Google Tag Manager (sGTM) hospedado na Wascer, como visualizar esses dados no debugger e como processá-los para uso em tags.
Os exemplos usam o caminho /order_created e o cenário “pedido criado no CRM”, mas você deve substituir esses valores pelo path e contexto do seu projeto (ex.: /lead_created , /payment_confirmed, /form_submitted ).
Um contêiner Server-Side do GTM hospedado na Wascer, com plano ativo e URL pública acessível (ex.: https://sgtm.seudominio.com.br). Ainda não tem um servidor? Veja os planos disponíveis em wascer.com/en/pricing.
Acesso de edição ao contêiner Server-Side no GTM.
Acesso ao sistema de origem que vai disparar o webhook (CRM, CMS, plataforma de pagamento etc.) e permissão para configurar webhooks nele.
Acesso ao painel da Wascer, onde será configurado o Preview Header necessário para debugar os webhooks (recurso incluído em todos os planos).
💬 Precisa de ajuda na implementação? O time de suporte da Wascer auxilia na configuração inicial e em casos específicos. Acesse wascer.com para falar com a equipe.
2. Visão geral do fluxo
O envio de webhooks para o sGTM segue quatro etapas encadeadas:
Sistema de origem dispara um HTTP POST para o sGTM na Wascer
Data Client Wascer reivindica a requisição
O evento fica disponível para Tags, Variáveis e Triggers
Os dados são enviados para as plataformas de destino: Meta CAPI, GA4, Google Ads, Slack etc.
3. Etapa 1 — Enviar o webhook para o sGTM
3.1. Identifique o evento de origem
No sistema que vai disparar o webhook, escolha o evento que deseja rastrear. Exemplos:
Pedido criado no CRM/e-commerce
Lead qualificado mudou de status
Pagamento confirmado / estornado
Formulário enviado
Carrinho abandonado recuperado
3.2. Defina a URL de destino do webhook
A URL do webhook é composta por:
https://sgtm.seudominio.com.br/order_created
Componente
Valor de exemplo
O que é
URL do sGTM
https://sgtm.seudominio.com.br
URL pública do seu contêiner Server-Side na Wascer (domínio personalizado configurado no painel)
Path
/order_created
Identificador único deste webhook — usado depois para o Data Client Wascer reconhecer a requisição
💡 Boas práticas para o path:
Use nomes descritivos em minúsculas, sem espaços (/order_created, /lead_status_changed).
Use um path diferente para cada tipo de evento. Isso facilita criar um Data Client por evento e mantém o debug organizado.
Evite paths que possam colidir com rotas internas do GTM (não use /, /healthy, /gtm/*).
3.3. Configure o webhook no sistema de origem
A interface varia conforme o sistema (RD Station, HubSpot, Pipedrive, Shopify, WooCommerce etc.), mas os campos a preencher são sempre os mesmos:
Campo
O que informar
URL / Endpoint
A URL completa montada no passo 3.2
Método HTTP
POST (padrão para webhooks; o Data Client Wascer também aceita GET se a origem não suportar POST)
Content-Type
application/json (recomendado)
Payload / Body
JSON com os campos do evento (ID do pedido, valor, e-mail, telefone, IDs de cookies etc.)
Headers customizados
Opcional — útil para autenticação (ex.: X-Api-Key)
Exemplo de payload JSON (cenário pedido criado — adapte aos seus campos):
⚠️ Importante: quanto mais identificadores do usuário você enviar (email, phone, fbp, fbc, ga_session_id, IP, user agent), melhor será a deduplicação e o match nas plataformas de anúncios.
4. Etapa 2 — Visualizar os dados do webhook no debugger
Por padrão, o debugger do sGTM não exibe requisições de webhook, porque webhooks são chamadas servidor-a-servidor e não carregam o cookie de preview que o GTM injeta no navegador.
Para resolver isso, é preciso copiar o X-Gtm-Server-Preview header do contêiner e injetá-lo através do painel da Wascer. O cabeçalho funciona como uma “credencial temporária” que diz ao sGTM: “todas as requisições que chegarem agora devem aparecer no modo preview”.
4.1. Ative o modo Preview no contêiner Server-Side
Abra o contêiner Server-Side no GTM.
Clique em Preview (canto superior direito).
O debugger abre em uma nova aba e fica aguardando requisições.
4.2. Copie o cabeçalho X-Gtm-Server-Preview
Dentro do debugger, localize o menu de opções (ícone de três pontos / menu adicional na barra superior).
Selecione a opção que permite enviar requisições manualmente (Send requests manually / Enviar requisições manualmente).
Um modal mostrará o valor do header X-Gtm-Server-Preview — uma string longa em base64.
Copie o valor desse header.
📝 Nota: a localização exata desse menu mudou nas últimas versões do GTM. Se você não encontrar “Send requests manually”, procure por “Debug requests”, “Preview Headers” ou o ícone de configurações dentro do debugger. O valor a copiar é sempre identificado pelo nome X-Gtm-Server-Preview.
4.3. Injete o header no painel da Wascer
Acesse o painel da Wascer e abra o contêiner sGTM correspondente.
Localize a opção de Preview Header nas configurações do servidor.
Cole o valor copiado no passo 4.2.
Salve.
⏱️ Validade: o header é removido automaticamente pela Wascer após 1 hora por motivos de segurança. Se a janela de debug se estender, repita o processo de copiar/colar.
🔒 Boa prática: ao finalizar a depuração, remova manualmente o Preview Header no painel da Wascer para garantir que nenhum dado em produção continue sendo capturado no debugger.
4.4. Dispare o webhook e confirme no debugger
No sistema de origem, force um disparo do webhook (criando um pedido de teste, alterando um lead etc.).
Volte ao debugger do sGTM — a requisição deve aparecer na lista lateral de eventos.
Clique sobre ela para inspecionar:
Request — URL, método, headers, body recebido.
Event Data — dados estruturados (depois que o Data Client Wascer processar — ver Etapa 3).
5. Etapa 3 — Processar o webhook com o Data Client Wascer
Quando uma requisição chega ao sGTM, ela precisa ser reivindicada por um Client. Sem isso, nem o debugger consegue exibir os dados de forma estruturada, nem é possível usar os campos em tags.
Para isso, usamos o Data Client Wascer, um template customizado mantido pela Wascer que atua como mapper entre os dados da requisição e os dados do evento, com controle granular dos paths autorizados.
Funcionalidades principais do Data Client Wascer:
Validação de paths autorizados (ex.: /data, /spec, /top)
Suporte a múltiplos eventos por requisição
Headers CORS automáticos
Gerenciamento avançado de cookies (incluindo HttpOnly e renovação automática)
Baixe o arquivo data-client-wascer.tpl (clique no arquivo no repositório e use Download raw file, ou clone o repositório completo).
5.2. Importe o template no sGTM
No contêiner Server-Side, vá em Templates (menu lateral esquerdo).
Na seção Client Templates, clique em Novo.
No editor de template, clique no menu de opções (três pontos) e selecione Importar.
Selecione o arquivo data-client-wascer.tpl baixado.
Salve o template.
5.3. Crie um Client usando o Data Client Wascer
Vá até a seção Clients (menu lateral esquerdo).
Clique em Novo.
Em Client Configuration, selecione o template Data Client Wascer.
Dê um nome descritivo ao client — ex.: Data Client Wascer - Order Created.
Em Accepted Path Settings, preencha o path definido na Etapa 1 — neste exemplo, /order_created. Se for usar mais de um path no mesmo Client, adicione todos.
Configure as opções de resposta conforme necessário (status code, resposta JSON, gerenciamento de cookies).
Salve o Client.
5.4. Configure prioridade (opcional, mas recomendado)
Se você tem outros clients no contêiner (GA4, Meta CAPI etc.), defina o Data Client Wascer com prioridade alta o suficiente para reivindicar webhooks antes que outro client tente. Geralmente, prioridade 100 é segura para webhooks customizados, já que GA4/CAPI clients vêm com prioridades mais baixas.
5.5. Publique uma versão de workspace (ou teste em preview)
Para validar em preview: basta salvar — não é necessário publicar.
Para usar em produção: publique uma nova versão do contêiner depois de testar.
5.6. Valide no debugger
Volte ao debugger (com o Preview Header da Wascer ainda ativo).
Dispare o webhook novamente.
Na lista de eventos, a requisição agora deve aparecer reivindicada pelo Data Client Wascer.
Clique no evento e inspecione a aba Event Data — você verá os campos do payload mapeados como variáveis acessíveis a tags.
6. Etapa 4 — Usar os dados em tags do sGTM
6.1. Crie variáveis do tipo Event Data
Para cada campo do payload que você quer usar em tags:
Vá em Variables → New → Event Data.
Em Key Path, informe o caminho do campo no payload. Exemplos:
order_id → captura order_id do JSON raiz.
customer.email → captura o e-mail dentro do objeto customer.
items.0.price → captura o preço do primeiro item.
Dê um nome descritivo (ex.: evt - order_id) e salve.
6.2. Crie um trigger para o evento
Vá em Triggers → New → Custom Event.
Em Event Name, use o valor de event_name enviado no payload (ex.: order_created).
Salve o trigger com um nome claro (ex.: Trigger - Order Created).
6.3. Configure as tags de destino
A partir daqui, o uso é igual ao de qualquer outro evento no sGTM. Cenários comuns:
Destino
Tag a usar
Para que
Meta (Facebook)
Meta Conversions API (CAPI)
Enviar conversões offline / server-side para o Pixel
Google Ads
Google Ads Conversion Tracking / Offline Conversion Import
Importar conversões offline
GA4
GA4 Server-Side
Registrar o evento no GA4
TikTok
TikTok Events API
Conversões para campanhas TikTok
Slack / Telegram
HTTP Request ou tags específicas
Notificar equipe sobre o evento
CRM secundário
HTTP Request
Sincronizar dados entre sistemas
Em cada tag, mapeie os parâmetros (valor, moeda, IDs do usuário etc.) usando as variáveis Event Data criadas no passo 6.1, e associe o trigger criado no passo 6.2.
7. Checklist de validação
Antes de publicar em produção, confirme cada item:
☐ O sistema de origem dispara o webhook com sucesso (status HTTP 2xx na resposta).
☐ A URL do webhook usa HTTPS e aponta para o domínio correto do sGTM na Wascer.
☐ O path do webhook está idêntico no sistema de origem e no Data Client Wascer.
☐ O payload chega com Content-Type: application/json.
☐ No debugger, a requisição aparece e é reivindicada pelo Data Client Wascer.
☐ As variáveis Event Data retornam os valores esperados (não vazios / undefined).
☐ O trigger dispara apenas para o evento certo.
☐ As tags de destino executam com sucesso (status 2xx nas respostas das APIs externas).
☐ O Preview Header foi removido do painel da Wascer após o fim dos testes.
☐ Uma nova versão do contêiner foi publicada.
8. Solução de problemas comuns
O webhook não aparece no debugger
Possíveis causas:
Preview Header não foi colado no painel da Wascer / expirou — regenerar e injetar de novo.
URL do webhook está errada — confira protocolo (https://), domínio e path.
O sistema de origem está bloqueado por firewall / IP allowlist.
O webhook foi enviado antes de ativar o Preview no GTM.
Como diagnosticar: verifique nos logs do sistema de origem o status HTTP retornado pelo sGTM. Se for 2xx mas não aparece no debugger, o problema é certamente o Preview Header. Se for 4xx/5xx, é problema de roteamento ou configuração de servidor.
A requisição aparece, mas não é reivindicada por nenhum client
Possíveis causas:
Path do Data Client Wascer diferente do path enviado.
Data Client salvo no workspace mas o preview ainda não foi atualizado — feche e reabra o Preview.
Outro client está reivindicando a requisição com prioridade maior — ajuste as prioridades.
O Data Client Wascer reivindica, mas os campos vêm vazios
Possíveis causas:
Payload chegou com Content-Type incorreto (ex.: application/x-www-form-urlencoded em vez de application/json).
Estrutura do JSON é diferente do Key Path configurado nas variáveis — use a aba Request → Body no debugger para conferir o JSON cru e ajuste o Key Path.
Caracteres especiais / encoding quebrado — valide o JSON em um lint online.
Recebo 405 Method Not Allowed
O sGTM está rejeitando o método HTTP. Confirme que o sistema de origem está enviando POST (ou GET, se for o caso) e que o Data Client Wascer está configurado para aceitar esse método.
Recebo 200 OK mas a tag de destino não dispara
Verifique se o trigger está usando o event_name correto.
Confirme que a tag está associada ao trigger.
Olhe a aba Tags do evento no debugger para ver o motivo de cada tag ter disparado ou não.
O volume de requisições está alto e atingi o limite do plano
Cada plano da Wascer tem uma cota mensal de requisições. Se o volume de webhooks crescer, considere fazer upgrade — veja os planos disponíveis em wascer.com/en/pricing. Para volumes altos ou ambiente dedicado, fale com o time comercial.