Meta Pixel
O que é o Meta Pixel?
O Meta Pixel é um trecho de código JavaScript que, ao ser inserido no template da loja, permite medir a eficácia das campanhas publicitárias ao rastrear as ações que as pessoas realizam no site.
Por que ele é importante?
- Mensuração de Conversões: Permite visualizar como os usuários interagem com o site após visualizarem um anúncio no Facebook ou Instagram.
- Otimização da Entrega dos Anúncios: Ajuda os algoritmos da Meta a mostrarem seus anúncios para pessoas com maior probabilidade de realizar uma conversão (compra, cadastro, etc.).
- Criação de Públicos (Remarketing): Possibilita a criação de públicos personalizados baseados em ações específicas, como "usuários que adicionaram ao carrinho, mas não finalizaram a compra".
Instruções de Implementação
Atenção: É necessário baixar uma nova versão do Storefront local para testes em localhost.
A implementação foi simplificada através de dois componentes da wake-components centralizados. No entanto, para que os dados sejam capturados corretamente, recomendamos seguir os passos abaixo.
1. wake_meta_pixel_script
wake_meta_pixel_scriptEste componente contém a biblioteca base do Meta Pixel e a inicialização do rastreio. Ele é o "motor" que permite a comunicação com os servidores da Meta.
Onde inserir:
Deve ser incluído no <head> de todas as páginas da loja onde o rastreamento é desejado. Por padrão, ao acessar uma página com o componente inserido, um evento PageView é enviado à Meta.
Exemplo de uso:
No arquivo de páginas como home.html, hotsite.html, product.html, etc.
<head>
...
{{ wake_meta_pixel_script }}
...
</head>
2. wake_meta_pixel_content
wake_meta_pixel_contentEste componente é responsável pela inteligência de dados. Ele monta os objetos com as informações da página (IDs, preços, nomes) e dispara um evento customizado, que será capturado por uma função que executa o comando fbq('track', ...) para disparar os eventos.
Nele é possível enviar parâmetros que irão definir os dados e os eventos que serão enviados.
Recomendações de onde inserir
Pages/search.html: Dentro do<body>. Inserir da seguinte forma dispara um eventoSearchpor padrão.
<body>
...
{{ wake_meta_pixel_content search_query: data.search.search_query }}
...
</body>
Pages/product.html: Dentro do<body>. Inserir da seguinte forma dispara um eventoViewContentpor padrão.
<body>
...
{{ wake_meta_pixel_content product: product variant_id: null }}
...
</body>
Components/product/attributes/product_attribute.html: Dentro da validação se o produto está disponível. Inserir da seguinte forma fará com que a ação de adição do produto ao carrinho dispare um eventoAddToCart.
{{~ if available ~}}
...
{{ wake_meta_pixel_content product: product variant_id: variant_id }}
...
{{~ end ~}}
Components/spot.html: Dentro da validação se é possível adicionar o produto ao carrinho diretamente do spot. Inserir da seguinte forma fará com que a ação de adição do produto ao carrinho dispare um eventoAddToCart.
{{~ if product.add_to_cart_from_spot ~}}
...
{{ wake_meta_pixel_content product: product variant_id: product.product_variant_id }}
...
{{~ end ~}}
Pages/checkout/close.html: Dentro do<body>. Inserir da seguinte forma dispara um eventoInitiateCheckoutpor padrão.
<body>
...
{{ wake_meta_pixel_content checkout: data.checkout }}
...
</body>
Pages/checkout/confirmation.html: Dentro do<body>. Inserir da seguinte forma dispara um eventoPurchasepor padrão.
<body>
...
{{ wake_meta_pixel_content orders: data.checkout.orders }}
...
</body>
Components/product/buy_list/buy_list_product_attribute.html(para listas de compras e kits): Dentro da validação se a lista de compras ou kit está disponível. Inserir da seguinte forma fará com que a ação de adição ao carrinho dispare um eventoAddToCart.
{{~ if available ~}}
...
{{ wake_meta_pixel_content product: product variant_id: variant_id }}
...
{{~ end ~}}
Components/product/attributes/product_matrix_attribute.html(para produtos com matriz de atributos): Dentro da renderização das colunas dos atributos. Inserir da seguinte forma fará com que a ação de adição do produto ao carrinho dispare um eventoAddToCart.
{{~ for j in 0..column_size ~}}
...
{{ wake_meta_pixel_content product: current_product variant_id: current_product.product_variant_id }}
...
{{~ end ~}}
Eventos e Dados Customizados
É possível enviar eventos e dados customizados, diferentes dos implementados por padrão no componente wake_meta_pixel_content da wake-components. Para isso, basta enviar os parâmetros meta_pixel_content_data e event_name, com o conteúdo e o nome do evento, respectivamente.
Exemplo:
No componente de visualização dos produtos da página de lista de compras/kits (Components/product/buy_list/buy_list_view.html):
{{-
meta_pixel_content_data = {
is_kit: is_kit,
buy_list_id: buy_list.buy_list_id,
value: buy_list.prices.price,
currency: "BRL"
}
-}}
{{ wake_meta_pixel_content meta_pixel_content_data: meta_pixel_content_data event_name: "ViewContent" }}
Scripts
Assets/JS/event_manager.js
Assets/JS/event_manager.jsRecomendamos inserir o event listener do evento fbqEvent no arquivo event_manager.js, que é dedicado para isso. O event listener fará referência à função wakeHandleFbqEvent, que é própria da wake-components:
if (typeof wakeHandleFbqEvent === "function") {
window.addEventListener('fbqEvent', wakeHandleFbqEvent);
}
Assets/JS/product.js
Assets/JS/product.jsRecomendamos inserir o disparo do evento fbqEvent para os eventos AddToCart no arquivo product.js, na função addOrCreateCheckout, responsável por adicionar o produto ao carrinho:
async function addOrCreateCheckout(input) {
// ...
// await client.checkout.add(input);
input.forEach(product => {
const metaPixelInput = document.querySelector(`input[meta-pixel-content-data='${product.productVariantId}']`);
const metaPixelContentData = metaPixelInput?.value;
if (metaPixelContentData) {
window.dispatchEvent(new CustomEvent('fbqEvent', {
detail: {
name: 'AddToCart',
payload: metaPixelContentData
}
}));
}
});
// ...
}
Assets/JS/buy_list.js
Assets/JS/buy_list.jsRecomendamos inserir o disparo do evento fbqEvent para os eventos AddToCart no arquivo buy_list.js, na função addKitToCart, responsável por adicionar kits ao carrinho:
async function addKitToCart(input) {
// ...
// await client.checkout.add(input);
input.products.forEach(product => {
product.variants.forEach(variant => {
const metaPixelInput = document.querySelector(`input[meta-pixel-content-data='${variant.productVariantId}']`);
const metaPixelContentData = metaPixelInput?.value;
if (metaPixelContentData) {
window.dispatchEvent(new CustomEvent('fbqEvent', {
detail: {
name: 'AddToCart',
payload: metaPixelContentData
}
}));
}
});
});
// ...
}
Queries (GraphQL)
Queries que renderizam spots
(Ex: home.graphql, hotsite.graphql, search.graphql, etc.)
Os seguintes campos relacionados aos PRODUTOS são necessários para o preenchimento completo das informações:
-
productCategories -
main -
name -
prices -
price -
productName -
productId -
productVariantId
Queries que renderizam página de produtos e atributos
(Ex: product.graphql, etc.)
Os seguintes campos relacionados aos PRODUTOS são necessários para o preenchimento completo das informações:
-
productCategories -
main -
name -
prices -
price -
productName -
productId -
attributeSelections -
selectedVariant -
productVariantId
Query que renderiza página de busca
(Ex: search.graphql, etc.)
Os seguintes campos relacionados à BUSCA são necessários para o preenchimento completo das informações:
searchQuery
Os seguintes campos relacionados aos PRODUTOS são necessários:
-
productCategories -
main -
name -
prices -
price -
productName -
productId -
productVariantId
Query que renderiza página de finalização do pedido
(Ex: close.graphql, etc.)
Os seguintes campos relacionados ao CARRINHO são necessários para o preenchimento completo das informações:
total
Os seguintes campos relacionados aos PRODUTOS são necessários:
quantityproductVariantIdproductId
Query que renderiza página de confirmação do pedido
(Ex: confirmation.graphql, etc.)
Os seguintes campos relacionados ao PEDIDO são necessários para o preenchimento completo das informações:
orderIdtotalValue
Os seguintes campos relacionados aos PRODUTOS DO PEDIDO são necessários:
quantityproductVariantIdnamevalue
Updated about 9 hours ago
