---
metadata:
  - name: generator
    content: Diplodoc Platform v5.52.0
alternate:
  - https://yandex.com/support/metrica/en/ecommerce/data.md
  - https://yandex.com/support/metrica/es/ecommerce/data.md
  - https://yandex.com/support/metrica/pt/ecommerce/data.md
  - https://yandex.com/support/metrica/ru/ecommerce/data.md
  - https://yandex.com/support/metrica/tr/ecommerce/data.md
  - https://yandex.com/support/metrica/zh/ecommerce/data.md
  - href: pt/ecommerce/data.md
    type: text/markdown
    title: Markdown version
  - href: ../llms.txt
    type: text/markdown
    title: llms.txt
title: Transmissão de dados de E-commerce
description: No E-commerce, cada item de produto é um objeto sobre o qual podem ser realizadas algumas ações. Esses dados são transmitidos como objetos JavaScript contendo a ID da ação e uma lista descritiva dos itens sobre os quais essa ação foi executada.
---
> **Documentation Index:** Fetch the complete configuration index at https://yandex.com/support/metrica/pt/llms.txt


# Transmissão de dados de E-commerce

<!-- source: pt/_includes/code/counter-initialize/id-counter-initialize/rest-js.md -->
{% note warning %}

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.

{% endnote %}
<!-- endsource: pt/_includes/code/counter-initialize/id-counter-initialize/rest-js.md -->


## Sobre o contêiner de dados e sua transmissão para o Yandex Metrica {#about}

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](http://www.w3schools.com/jsref/jsref_push.asp). Denominamos esse arranjo _contêiner de dados_.


{% note alert %}

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.

{% endnote %}


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](https://yandex.com/support/metrica/pt/code/counter-initialize.md#param-ecommerce) definido como `true`, presume-se que o contêiner de dados seja o arranjo `window.dataLayer`.

```html

...


```

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](https://developers.google.com/gtagjs/?hl=en), 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.


{% note alert %}

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.

{% endnote %}


Um objeto de e-commerce possui o seguinte formato:

```javascript
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](https://www.six-group.com/en/products-services/financial-information/data-standards.html#scrollTo=currency-codes) com três letras.

Se uma moeda diferente for informada, serão enviados valores nulos em vez de moedas e quantias.
||
||
`<actionType>`[*](*Параметр) {#action_type}
|
—
|
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](#action_data). Dados adicionais que descrevem a ação realizada.

Somente é processado se a ação for uma [compra](#purchase) (`<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](#product_data).

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](#promo_data).
||
|#

<sup >*</sup> Parâmetro obrigatório.

<sup >**</sup> Parâmetro obrigatório para o envio de informações sobre a compra.

### Dados do item {#product_data}

Um objeto que descreve um item específico.

A estrutura do objeto que descreve o item é denotada como **productFieldObject**.


#|

### Поля объекта {#product_data}

||
**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, o "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 {#action_data}

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 do Yandex Direct. Na lista de objetivos disponíveis do Yandex Direct, esse objetivo é mostrado como "eCommerce: Compra (tag N.º <tag number>)". Você pode rastrear a conclusão do objetivo por conta própria transmitindo o campo [goal_id](#goal_id).


#|

### Поля объекта {#action_data}

||
**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` {#goal_id}
|
Número inteiro
|
O número do [objetivo](https://yandex.com/support/metrica/pt/general/goals.md). Especificado caso essa [ação](#action_type) tiver sido o objetivo. 
O objetivo deve ser definido como um evento do tipo [JavaScript](https://yandex.com/support/metrica/pt/general/goals.md).

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**.
![](../_assets/order-ecommerce.png){.border-yes}
||
||
`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 {#promo_data}

Um objeto descrevendo campanhas promocionais.

Este objeto utiliza um contêiner parecido, mas usando **promoFieldObject** no lugar de **productFieldObject**.


#|

### Поля объекта {#promo_data}

||
**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 {#examples}

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](https://yandex.com/support/metrica/pt/data/e-commerce.md) e que os dados foram transferidos através do [contêiner window.dataLayer](#about).

### Visualização de lista de produtos {#product-list}

Os dados devem ser enviados no momento em que a lista de produtos é aberta.

```javascript
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 {#click-on-product}

Os dados devem ser enviados no momento em que o usuário clica no link do produto.

```javascript
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 {#product-detail}

Os dados devem ser enviados no momento em que é aberta a página com o cartão do produto.

```javascript
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 {#add}

Os dados devem ser enviados no momento em que o pedido é adicionado à cesta. Por exemplo, ao clicar em "Adicionar à cesta".

```javascript
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 {#remove}

Os dados devem ser enviados no momento em que o item é removido da cesta.

```javascript
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 {#purchase}

Os dados devem ser enviados no momento em que o pedido é confirmado.

```javascript
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 {#adv-view}

Os dados devem ser enviados no momento em que o usuário visualiza o anúncio.

```javascript
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 {#adv-click}

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.

```javascript
dataLayer.push({
    "ecommerce": {
        "promoClick": {
            "promotions": [
                {
                    "id": "BF001",          
                    "name": "Black Friday",
                    "creative": "Banner_1",
                    "position": "Slot1"
                }
            ]
        }
    }
});
```

### Saiba mais

- [Verificação de configurações de e-commerce](https://yandex.com/support/metrica/pt/ecommerce/check.md)
- [Resolução de problemas](https://yandex.com/support/metrica/pt/ecommerce/troubleshooting.md)


<!-- source: pt/_includes/buttons/chat-button.md -->
[Fale conosco](https://yandex.com/chat/#/user/036e6a02-3620-9cdc-4c5e-a34667a7379e?utm_source=spravka){.button}

<!-- source: pt/_includes/styles/href-to-button.md -->

<!-- endsource: pt/_includes/styles/href-to-button.md -->
<!-- endsource: pt/_includes/buttons/chat-button.md -->

<!-- source: pt/_includes/reports/support-button.md -->
<div class="cut-button">

{% cut "Escrever um e-mail" %}

<!-- source: pt/_includes/popup/id-popup/wrong-sup.md -->
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.
<!-- endsource: pt/_includes/popup/id-popup/wrong-sup.md -->

<div style="padding: 15px;
     margin: 10px 0;
     background: #FFFFFF;
     border-radius: 10px;
     border: 1px solid var(--g-color-line-generic);">
  <iframe style="background: #FFFFFF;"
        height="700"
        width="100%"
        frameborder="0"
        src="https://forms.yandex.com/surveys/1705/?&iframe=1&lang=en">
  </iframe>
</div>

{% endcut %}

</div>



<!-- source: pt/_includes/styles/cut-button.md -->

<!-- endsource: pt/_includes/styles/cut-button.md -->

<!-- source: pt/_includes/styles/href-to-button.md -->

<!-- endsource: pt/_includes/styles/href-to-button.md -->
<!-- endsource: pt/_includes/reports/support-button.md -->

<!-- source: pt/_includes/footer-links.md -->
- - -

<div class="borderless-table">

#|
||
Links úteis

- [Tag de demonstração](https://metrica.yandex.com/r/dashboard?)
- [Adicionar uma tag](https://metrica.yandex.com/add/)
- [Configuração gratuita de tag](https://yandex.com/promo/freeservice/metrica?utm_source=help_metrica_en&utm_medium=cpc&utm_campaign=1)
- [API do Yandex Metrica](https://tech.yandex.com/metrika/)
- [Sugerir uma idea](https://yandex.com/support/metrica/troubleshooting/idea.html)
- [Debater no Telegram](https://t.me/yandexmetrika)
|
Treinamento online

- [Obter um certificado do Yandex Metrica](https://yandex.ru/adv/expert/exam/metrika/?utm_source=metrika_help&utm_medium=web&utm_campaign=static&utm_content=useful_links)


- [Fazer um curso](https://yandex.com/adv/edu/online/metrika?utm_source=metrika_help&utm_medium=web&utm_campaign=static&utm_content=useful_links)

||
|#

</div>

<!-- source: pt/_includes/styles/table-style.md -->

<!-- endsource: pt/_includes/styles/table-style.md -->
<!-- endsource: pt/_includes/footer-links.md -->

[*Параметр]: 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.