Os eventos de e-commerce do GA4 são o que liga o funil de compra no relatório: view_item, add_to_cart, begin_checkout e purchase. Sem eles, você sabe quantas pessoas entraram no site, mas não onde abandonam o checkout nem quanto cada campanha gera de receita. É a diferença entre o GA4 como contador de pageview e o GA4 como ferramenta de análise de negócio.
A configuração correta pede atenção em dois lugares: no dataLayer do site, que precisa enviar os dados certos no momento certo, e no GTM, que lê esses dados e os manda para o GA4. Para ver como esses eventos se encaixam na auditoria de um container inteiro, veja o guia de auditoria de container GTM. E se você quer entender como o Meta Ads atribui essas conversões à campanha certa, tem a atribuição de conversão no Meta Ads.
O que são os eventos de e-commerce do GA4
São um conjunto de eventos e parâmetros padronizados que o GA4 entende de forma nativa e usa para montar os relatórios de monetização e de comportamento de compra. No Universal Analytics isso se chamava Enhanced Ecommerce e dependia do plugin ec.js. O GA4 aposentou esse modelo: agora são eventos recomendados, com nomes fixos, sem plugin extra. Se você ainda ouve "Enhanced Ecommerce do GA4" por aí, é o nome antigo colado no produto novo.
Quando você implementa esses eventos direito, o GA4 consegue mostrar o funil de compra completo (quantas pessoas viram o produto, adicionaram ao carrinho, iniciaram o checkout e finalizaram), os produtos mais vendidos, o ticket médio e a taxa de abandono por etapa. Nada disso aparece se o dataLayer não estiver populado com o objeto ecommerce em cada etapa.
Os principais eventos de e-commerce do GA4
Estes são os eventos que sustentam o funil de compra, do primeiro contato com o produto até a confirmação do pedido:
| Evento | Quando disparar | Essencial para o funil |
|---|---|---|
view_item_list | Lista de produtos (categoria, busca, home) | Não |
select_item | Clique em produto de uma lista | Não |
view_item | Visita à página de produto | Sim |
add_to_wishlist | Adição à lista de desejos | Não |
add_to_cart | Adição ao carrinho | Sim |
remove_from_cart | Remoção do carrinho | Não |
begin_checkout | Início do processo de checkout | Sim |
purchase | Confirmação de pedido | Sim |
Para o funil básico de análise de conversão, implemente os 4 essenciais: view_item, add_to_cart, begin_checkout e purchase. Para a jornada completa, some os outros 4 da tabela.
O GA4 reconhece mais eventos de e-commerce além desses. Se você quer detalhar o checkout, tem view_cart (visualização do carrinho), add_shipping_info (dados de frete) e add_payment_info (dados de pagamento) — cada um vira uma etapa a mais no funil. E para pós-venda existe o refund, que registra estornos e devolve o valor no relatório de receita. Todos usam a mesma estrutura de ecommerce descrita abaixo.
O que cada evento precisa incluir
Cada evento tem parâmetros que precisam estar presentes para ele aparecer nos relatórios de e-commerce. A base é sempre o array items, a lista de produtos envolvidos.
Array items — campos obrigatórios e recomendados
Cada item no array precisa ter pelo menos:
item_id: ID único do produto (obrigatório)item_name: nome do produto (obrigatório)price: preço unitário do produtoquantity: quantidade (necessário em purchase e add_to_cart)item_category: categoria do produtoitem_brand: marca do produto
Parâmetros no nível do evento (fora do items)
currency: código de moeda ISO 4217, ex: "BRL" (obrigatório quando value está presente)value: valor total do evento (obrigatório para purchase)transaction_id: ID único da transação (obrigatório para purchase)coupon: código de cupom aplicado (quando houver)
Estrutura correta do dataLayer para cada evento
O dataLayer é a ponte entre o seu site e o GTM. Cada evento de e-commerce precisa de um push com a estrutura certa.
Exemplo: dataLayer para view_item
window.dataLayer = window.dataLayer || [];
dataLayer.push({ ecommerce: null }); // limpa o ecommerce anterior
dataLayer.push({
event: 'view_item',
ecommerce: {
currency: 'BRL',
value: 299.90,
items: [{
item_id: 'SKU-001',
item_name: 'Camiseta Básica Azul',
item_category: 'Camisetas',
item_brand: 'Marca X',
price: 299.90,
quantity: 1
}]
}
});Exemplo: dataLayer para purchase
window.dataLayer = window.dataLayer || [];
dataLayer.push({ ecommerce: null });
dataLayer.push({
event: 'purchase',
ecommerce: {
transaction_id: 'ORD-12345',
value: 589.80,
currency: 'BRL',
coupon: 'DESCONTO10',
items: [{
item_id: 'SKU-001',
item_name: 'Camiseta Básica Azul',
price: 299.90,
quantity: 1
}, {
item_id: 'SKU-008',
item_name: 'Calça Slim Preta',
price: 289.90,
quantity: 1
}]
}
});Obs.: aquele dataLayer.push({ ecommerce: null }) antes de cada evento não é enfeite. O GA4 mescla objetos ecommerce de pushes seguidos, então itens de um view_item antigo podem contaminar o purchase se você não limpar. É a recomendação do próprio Google e evita relatório de produto sujo.
Obs.: no purchase, o transaction_id é crítico. O GA4 usa esse ID para deduplicar: se o mesmo transaction_id chegar duas vezes (por exemplo, quando a pessoa recarrega a página de confirmação), o segundo é descartado. Use sempre o ID único do pedido.
Como configurar os eventos de e-commerce no GTM
No GTM, cada evento de e-commerce é uma tag que lê os dados do dataLayer e os envia para o GA4.
Passo 1: crie variáveis de dataLayer para cada campo
Antes das tags, crie as variáveis de dataLayer para os campos que você vai usar:
- Variável "DL - ecommerce.value" lendo o caminho
ecommerce.value - Variável "DL - ecommerce.currency" lendo
ecommerce.currency - Variável "DL - ecommerce.transaction_id" lendo
ecommerce.transaction_id - Variável "DL - ecommerce.items" lendo
ecommerce.items
Passo 2: crie triggers para cada evento
Crie um trigger de evento personalizado (Custom Event) para cada evento, com o nome igual ao do push no dataLayer (ex: purchase). Assim a tag dispara só quando o push correspondente acontece.
Passo 3: crie as tags de GA4 Event
Para cada evento, crie uma tag do tipo "GA4 Event":
- Measurement ID: variável com o ID do GA4
- Event Name: o nome do evento, exato (ex:
purchase) — o GA4 diferencia maiúscula de minúscula - Event Parameters: cada parâmetro mapeando para a variável de
dataLayercorrespondente - Trigger: o trigger específico do evento (nunca All Pages)
Para o parâmetro items, use a variável de dataLayer que lê o array inteiro — o GA4 processa a lista sozinho.
Erros comuns na configuração dos eventos
Array items vazio ou com estrutura incorreta
Na prática, é o que mais aparece em auditoria. O purchase chega com items vazio ou sem item_id e item_name, e os relatórios de produto do GA4 ficam em branco ou cheios de "(not set)". Valide o array no DebugView: clique no evento purchase e confirme que os produtos aparecem com os campos preenchidos.
Currency faltando
O GA4 exige o parâmetro currency sempre que o value está presente. Sem currency, o valor de conversão não entra nos relatórios de receita. Configure como constante "BRL" ou como variável de dataLayer se o site trabalha com várias moedas.
Transaction ID duplicado
Se o transaction_id vier sempre com o mesmo valor, o GA4 descarta os eventos seguintes achando que são duplicata. Use o ID único do pedido, que costuma estar disponível no dataLayer depois da confirmação de compra.
Evento disparando na página errada
O purchase deve disparar só na página de confirmação de pedido, nunca no início do checkout ou no carrinho. Um trigger de URL específico da página de obrigado (ou um evento de dataLayer dedicado) evita o disparo torto. Tem mais detalhe em como configurar o GA4 no GTM corretamente.
Como verificar no DebugView do GA4
O DebugView é a melhor ferramenta para validar os eventos de e-commerce antes de subir para produção.
- Ative o Preview Mode no GTM
- Abra o GA4 em Administrador → DebugView
- Navegue pelo fluxo de compra: visite um produto, adicione ao carrinho, inicie o checkout e finalize uma compra de teste
- No DebugView, cada evento aparece na linha do tempo — clique em cada um para ver os parâmetros
- Confirme que o evento tem o nome certo, o array
itemspreenchido,valueecurrencynos eventos de conversão, etransaction_idnopurchase
Impacto no relatório de e-commerce do GA4
Com os 4 eventos essenciais configurados, o relatório de e-commerce do GA4 fica disponível em Relatórios → Monetização (Compras de e-commerce). Ele mostra receita total, número de transações, ticket médio, produtos mais vendidos e o funil de compra.
A Jornada de compra do usuário aparece com a taxa de conversão de cada etapa: visualizou o produto → adicionou ao carrinho → iniciou o checkout → comprou. Se alguma etapa não aparece, o evento correspondente não está chegando — e o DebugView é onde você confirma.
Conclusão
Nome de evento errado, items vazio ou transaction_id repetido não travam a coleta: os eventos até chegam no GA4, só que os relatórios de receita ficam furados e você só descobre quando vai otimizar campanha com dado ruim. Por isso o payload completo — value, currency, items e transaction_id — é o que separa um tracking de e-commerce que funciona de um que só parece funcionar.
Se você não quer conferir isso tag por tag na mão, rode o Auditor de container GTM. Ele lê o seu container e aponta quais eventos de e-commerce estão presentes e se o payload de compra está completo — em segundos, de graça, sem precisar de acesso ao site.
FAQ
Qual a diferença entre os eventos de e-commerce do GA4 e do Universal Analytics?
O UA usava o Enhanced Ecommerce com estrutura própria (ec:addProduct, entre outros) e exigia o plugin ec.js. O GA4 usa um modelo de eventos nativos, sem plugin. As estruturas de dataLayer são diferentes — você não reaproveita o dataLayer do UA no GA4 sem adaptar. Se está migrando, precisa atualizar o código de dataLayer do site.
Preciso implementar todos os eventos da tabela?
Não. Os 4 essenciais para o funil são view_item, add_to_cart, begin_checkout e purchase. Os outros (view_item_list, select_item, add_to_wishlist, remove_from_cart, e os de checkout como add_shipping_info e add_payment_info) enriquecem a análise, mas não bloqueiam o relatório básico. Implemente os 4 primeiro e adicione o resto conforme a necessidade.
Preciso do array items em todos os eventos?
Sim nos eventos de produto (view_item, add_to_cart, begin_checkout, purchase). O items com pelo menos item_id e item_name é o que faz os relatórios de produto funcionarem. Sem items, o evento chega no GA4, mas não aparece nos relatórios de e-commerce de produto.
Como resolver "(not set)" no relatório de produtos comprados?
A causa mais provável é item_id ou item_name vazio ou undefined dentro de items. Abra o DebugView, clique no evento purchase e expanda o parâmetro items — você vê exatamente o que está chegando. Se os campos estiverem em branco, o problema está no dataLayer do site. Se a variável do GTM estiver lendo o caminho errado, ajuste o caminho da variável para bater com a estrutura do dataLayer.
