Traqueamento: todos os eventos do app (Pixel da Meta, GA4, GTM e Google Ads)
Todos os eventos que o app de pedidos dispara e os dados de cada um: Pixel e GA4 direto (sem GTM), GTM e Google Ads, e as compras enviadas pelo servidor (API de Conversões e Measurement Protocol).
Este guia é para quem vai medir as vendas do cardápio digital da loja (o app de pedidos): gestor de tráfego, agência ou o próprio dono. Ele lista todos os eventos que o Aliv Hub dispara, quando cada um acontece, que dados vão junto e como montar o Pixel da Meta, o Google Analytics 4 (GA4), o Google Tag Manager (GTM) e o Google Ads em cima deles.
Resposta curta: o Aliv Hub já dispara todos os eventos de e-commerce do app. Você não precisa programar nada. Cole o Pixel ID e a Meta recebe tudo. Cole o GA4 ID e o Google Analytics recebe tudo. O GTM é opcional, para quem quer Google Ads, outras ferramentas ou controle fino: os eventos chegam prontos no dataLayer. Sem GTM, com o Access Token e o API Secret, as compras também vão pelo servidor, então a venda conta mesmo com bloqueador de anúncio ou iPhone.
1. Onde colocar os códigos
No painel, abra Configurações → Traqueamento (precisa do acesso de dono ou de quem tem permissão de configurações). Os campos são:
| Campo | Exemplo | Para que serve |
|---|---|---|
| Pixel ID | 123456789012345 | Pixel da Meta (Facebook/Instagram). Sem GTM, o app instala sozinho. |
| Access Token | EAAG… | Token da API de Conversões da Meta. Com ele, o servidor manda as compras (seção 7). Gere no Gerenciador de Eventos → seu Pixel → Configurações → API de Conversões. |
| GA4 ID | G-XXXXXXXXXX | Google Analytics 4. Sem GTM, o app instala sozinho. |
| API Secret | chave do GA4 | Com ela, o servidor manda as compras pro GA4. Crie no GA4 em Administrador → Fluxos de dados → seu fluxo → Measurement Protocol API secrets. |
| GTM ID | GTM-XXXXXXX | Google Tag Manager (opcional). Quando preenchido, o GTM manda: o app deixa de instalar o Pixel e o GA4 sozinho (seção 2). |
Os campos salvam sozinhos ao sair deles. Loja com mais de uma marca (cardápios diferentes) pode ter Pixel, token, GA4 e GTM próprios por marca no seletor do topo. Marca sem valor próprio usa o da loja.
2. Sem GTM ou com GTM: o que muda
| Sem GTM ID | Com GTM ID | |
|---|---|---|
| Pixel da Meta | O app instala o Pixel, dispara o PageView ao abrir e os eventos padrão (seção 3). | O app não instala. Você instala e dispara pelo GTM (seção 6). |
| Google Analytics 4 | O app instala o GA4 (page view automático) e manda todos os eventos de e-commerce com os mesmos nomes da seção 3. | O app não instala. Você cria a tag no GTM (seção 5). |
| Google Ads e outras ferramentas | Não há. | Pelas suas tags no GTM, lendo o dataLayer. |
| Compras do app pelo servidor | Automáticas, com Access Token e API Secret (seção 7). | Pelo seu GTM server-side, chamando o endpoint da loja (seção 7). O automático fica desligado para não contar em dobro. |
Com GTM preenchido o app desliga o Pixel, o GA4 e a compra automática pelo servidor de propósito. Tag no código e tag no GTM ao mesmo tempo contariam cada evento duas vezes, e o Aliv Hub não tem como saber se a sua tag de compra manda o ID do evento que junta navegador e servidor. Resumo: sem GTM, o Aliv Hub cuida de tudo; com GTM, o GTM manda.
3. Todos os eventos do app
O nome da primeira coluna é o do padrão de e-commerce do GA4: é o que aparece no dataLayer e o que o GA4 recebe direto (sem GTM). A segunda é o evento que o Pixel recebe direto (sem GTM).
| Evento (dataLayer) | Meta (Pixel direto) | Quando acontece | Valor (ecommerce.value) |
|---|---|---|---|
| (page view) | PageView | Ao abrir o app. O app é uma página só: não há novo page view ao navegar entre categorias. O GA4 direto conta sozinho; no GTM, use o acionador de visualização de página normal. | — |
view_item | ViewContent | Cliente abre um produto. | Preço do produto. |
add_to_cart | AddToCart | Cliente adiciona ao carrinho, pela tela do produto ou pelo botão + do card. Editar um item que já está no carrinho não conta. | Preço × quantidade do item adicionado. |
view_cart | — | Cliente abre a sacola. | Soma dos itens. |
remove_from_cart | — | Cliente remove um item da sacola. | Valor do item removido. |
begin_checkout | InitiateCheckout | Cliente abre a finalização do pedido. | Subtotal dos produtos (sem entrega). |
add_shipping_info | — | A entrega fica definida: endereço com taxa calculada, ou "retirar na loja". Uma vez por endereço por visita. | Subtotal dos produtos. |
add_payment_info | AddPaymentInfo | Cliente escolhe a forma de pagamento. Uma vez por forma por visita. | Total do pedido. |
purchase | Purchase | Pedido confirmado. Dinheiro e cartão na entrega: quando o pedido é enviado. PIX: só quando o pagamento é aprovado. Também vai pelo servidor (seção 7), com o mesmo ID. | Total do pedido (com entrega). |
login | CompleteRegistration | Cliente entra na conta. | — |
sign_up | CompleteRegistration | Cliente cria a conta. | — |
Os eventos add_shipping_info e add_payment_info não se repetem quando o cliente abre e fecha o checkout várias vezes. Depois de uma compra eles voltam a valer para o próximo pedido na mesma aba.
4. O que vai junto em cada evento
Todo evento chega no dataLayer neste formato (exemplo de uma compra):
{
event: "purchase",
ecommerce: {
transaction_id: "APP-1234",
value: 89.90,
currency: "BRL",
tax: 8.00,
items: [
{ item_id: "512", item_name: "Calabresa", price: 35.00, quantity: 0.5, item_category: "Pizza" },
{ item_id: "530", item_name: "Portuguesa", price: 35.00, quantity: 0.5, item_category: "Pizza" },
{ item_id: "77", item_name: "Coca-Cola 2L", price: 11.90, quantity: 1, item_category: "Produto" }
]
},
user_data: {
country: "BR",
external_id: "48213",
email_hash: "5e8848…(64 caracteres)",
phone_hash: "a1b2c3…(64 caracteres)",
phone_hash_google: "9f8e7d…(64 caracteres)",
first_name: "Maria",
last_name: "Souza",
city: "Curitiba",
state: "PR",
zip_code: "80000-000"
}
}
Dentro de ecommerce
- currency: sempre
BRL. - value: o valor descrito na tabela da seção 3.
- items: lista de produtos com
item_id(código do produto no Aliv Hub),item_name,priceequantity. - transaction_id (só no
purchase): número do pedido como a loja vê no painel (ex.:APP-1234). Use para evitar compra duplicada no GA4 e no Ads. - tax (só no
purchase): leva a taxa de entrega. O valor total já inclui a entrega. - shipping_tier (só no
add_shipping_info):deliveryoupickup. - payment_type (só no
add_payment_info): a forma escolhida (pix,moneypara dinheiro,credit,debit, ou o nome da forma cadastrada pela loja).
Como vêm os itens na compra: pizza meio a meio vira um item por sabor, cada um com quantidade fracionada (½ + ½) e item_category: "Pizza". Combo vira um item por produto escolhido dentro dele ("Combo Item"). O resto vem como "Produto". Assim o relatório mostra quais sabores vendem, não só "Pizza Grande". Nos outros eventos (add_to_cart, begin_checkout…) o item é a linha do carrinho como o cliente montou.
Dentro de user_data (dados do cliente)
Vão quando o app conhece o cliente: logado (desde o primeiro evento) ou depois de preencher os dados no checkout (cliente convidado). Visitante anônimo vai sem user_data preenchido.
- email_hash: SHA-256 do e-mail em minúsculas.
- phone_hash: SHA-256 do telefone no formato da Meta (
5511999998888, sem+). - phone_hash_google: SHA-256 do telefone no formato do Google (
+5511999998888, com+). Use este no GA4 e nas conversões otimizadas do Google Ads. Formato errado gera um hash que não casa. - E-mail e telefone abertos nunca vão para o navegador.
- external_id: código do cliente no Aliv Hub (o mesmo em todas as compras dele).
- first_name, last_name, city, state, zip_code: abertos, para a correspondência avançada (a Meta e o Google fazem o hash do lado deles, ou sua tag faz).
- country:
BR.
⚠️ Leia sempre de dentro de ecommerce. O app coloca no dataLayer as chaves event, ecommerce, user_data e, no login/sign_up, method (como o cliente entrou). Valor, moeda, tipo de entrega e forma de pagamento estão em ecommerce.value, ecommerce.currency, ecommerce.shipping_tier e ecommerce.payment_type, não no primeiro nível.
5. Passo a passo: GA4 pelo GTM
Só é necessário se o GTM ID estiver preenchido. Sem GTM, basta colar o GA4 ID: o app instala e manda tudo, inclusive o código do cliente como user_id e o e-mail/telefone em hash para os dados fornecidos pelo usuário.
- No GTM, crie as variáveis do tipo Variável da camada de dados (versão 2):
ecommerce.value,ecommerce.currency,ecommerce.transaction_id,ecommerce.items,user_data.email_hash,user_data.phone_hash,user_data.phone_hash_google,user_data.external_id. - Crie a tag Tag do Google com o ID
G-XXXXXXXXXX, acionada em Initialization – All Pages. - Crie uma tag Evento do GA4 para todo o funil:
- Nome do evento:
{{Event}}(a variável interna "Event", que repete o nome que o app mandou). - Em Mais configurações → Comércio eletrônico, marque Enviar dados de comércio eletrônico com origem Camada de dados.
- (Opcional) Propriedades do usuário:
user_id={{user_data.external_id}}, para unir as visitas do mesmo cliente. - Acionador: Evento personalizado, nome com regex:
^(view_item|add_to_cart|view_cart|remove_from_cart|begin_checkout|add_shipping_info|add_payment_info|purchase|login|sign_up)$
- Nome do evento:
- Publique o contêiner e, no GA4, marque
purchasecomo evento principal (conversão).
Pronto: receita, itens mais vendidos e funil (visualizou → carrinho → checkout → compra) aparecem nos relatórios de e-commerce do GA4.
6. Passo a passo: Pixel da Meta pelo GTM
Só é necessário se o GTM ID estiver preenchido. Sem GTM, o Aliv Hub já instala e dispara o Pixel sozinho.
- Instale o Pixel no GTM: use o modelo Facebook Pixel da Galeria de Modelos ou uma tag HTML com o código base da Meta, acionada em All Pages. Ela dispara o PageView.
- Crie uma variável JavaScript personalizado chamada
content_ids:function () { var itens = {{ecommerce.items}} || []; return itens.map(function (i) { return String(i.item_id); }); } - Crie uma tag por evento, com
value = {{ecommerce.value}},currency = BRL,content_ids = {{content_ids}}econtent_type = product:Acionador (evento personalizado) Evento da Meta view_itemViewContent add_to_cartAddToCart begin_checkoutInitiateCheckout add_payment_infoAddPaymentInfo purchasePurchase loginesign_upCompleteRegistration - Na tag do Purchase, use
{{ecommerce.transaction_id}}como Event ID. É o mesmo ID que o servidor manda (seção 7), e a Meta junta as duas notificações da mesma compra numa só. Sem isso a compra conta em dobro. (Sem GTM, o Pixel do app já manda esse ID sozinho.) - Para a correspondência avançada, passe
em = {{user_data.email_hash}},ph = {{user_data.phone_hash}}eexternal_id = {{user_data.external_id}}. O e-mail e o telefone já estão em SHA-256.
7. Eventos pelo servidor (API de Conversões e Measurement Protocol)
Bloqueador de anúncio e o iPhone cortam parte do que o navegador manda. Por isso o Aliv Hub também envia pelo servidor:
Automático: compras do app
Em loja sem GTM, todo pedido do app confirmado vai pelo servidor como Purchase cerca de 2 minutos depois: dinheiro e cartão na entrega logo após o envio, PIX depois do pagamento aprovado. Pedido cancelado nesse intervalo não vai. Com GTM, use o endpoint abaixo.
- Meta (API de Conversões): precisa de Pixel ID + Access Token.
- GA4 (Measurement Protocol): precisa de GA4 ID + API Secret.
- O que vai: valor total, itens, número do pedido, e-mail/telefone/nome/cidade do pedido (a Meta e o Google recebem em hash), código do cliente e, da visita em que o pedido foi feito, o IP, o navegador, os cookies da Meta (
_fbp/_fbc, que ligam a venda ao clique no anúncio) e do Google (_ga, que põe a compra no mesmo usuário e sessão do GA4). - Não conta em dobro: o ID do evento é o número do pedido (
APP-1234), o mesmotransaction_iddopurchasedo navegador. A Meta junta as duas notificações numa venda só, e o GA4 junta pelotransaction_id. No Gerenciador de Eventos, a compra aparece como recebida pelo navegador e servidor. - Vale para lojas cujo plano inclui Traqueamento. Com marcas diferentes na mesma loja, cada pedido vai com o Pixel/GA4 da marca dele.
Automático: vendas das integrações
Com Pixel ID e Access Token preenchidos, todo pedido que entra pelas integrações (iFood, 99Food, Anota AI e as demais plataformas ligadas à loja) vai para a API de Conversões da Meta como o evento Venda Real (Server) - Correta. Leva o valor, os itens, o número do pedido e os dados do cliente que a plataforma mandou. Pode virar uma conversão personalizada no Gerenciador de Eventos. Esses pedidos não passam pelo app, então não aparecem no Pixel do navegador.
Endereço para o seu GTM (server-side)
Em Configurações → Traqueamento aparece o Endpoint de Rastreamento Server-Side, no formato https://alivhub.com.br/api/track/<sua-loja>. O que for enviado para lá (POST, JSON) o Aliv Hub repassa para a API de Conversões da Meta (com Pixel ID + Access Token) e para o GA4 Measurement Protocol (com GA4 ID + API Secret):
{
"event_name": "Purchase",
"event_id": "APP-1234",
"url": "https://alivhub.com.br/app/sua-loja",
"user_agent": "Mozilla/5.0 …",
"user_data": {
"email_hash": "…", "phone_hash": "…",
"first_name": "Maria", "last_name": "Souza",
"city": "Curitiba", "state": "PR", "zip_code": "80000-000", "country": "BR",
"external_id": "48213",
"ip": "…", "fbp": "…", "fbc": "…",
"gclid": "…", "session_id": "…"
},
"custom_data": {
"value": 89.90, "currency": "BRL", "transaction_id": "APP-1234",
"contents": [ { "item_id": "512", "item_name": "Calabresa", "price": 35.00, "quantity": 1 } ]
}
}
- Use os nomes de evento da Meta (
Purchase,AddToCart,ViewContent,InitiateCheckout,AddPaymentInfo,CompleteRegistration). Para o GA4 o Aliv Hub converte sozinho (Purchase→purchasee assim por diante). - No
Purchase, ocustom_data.transaction_idvira o ID do evento. Use o mesmo número na tag de compra do navegador (seção 6, passo 4) e a Meta junta as duas notificações numa venda só. - E-mail e telefone podem ir abertos (
email,phone) ou já em hash (email_hash,phone_hash, 64 caracteres). Valor quebrado ou de mentira (undefined, hash truncado) é descartado, para não derrubar a nota de qualidade do evento na Meta. - Se
ipeuser_agentnão vierem no corpo, o Aliv Hub usa os da própria requisição.fbp/fbctambém são lidos dos cookies quando chegam. - O envio depende de o plano da loja incluir Traqueamento. No plano Elite, o Aliv Hub completa sozinho os dados do cliente que faltarem (e-mail, telefone, nome, cidade) a partir do cadastro dele e do pedido. Isso melhora a qualidade da correspondência.
8. Como testar antes de soltar a campanha
- GTM: clique em Visualizar, abra o link do app da loja e faça o caminho do cliente. Cada evento aparece na lateral do Tag Assistant com o
ecommercee ouser_data. - GA4: Administrador → DebugView mostra os eventos chegando em tempo real enquanto o modo de visualização do GTM está aberto.
- Meta: Gerenciador de Eventos → Testar eventos. Os eventos do navegador aparecem na hora. O Purchase pelo servidor chega uns 2 minutos depois da confirmação e é juntado ao do navegador (mesmo ID).
- Faça um pedido de teste com retirada na loja e pagamento na retirada e cancele no painel depois. Com PIX, o
purchasesó sai quando o PIX é pago.
Perguntas frequentes
Preciso do GTM ou só o Pixel já pega tudo?
Não precisa de GTM. O Pixel ID e o GA4 ID já pegam todos os eventos da seção 3, e o Access Token e o API Secret garantem as compras pelo servidor (sem GTM). O GTM serve para Google Ads, outras ferramentas (TikTok, Clarity…) ou regras próprias. Se usar GTM, configure o Pixel e o GA4 por lá também, porque o app deixa de instalar os dele.
Não achei onde colocar o código do Google Analytics.
Fica em Configurações → Traqueamento, no bloco "Google Analytics e Maps", e não em Marketing. Se a aba não aparece, o usuário que você recebeu não tem permissão de configurações: peça ao dono da loja para liberar ou para colar os IDs.
Por que a compra no PIX demora a aparecer?
Porque ela só é contada quando o pagamento é aprovado. Pedido com PIX gerado e não pago não vira conversão.
Uso GTM. O Aliv Hub também manda a compra pelo servidor?
Não automaticamente. Com GTM, quem decide é o seu contêiner. Para ter a compra pelo servidor, faça o GTM server-side (ou uma tag) chamar o endpoint da seção 7 com o número do pedido como ID, e use esse mesmo ID na tag de compra do navegador.
Os pedidos do iFood aparecem no GA4?
Não pelo navegador, porque o cliente comprou dentro do iFood. Eles vão para a Meta pelo servidor (seção 7), como Venda Real (Server) - Correta.
Posso instalar outras ferramentas (TikTok, Hotjar, Clarity…)?
Pelo GTM, sim. Tudo o que o GTM carrega roda no app, e os mesmos eventos do dataLayer servem para acionar qualquer tag.