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

ecommerce*

Objeto

Campo obrigatório do contêiner

currencyCode

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.

<actionType>*

O nome do campo (que substitui <actionType>) é o identificador de uma ação executada com um conjunto de produtos.

Valores possíveis:

  • impressions: Visualização da lista de produtos.
  • click: Clique em um item da lista de produtos.
  • detail: Visualização de um item.
  • add: Adição de item ao carrinho de compras.
  • remove: Remoção de item do carrinho de compras.
  • purchase: Compra.
  • promoView: Visualização de um anúncio interno.
  • promoClick: Clique em um anúncio interno.

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.

actionField**

Objeto

Um objeto actionField. Dados adicionais que descrevem a ação realizada.

Somente é processado se a ação for uma compra (<actionType>purchase).

products*

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 promoClick, promoView e impressions.

promotions*

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

id*

String

ID do item. Por exemplo, o SKU.

É necessário especificar a id ou o nome

name*

String

Nome do item. Por exemplo, "Camiseta"

É preciso especificar um "nome" ou uma "id"

brand

String

A marca ou marca registrada associada ao item. Por exemplo, "Yandex"

categoria

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".

cupom

String

Um código promocional associado ao item. Por exemplo, "SITE_PARCEIRO_15"

discount

Número

Valor do desconto (um valor numérico).

list

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.

posição

Número inteiro

Posição do item na lista. Por exemplo, 2

price

Número

Preço do item.

quantity

Número inteiro

Quantidade do item.

variant

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 № )". Você pode rastrear a conclusão do objetivo por conta própria transmitindo o campo goal_id.

Campo

Tipo

Descrição

id*

String

ID do produto comprado.

Informação obrigatória.

Exemplo: TRX#54321

cupom

String

Um código promocional associado à compra inteira

goal_id

Número inteiro

O número do objetivo. Especificado caso essa ação tiver sido o objetivo.
O objetivo deve ser definido como um evento do tipo JavaScript.

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.

revenue

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

id*

String

ID da campanha promocional.

Informação obrigatória

name

String

Nome da campanha promocional

creative

String

Nome do banner publicitário

creative_slot

String

Espaço do banner publicitário

posição

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

Fale conosco

Escrever um e-mail

Observe, por gentileza, que nossa equipe de suporte jamais iniciará uma chamada com você. Se alguém ligar para você e se apresentar como a equipe de suporte do Yandex Metrica, não siga as instruções dessa pessoa.


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.