Transmissão de dados de E-commerce
Importante
Trabalhar com a API JavaScript exige conhecimentos de HTML e JavaScript. Se você não conhece essas linguagens, entre em contato com o desenvolvedor ou webmaster do seu site.
Sobre o contêiner de dados e sua transmissão para o Yandex Metrica
No E-commerce, cada produto é um objeto no qual certas ações podem ser executadas, como visualizar a descrição completa ou adicionar à cesta. Esses dados são transmitidos como objetos JavaScript que contêm a ID da ação e uma lista de descrições dos itens nos quais essa ação foi executada. No contexto da API JavaScript, denominamos esses objetos objetos de E-commerce.
Para transmitir dados para o Yandex Metrica enquanto objetos de E-commerce, adicione-os ao arranjo JavaScript especial window.dataLayer
no namespace global (janela) usando o método push. Denominamos esse arranjo contêiner de dados.
Atenção
Não transmita os dados quando o usuário estiver indo para outra página do site. Um exemplo é quando um evento onclick
for usado no botão "Finalizar compra". Nesse caso, a próxima página pode carregar antes da tag enviar os dados para o Yandex Metrica. Consequentemente, as informações sobre o evento serão perdidas.
O contêiner de dados deve estar localizado no namespace global, e seu nome deve corresponder ao nome especificado durante a configuração ou inicialização da tag. Se o contêiner de dados for denominado dataLayer
ou a tag Yandex Metrica tiver sido iniciada com o parâmetro ecommerce definido como true
, presume-se que o contêiner de dados seja o arranjo window.dataLayer
.
<script type="text/javascript">
// Inicialização do código da tag
ym(XXXXXX, 'init', {
...
// Se o parâmetro "ecommerce" estiver habilitado durante a inicialização, o contêiner de dados será sempre window.dataLayer
// Caso você tenha habilitado o parâmetro através da interface, é possível mudar o nome nas configurações da tag
ecommerce: true
...
});
// Contêiner de dados (arranjo JavaScript) no namespace global (janela)
window.dataLayer = window.dataLayer || [];
</script>
...
<script type="text/javascript">
// Use o método "push" para adicionar um objeto de E-commerce
window.dataLayer.push(
// Objeto de E-commerce
{
"ecommerce": {
...
"currencyCode": "RUB",
"<actionType>": {
"actionField": <actionField>,
"products" : [<productFieldObject>, <productFieldObject>, ...]
}
...
}
}
);
</script>
O nome do contêiner de dados e a estrutura dos objetos de E-commerce nele contidos equivalem às entidades correspondentes no Enhanced Ecommerce do Google Analytics. Sendo assim, se você já configurou o envio de dados para o Enhanced Ecommerce do Google Analytics, inclusive através da Tag Global do Site, e já habilitou o E-commerce no Yandex Metrica, este último começará a coletar dados. O Yandex Metrica também é compatível com o E-commerce GA4 e coleta dados sem precisar de nenhuma configuração adicional.
Atenção
O contêiner de dados pode conter no máximo 8.192 caracteres.
Se você for enviar mais dados que isso no contêiner, recomendamos dividir o pedido em partes com subnúmeros (p. ex., pedido1-1
, pedido1-2
, pedido1-3
). Dessa forma, tanto os pedidos quanto os subpedidos serão exibidos no Yandex Metrica.
Para avaliar o número efetivo de pedidos, defina um objetivo JS e envie-o para o Yandex Metrica com um dos subpedidos. Quando você enviar vários contêineres de um pedido dividido em subpedidos, um objetivo será alcançado e você poderá usá-lo para calcular o número total de pedidos.
Um objeto de e-commerce possui o seguinte formato:
window.dataLayer.push({
"ecommerce": {
"currencyCode": "RUB",
"<actionType>" : {
"actionField" : <actionField>,
"products" : [<productFieldObject>, <productFieldObject>, ...]
}
}
});
Campo |
Tipo |
Descrição |
|
Objeto |
Campo obrigatório do contêiner |
|
String |
Código de moeda ISO 4217 com três letras. Se uma moeda diferente for informada, serão enviados valores nulos em vez de moedas e quantias. |
|
— |
O nome do campo (que substitui Valores possíveis:
Se a informação sobre a remoção do item tiver sido transmitida para o Yandex Metrica, o relatório pode vir a mostrar um número negativo de itens (o total é calculado pela subtração do número de itens deletados do número total de itens adicionados). Se o preço do item tiver sido transmitido, este também poderá ter um valor negativo no relatório. |
|
Objeto |
Um objeto actionField. Dados adicionais que descrevem a ação realizada. Somente é processado se a ação for uma compra ( |
|
Arranjo |
Lista de descrições dos itens nos quais a ação especificada foi executada. Descrições de produto são objetos productFieldObject. Não são usados nas ações |
|
Arranjo |
Lista de descrições da campanha publicitária na qual a ação especificada foi executada. As descrições das campanhas publicitárias são objetos promoFieldObject. |
* Parâmetro obrigatório.
** Parâmetro obrigatório para o envio de informações sobre a compra.
Dados do item
Um objeto que descreve um item específico.
A estrutura do objeto que descreve o item é denotada como productFieldObject.
Campo |
Tipo |
Descrição |
|
String |
ID do item. Por exemplo, o SKU. É necessário especificar a id ou o nome |
|
String |
Nome do item. Por exemplo, "Camiseta" É preciso especificar um "nome" ou uma "id" |
|
String |
A marca ou marca registrada associada ao item. Por exemplo, "Yandex" |
|
String |
A categoria a que o item pertence. A hierarquia de categorias comporta até 4 níveis. Use o símbolo / para separar os níveis. Por exemplo, "Roupa/Roupa masculina/Camisetas". |
|
String |
Um código promocional associado ao item. Por exemplo, "SITE_PARCEIRO_15" |
|
Número |
Valor do desconto (um valor numérico). |
|
String |
Lista a que o item pertence. Para avaliar a eficácia da lista em diferentes estágios de interação do usuário com o produto, recomendamos especificar a lista de produtos em todos os eventos que ocorrerem após a visualização da lista. |
|
Número inteiro |
Posição do item na lista. Por exemplo, 2 |
|
Número |
Preço do item. |
|
Número inteiro |
Quantidade do item. |
|
String |
Uma variação do item. Por exemplo, "Vermelho" |
Dados da ação
Um objeto contendo dados sobre uma ação realizada com um item ou com um conjunto de produtos.
Somente é processado se a ação for uma compra (<actionType>
— purchase
).
A estrutura do objeto que descreve a ação é denotada como actionField.
Ao transmitir dados sobre uma ação, o Yandex Metrica cria um objetivo. Isso permite obter informações sobre a receita de campanhas publicitárias do Yandex Direct. Na lista de objetivos disponíveis do Yandex Direct, esse objetivo é mostrado como "eCommerce: Compra (tag №
Campo |
Tipo |
Descrição |
|
String |
ID do produto comprado. Informação obrigatória. Exemplo: TRX#54321 |
|
String |
Um código promocional associado à compra inteira |
|
Número inteiro |
O número do objetivo. Especificado caso essa ação tiver sido o objetivo. Você pode visualizar o número de um objetivo na interface do Yandex Metrica: acesse a seção Configurações e abra a aba Objetivos. |
|
Número |
A receita recebida. Se omitida, é calculada automaticamente enquanto a soma do preço de todos os itens associados à compra |
Dados de campanha promocional
Um objeto descrevendo campanhas promocionais.
Este objeto utiliza um contêiner parecido, mas usando promoFieldObject no lugar de productFieldObject.
Campo |
Tipo |
Descrição |
|
String |
ID da campanha promocional. Informação obrigatória |
|
String |
Nome da campanha promocional |
|
String |
Nome do banner publicitário |
|
String |
Espaço do banner publicitário |
|
String |
Posição do banner publicitário |
Exemplos
Para transmitir informações, é preciso criar um script no site que será responsável por um determinado evento (por exemplo, fazer um pedido) no formato descrito acima. Eis abaixo exemplos de scripts para ações aceitas pelo Yandex Metrica.
Todos os exemplos partem do pressuposto de que a tag foi inicializada com o E-commerce habilitado e que os dados foram transferidos através do contêiner window.dataLayer.
Visualização de lista de produtos
Os dados devem ser enviados no momento em que a lista de produtos é aberta.
dataLayer.push({
"ecommerce": {
"currencyCode": "RUB",
"impressions": [
{
"id": "P15432",
"name" : "camiseta",
"price": 477,60,
"brand": "Yandex",
"category": "Roupa/Roupa masculina/Camisetas",
"variant" : "Vermelho",
"list": "Search",
"position": 1
},
{
"id": "P15435",
"name" : "Camiseta",
"price": 500,60,
"brand": "Yandex",
"category": "Roupa/Roupa masculina/Camisetas",
"variant" : "Azul",
"list": "Pesquisa",
"position": 2
}
]
}
});
Clique em item numa lista de produtos
Os dados devem ser enviados no momento em que o usuário clica no link do produto.
dataLayer.push({
"ecommerce": {
"currencyCode": "RUB",
"click": {
"products": [
{
"id": "39084",
"name": "Yandex Tumbler",
"price": 1089,69,
"brand": "Yandex",
"category": "Artigos para Casa/Artigos para Mesa/Garrafas e canecas térmicas",
"variant": "Vermelho",
"list": "Pesquisa",
"position": 1
}
]
}
}
});
Visualização de um produto
Os dados devem ser enviados no momento em que é aberta a página com o cartão do produto.
dataLayer.push({
"ecommerce": {
"currencyCode": "RUB",
"detail": {
"products": [
{
"id": "P15432",
"name" : "camiseta",
"price": 477,60,
"brand": "Yandex",
"category": "Roupa/Roupa masculina/Camisetas",
"variant" : "Vermelho",
"list": "Resultados de pesquisa",
"position": 1
}
]
}
}
});
Adição de um item à cesta
Os dados devem ser enviados no momento em que o pedido é adicionado à cesta. Por exemplo, ao clicar em "Adicionar à cesta".
dataLayer.push({
"ecommerce": {
"currencyCode": "RUB",
"add": {
"products": [
{
"id": "43521",
"name": "Bolsa Yandex",
"price": 654,32,
"brand": "Yandex",
"category": "Acessórios/Bolsas",
"quantity": 1,
"list": "Resultados de pesquisa na categoria",
"position": 2
}
]
}
}
});
Remoção de um item da cesta
Os dados devem ser enviados no momento em que o item é removido da cesta.
dataLayer.push({
"ecommerce": {
"currencyCode": "RUB",
"remove": {
"products": [
{
"id": "15243",
"name": "Limpa-telas Yandex para smartphones",
"category": "acessórios Smartphone",
"quantity": 1,
"list": "Acessórios",
"position": 3
}
]
}
}
});
Compra
Os dados devem ser enviados no momento em que o pedido é confirmado.
dataLayer.push({
"ecommerce": {
"currencyCode": "RUB",
"purchase": {
"actionField": {
"id" : "TRX987"
},
"products": [
{
"id": "25341",
"name": "moletom masculino Yandex",
"price": 1345,26,
"brand": "Yandex",
"category": "Roupa/Roupa masculina/Moletons e capuz",
"variant": "Laranja",
"quantity": 1,
"list": "Clothing",
"position": 1
},
{
"id": "25314",
"name": "Moletom feminino Yandex",
"price": 1543,62,
"brand": "Yandex",
"category": "Roupa/Roupa feminina/Moletons e capuz",
"variant": "Branco",
"quantity": 3,
"list": "Moletons",
"position": 2
}
]
}
}
});
Visualização de um anúncio interno
Os dados devem ser enviados no momento em que o usuário visualiza o anúncio.
dataLayer.push({
"ecommerce": {
"promoView": {
"promotions": [
{
"id": "BF001",
"name": "Black Friday",
"creative": "Banner_1",
"position": "Slot1"
},
{
"id": "VERAO002",
"name": "Promoções de verão",
"creative": "Banner_3",
"position": "Slot2"
}
]
}
}
});
Clique em um anúncio interno
Os dados devem ser enviados no momento em que o usuário clica no anúncio ou conclui outra ação almejada relacionada ao anúncio.
dataLayer.push({
"ecommerce": {
"promoClick": {
"promotions": [
{
"id": "BF001",
"name": "Black Friday",
"creative": "Banner_1",
"position": "Slot1"
}
]
}
}
});
Saiba mais
Links úteis |
Treinamento online |
Parâmetro obrigatório.
Parâmetro obrigatório para transmissão de informações de compra.
É preciso especificar um "nome" ou uma "id".
Informação obrigatória.