Como extrair dados do Data Layer no Google Tag Manager
A camada de dados ou Data Layer é um objeto, ou vetor de objetos, que contém todas as informações que você quer transmitir ao Google Tag Manager.
Informações, como eventos ou variáveis, podem ser enviadas ao Google Tag Manager através da camada de dados, e os acionadores podem ser configurados no Gerenciador com base nos valores das variáveis (por exemplo, disparar uma tag de remarketing quando purchase_total
> US$ 100) ou em eventos específicos.
Os valores das variáveis também podem ser transmitidos a outras tags, por exemplo, enviando o purchase_total
para o campo de valor de uma tag.
Basicamente existem 3 formas de extrair dados do Data Layer no Google Tag Manager: Chaves de Primeiro Nível, Chaves de Segundo Nível ou Child Keys e Dados de um Vetor ou Array.
Como extrair dados de uma Chave Primária no Data Layer
As chaves de primeiro nível são as variáveis padrão do data layer. Seguem a seguinte estrutura:
<script>
dataLayer = [{
'pageCategory': 'signup',
'visitorType': 'high-value'
}];
</script>
Para coletar os dados destas variáveis basta criar uma variável no Google Tag Manager com o mesmo nome, assim poderá ser usada para outros acionadores ou tags.
Como extrair dados de Chaves Secundárias
Para extrair os valores de uma variável secundária, ou child key, que é basicamente uma variável dentro de outra, como esta:
{
attributes: {
pageCategory: 'signup'
}
}
Esta variável pode ser extraída da seguinte forma:
Como extrair dados de Vetores no Google Tag Manager
Este cenário é muito comum na implementação do Ecommerce no Google Analytics ou no Enhanced Ecommerce. Onde temos um vetor contendo os dados de transação, impressões de produtos, cliques, etc.
Este é o exemplo oficial da base de conhecimento deles:
<script>
// Send transaction data with a pageview if available
// when the page loads. Otherwise, use an event when the transaction
// data becomes available.
dataLayer.push({
'ecommerce': {
'purchase': {
'actionField': {
'id': 'T12345', // Transaction ID. Required for purchases and refunds.
'affiliation': 'Online Store',
'revenue': '35.43', // Total transaction value (incl. tax and shipping)
'tax':'4.90',
'shipping': '5.99',
'coupon': 'SUMMER_SALE'
},
'products': [{ // List of productFieldObjects.
'name': 'Triblend Android T-Shirt', // Name or ID is required.
'id': '12345',
'price': '15.25',
'brand': 'Google',
'category': 'Apparel',
'variant': 'Gray',
'quantity': 1,
'coupon': '' // Optional fields may be omitted or set to empty string.
},
{
'name': 'Donut Friday Scented T-Shirt',
'id': '67890',
'price': '33.75',
'brand': 'Google',
'category': 'Apparel',
'variant': 'Black',
'quantity': 1
}]
}
}
});
</script>
No caso acima se quiséssemos extrair o valor da transação (revenue) para enviar para o Google Tag Manager, criaríamos a seguinte variável no GTM:
ecommerce.purchase.actionField.revenue
Porém se quisermos pegar o dado de preço de um dos produtos neste vetor, teríamos a seguinte variável:
ecommerce.purchase.products.0.price
No exemplo acima queremos o primeiro produto, logo a contagem começa em 0, caso queira usar os dados do segundo produto, seria a posição 1 e assim por diante.
Este método é muito útil para extrair dados da implementação do Enhanced Ecommerce para o Facebook, Google Ads e outras plataformas que podem usar os dados de transações para otimizar campanhas e criar públicos.
Agora, você sabe como extrair dados da camada de dados de 3 maneiras diferentes. Embora todos utilizem a mesma variável da camada de dados, seus nomes são diferentes e dependem da estrutura de dados – matrizes, chaves aninhadas ou chaves simples (primeiro nível).
Texto Original: https://www.analyticsmania.com/post/pull-data-from-data-layer-google-tag-manager-tutorial/
Luiz Felipe Machado ( )
Bom dia, Zé Matias!
Obrigado pelo resumo! O trabalho do Julius é incrível, mas as vezes é tanta informação que acaba atrapalhando um pouco.
Parabéns pelo trabalho.
Zé Matias ( )
Oi Luiz, sim ele manda mto bem! Que bom que ajudou!
João Vitor ( )
Salve Zé Matias! Cara, que massa que vc simplificou mesmo essa informação e disponibilizou em português. O Julius realmente tem muito conhecimento mas às vezes é difícil acompanhar tudo.
Olha só, vc sabe me dizer se é possível extrair todos as informações do array com uma variável apenas?
Por exemplo, se tivesse como fazer algo do tipo:
ecommerce.checkout.products.all.price ao invés de colocar todos os possíveis números que venha a ter se eu fosse fazer pelos números (ecommerce.checkout.products.0.price; …1.price; …2.price; etc). Preciso enviar o valor total do carrinho e do checkout, mas tô com bastante dificuldade de extrair essa informação e a plataforma que estou usando não colabora, então o pessoal não insere lá na dataLayer o valor total.
Isso facilitaria bastante na hora de enviar os parâmetros para as plataformas.
Valeu pelo seu trabalho!
Zé Matias ( )
Oi João, obrigado pelo comentário.
É possível com javascript. Neste link tem algumas funções para percorrer o datalayer e retornar as informações:
https://mixedanalytics.com/blog/use-enhanced-ecommerce-data-layer-marketing-pixels/
Geralmente uso alguma função como esta, ou o dev/plataforma fornece a lista que preciso para alguma ferramenta, como Criteo, FB Pixel, etc.