---
metadata:
  - name: generator
    content: Diplodoc Platform v5.50.6
alternate:
  - https://www.yandex.com/support/metrica/en/ecommerce/data.md
  - https://www.yandex.com/support/metrica/es/ecommerce/data.md
  - https://www.yandex.com/support/metrica/pt/ecommerce/data.md
  - https://www.yandex.com/support/metrica/ru/ecommerce/data.md
  - https://www.yandex.com/support/metrica/tr/ecommerce/data.md
  - https://www.yandex.com/support/metrica/zh/ecommerce/data.md
title: Transmisión de datos de comercio electrónico
description: En el comercio electrónico, cada artículo de producto es un objeto sobre el que se pueden realizar ciertas acciones. Estos datos se transmiten como objetos JavaScript que contienen el ID de acción y una lista de descripciones de los artículos sobre los que se realizó esta acción.
---
> **Documentation Index:** Fetch the complete configuration index at https://www.yandex.com/support/metrica/es/llms.txt


# Transmisión de datos de comercio electrónico

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

Para trabajar con la API de JavaScript se requieren conocimientos de HTML y JavaScript. Si no conoce estos idiomas, contacte a su desarrollador web o webmaster.

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


## Acerca del contenedor de datos y su transmisión a Yandex Metrica {#about}

En Comercio electrónico, cada artículo de un producto es un objeto sobre el que pueden realizarse determinadas acciones, como ver la descripción del artículo completo o agregarlo a la cesta. Estos datos se transmiten como objetos JavaScript que contienen la ID de acción y una lista de descripciones de artículos sobre los que se realizó esta acción. En el contexto de la API de JavaScript, llamamos a estos objetos _objetos de comercio electrónico_.

Para transmitir datos como objetos de comercio electrónico a Yandex Metrica, agréguelos al arreglo especial de JavaScript `window.dataLayer` en el espacio de nombres global (window) usando el método [push](http://www.w3schools.com/jsref/jsref_push.asp). Esta matriz se denomina _contenedor de datos_.


{% note alert %}

No transmita los datos cuando el usuario esté yendo a otra página en el sitio. Un ejemplo es cuando se utiliza un evento `onclick` en el botón “Finalización de la compra”. En este caso, la siguiente página podría cargarse antes de que la etiqueta envíe los datos a Yandex Metrica. De esta manera, se pierde la información sobre el evento.

{% endnote %}


El contenedor de datos debe estar ubicado en el espacio de nombres global, y su nombre debe coincidir con el nombre especificado durante la configuración o inicialización de la etiqueta. Si el contenedor de datos se llama `dataLayer`, o la etiqueta de Yandex Metrica se inició con el parámetro [ecommerce](https://www.yandex.com/support/metrica/es/code/counter-initialize.md#param-ecommerce) configurado en `true`, se asume que el contenedor de datos es el arreglo `window.dataLayer`.

```html

...


```

El nombre del contenedor de datos y la estructura de los objetos que contenga coincidan con las entidades correspondientes en Google Analytics Enhanced Ecommerce. Esto significa que si ya ha configurado el envío de datos a Google Analytics Enhanced Ecommerce, incluyendo a través de la [Etiqueta de Sitio Global](https://developers.google.com/gtagjs/?hl=en), y habilitado el comercio electrónico en Yandex Metrica, esta última comenzará a recopilar datos. Yandex Metrica también admite GA4 Ecommerce y recopila datos sin ninguna configuración adicional.


{% note alert %}

El contenedor de datos puede contener un máximo de 8192 caracteres. 
Si está enviando más datos en el contenedor, recomendamos dividir el pedido en partes con subnúmeros (por ejemplo, `order1-1`, `order1-2`, `order1-3`). De esta manera, tanto los pedidos como los subpedidos se mostrarán en Yandex Metrica.

Para evaluar el número real de pedidos, establezca una meta JS y envíelo a Yandex Metrica con uno de los subpedidos. Al enviar múltiples contenedores de un pedido dividido en subpedidos, se logrará una meta, y podrá usarlo para calcular el número total de pedidos.

{% endnote %}


Un objeto de comercio electrónico tiene el siguiente formato:

```javascript
window.dataLayer.push({
    "ecommerce": {
        "currencyCode": "RUB",
        "<actionType>": {
            "actionField": <actionField>,
            "products": [<productFieldObject>, <productFieldObject>, ...]
        }
    }
});
```


#|
||
**Campo**
|
**Tipo**
|
**Descripción**
||
||
`ecommerce`[*](*Параметр)
|
Objeto
|
Campo de contenedor obligatorio
||
||
`currencyCode`
|
Cadena de caracteres
|
[Código de moneda ISO 4217](https://www.six-group.com/en/products-services/financial-information/data-standards.html#scrollTo=currency-codes) de tres letras.

Si elige una moneda diferente, se enviarán valores nulos en lugar de monedas e importes.
||
||
`<actionType>`[*](*Параметр) {#action_type}
|
—
|
El nombre del campo (sustituido en lugar de `<actionType>`) es el identificador de una acción realizada con un conjunto de productos.

Valores posibles:

- `impressions`: Visualización de la lista de productos.
- `click`: Clic en un elemento de la lista de productos.
- `detail`: Visualización de un artículo.
- `add`: Añadir un artículo al carrito de compras.
- `remove`: Eliminar un artículo del carrito de compras.
- `purchase`: Compra.
- `promoView`: Visualizar un anuncio interno.
- `promoClick`: Clic en un anuncio interno.

Si la información sobre la eliminación del artículo fue transmitida a Yandex Metrica, el informe podría mostrar un número negativo de artículos (el total se calcula restando el número de artículos eliminados del número total de artículos añadidos). Si se transmitió el precio del artículo, esto también podría tener un valor negativo en el informe.
||
||
`actionField`[**](*Обязательный_параметр)
|
Objeto
|
Un objeto [actionField](#action_data). Datos adicionales que describen la acción realizada.

Solo se procesa si la acción es una [compra](#purchase) (`<actionType>` — `compra`).
||
||
`productos`[*](*Параметр)
|
Matriz
|
Lista de descripciones de artículos sobre los que se realizó la acción especificada. Las descripciones de los productos son objectos [productFieldObject](#product_data)

No se utilizan para las acciones `promoClick`, `promoView`, y `impressions`.
||
||
`promociones`[*](*Параметр)
|
Matriz
|
Lista de descripciones para la campaña publicitaria en la que se realizó la acción especificada. Las descripciones de las campañas publicitarias son objetos [promoFieldObject](#promo_data).
||
|#

<sup >*</sup> Parámetro obligatorio.

<sup >**</sup> Parámetro requerido para enviar información de compra.

### Datos de artículos {#product_data}

Un objeto que describe un artículo particular.

La estructura del objeto que describe el artículo se indica como **productFieldObject**.


#|

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

||
**Campo**
|
**Tipo**
|
**Descripción**
||
||
`id`[*](*Указать)
|
Cadena de caracteres
|
ID del objeto. Por ejemplo, la SKU.

**Es necesario especificar ya sea id o nombre**
||
||
`nombre`[*](*Указать)
|
Cadena de caracteres
|
Nombre del artículo. Por ejemplo, "camiseta"

**Debe especificar “nombre” o “id”**
||
||
`marca`
|
Cadena de caracteres
|
La marca o la marca comercial asociada con el artículo. Por ejemplo, "Yandex"
||
||
`categoría`
|
Cadena de caracteres
|
La categoría a la que pertenece el artículo.

La jerarquía de categorías admite hasta 4 niveles. Use el símbolo / para separar los niveles. Por ejemplo, “Ropa / Ropa de hombre / Camisetas”
||
||
`cupón`
|
Cadena de caracteres
|
Un código promocional asociado con el artículo. Por ejemplo, "PARTNER_SITE_15"
||
||
`descuento`
|
Número
|
Importe del descuento (un valor numérico).
||
||
`lista`
|
Cadena de caracteres
|
Lista a la que pertenece el artículo.

Para evaluar la efectividad de la lista en diferentes etapas de interacción del usuario con el producto, recomendamos especificar la lista de productos en todos los eventos que ocurrieron después de que se visualizó la lista.
||
||
`posición`
|
Número entero
|
Posición del artículo en la lista. Por ejemplo, 2
||
||
`precio`
|
Número
|
Precio del artículo.
||
||
`cantidad`
|
Número entero
|
Cantidad del artículo.
||
||
`variante`
|
Cadena de caracteres
|
Una variación del artículo. Por ejemplo, “rojo”
||
|#

### Datos de acciones {#action_data}

Un objeto que contiene datos sobre una acción realizada con un artículo o un conjunto de productos.

Solo se procesa si la acción es una compra (`<actionType>` — `compra`).

La estructura del objeto que describe la acción se indica como **actionField**.

Al transmitir datos sobre una acción, Yandex Metrica crea una meta. Esto le permite obtener información sobre los ingresos de las campañas de Yandex Direct. En la lista de metas disponibles en Yandex Direct, esta meta se muestra como "eCommerce: Compra (etiqueta № <tag number>)". Puede rastrear el cumplimiento del objetivo por su cuenta mediante la transmisión del campo [goal_id](#goal_id).


#|

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

||
**Campo**
|
**Tipo**
|
**Descripción**
||
||
`id`[*](*Поле)
|
Cadena de caracteres
|
ID del producto comprado.

Información obligatoria.

Ejemplo: TRX#54321
||
||
`cupón`
|
Cadena de caracteres
|
Un código promocional asociado con toda la compra
||
||
`goal_id` {#goal_id}
|
Número entero
|
El número de [objetivo](https://www.yandex.com/support/metrica/es/general/goals.md). Especificado si esta [acción](#action_type) fue el objetivo. 
El objetivo debe configurarse como de tipo [evento de JavaScript](https://www.yandex.com/support/metrica/es/general/goals.md).

Puede ver el número de metas en la interfaz de Yandex Metrica: vaya a la sección **Configuración** → **Metas**.
![](../_assets/order-ecommerce.png){.border-yes}
||
||
`ingresos`
|
Número
|
Los ingresos recibidos.

Si se omite, se calcula automáticamente como la suma de los precios de todos los artículos asociados con la compra
||
|#

### Datos de la campaña promocional {#promo_data}

Un objeto que describe campañas promocionales.

Este objeto usa un contenedor similar pero con **promoFieldObject** en lugar de **productFieldObject**.


#|

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

||
**Campo**
|
**Tipo**
|
**Descripción**
||
||
`id`[*](*Поле)
|
Cadena de caracteres
|
ID de la campaña promocional.

**Información obligatoria**
||
||
`nombre`
|
Cadena de caracteres
|
Nombre de la campaña promocional
||
||
`creativo`
|
Cadena de caracteres
|
Nombre del banner publicitario
||
||
`ranura_creativa`
|
Cadena de caracteres
|
Espacio de banner publicitario
||
||
`posición`
|
Cadena de caracteres
|
Posición del banner publicitario
||
|#


## Ejemplos {#examples}

Para transmitir información, necesita crear un script en el sitio que sea responsable de un cierto evento (por ejemplo, realizar un pedido) en el formato descrito anteriormente. A continuación se presentan ejemplos de scripts para acciones compatibles con Yandex Metrica.

Todos los ejemplos asumen que la [etiqueta se inicializó con el comercio electrónico habilitado](https://www.yandex.com/support/metrica/es/data/e-commerce.md), y los datos se transfieren a través del [contenedor window.dataLayer](#about).

### Visualización de un producto lista {#product-list}

Los datos deben enviarse en el momento en que se abre la lista de productos.

```javascript
dataLayer.push({
    "ecommerce": {
        "currencyCode": "RUB",
        "impressions": [
            {
                "id": "P15432",
                "name": "Camiseta",
                "price": 477.60,
                "brand": "Yandex",
                "category": "Ropa / Ropa de hombre / Camisetas",
                "variant": "Rojo",
                "list": "Buscar",
                "position": 1
            },
            {
                "id": "P15435",
                "name": "Camiseta",
                "price": 500.60,
                "brand": "Yandex",
                "category": "Ropa / Ropa de hombre / Camisetas",
                "variant": "Azul",
                "list": "Buscar",
                "position": 2
            }
        ]
    }
});
```

### Haciendo clic en un elemento de la lista de productos {#click-on-product}

Los datos deben enviarse en el momento en que el usuario hace clic en el enlace del producto.

```javascript
dataLayer.push({
    "ecommerce": {
        "currencyCode": "RUB",
        "click": {
            "products": [
                {
                    "id": "39084",
                    "name": "Termo Yandex",
                    "price": 1089.69,
                    "brand": "Yandex",
                    "category": "Hogar / Trastes / Botellas aislantes y tazas térmicas",
                    "variant": "Rojo",
                    "list": "Buscar",
                    "position": 1
                }
            ]
        }
    }
});
```

### Visualización de un producto {#product-detail}

Los datos deben enviarse en el momento en que se abre la página con la tarjeta del producto.

```javascript
dataLayer.push({
    "ecommerce": {
        "currencyCode": "RUB",
        "detail": {
            "products": [
                {
                    "id": "P15432",
                    "name": "Camiseta",
                    "price": 477.60,
                    "brand": "Yandex",
                    "category": "Ropa / Ropa de hombre / Camisetas",
                    "variant": "Rojo",
                    "list": "Resultados de la búsqueda",
                    "position": 1
                }
            ]
        }
    }
});
```

### Agregar un artículo al carrito {#add}

Los datos deben enviarse en el momento en que el pedido se agrega al carrito. Por ejemplo, al hacer clic en “Agregar al carrito”.

```javascript
dataLayer.push({
    "ecommerce": {
        "currencyCode": "RUB",    
        "add": {
            "products": [
                {
                    "id": "43521",
                    "name": "Bolsa Yandex",
                    "price": 654.32,
                    "brand": "Yandex",
                    "category": "Accesorios / Bolsas",
                    "quantity": 1,
                    "list": "Resultados de búsqueda por categoría",
                    "position": 2
                }
            ]
        }
    }
});
```

### Cómo eliminar un artículo de la cesta {#remove}

Los datos deben enviarse en el momento en que el artículo se elimina del carrito.

```javascript
dataLayer.push({
    "ecommerce": {
        "currencyCode": "RUB",
        "remove": {
            "products": [
                {
                    "id": "15243",
                    "name": "limpiadores de pantallas de teléfono Yandex",
                    "category": "Accesorios para teléfono",
                    "quantity": 1,
                    "list": "Accesorios",
                    "position": 3
                }
            ]
        }
    }
});
```

### Compra {#purchase}

Los datos deben enviarse en el momento en que se confirma el pedido.

```javascript
dataLayer.push({
    "ecommerce": {
        "currencyCode": "RUB",
        "purchase": {
            "actionField": {
                "id": "TRX987"
            },
            "products": [
                {
                    "id": "25341",
                    "name": "Sudadera para hombre Yandex",
                    "price": 1345.26,
                    "brand": "Yandex",
                    "category": "Ropa / Ropa de hombre / Sudaderas y jerséis",
                    "variant": "Anaranjado",
                    "quantity": 1,
                    "list": "Ropa",
                    "position": 1
                },
                {
                    "id": "25314",
                    "name": "Sudadera para mujer Yandex",
                    "price": 1543.62,
                    "brand": "Yandex",
                    "category": "Ropa / Ropa de mujer / Sudaderas con capucha y jerséis",
                    "variant": "Blanco",
                    "quantity": 3,
                    "list": "Sudaderas",
                    "position": 2
                }
            ]
        }
    }
});
```

### Visualización de un anuncio interno {#adv-view}

Los datos deben enviarse en el momento en que el usuario ve el anuncio.

```javascript
dataLayer.push({
    "ecommerce": {
        "promoView": {
            "promotions": [
                {
                    "id": "BF001",          
                    "name": "Black Friday",
                    "creative": "Banner_1",
                    "position": "Slot1"
                },
                {
                    "id": "SUMMER002",
                    "name": "Ofertas de verano",
                    "creative": "Banner_3",
                    "position": "Slot2"
                }
            ]
        }
    }
});
```

### Haciendo clic en un anuncio interno {#adv-click}

Los datos deben enviarse en el momento en que el usuario hace clic en el anuncio o completa otra acción meta relacionada con el anuncio.

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

### Más información

- [Verificación de configuraciones de comercio electrónico](https://www.yandex.com/support/metrica/es/ecommerce/check.md)
- [Solución de problemas](https://www.yandex.com/support/metrica/es/ecommerce/troubleshooting.md)


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

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

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

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

{% cut "Escriba un correo electrónico" %}

<!-- source: es/_includes/popup/id-popup/wrong-sup.md -->
Tome en cuenta: Nuestro equipo de soporte nunca iniciará llamadas hacia usted. No siga las instrucciones de personas que le llamen y se presenten como el equipo de soporte de Yandex Metrica.
<!-- endsource: es/_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: es/_includes/styles/cut-button.md -->

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

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

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

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

<div class="borderless-table">

#|
||
Enlaces útiles

- [Etiqueta de demostración](https://metrica.yandex.com/r/dashboard?)
- [Agregar una etiqueta](https://metrica.yandex.com/add/)
- [Configuración gratuita de etiquetas](https://yandex.com/promo/freeservice/metrica?utm_source=help_metrica_en&utm_medium=cpc&utm_campaign=1)
- [Yandex Metrica API](https://tech.yandex.com/metrika/)
- [Sugiera su idea](https://yandex.com/support/metrica/troubleshooting/idea.html)
- [Discutir en Telegram](https://t.me/yandexmetrika)
|
Capacitación en línea

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


- [Tomar un curso de capacitación](https://yandex.com/adv/edu/online/metrika?utm_source=metrika_help&utm_medium=web&utm_campaign=static&utm_content=useful_links)

||
|#

</div>

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

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

[*Параметр]: Parámetro obligatorio.

[*Обязательный_параметр]: Parámetro requerido para transmitir información de compra.

[*Указать]: **Debe especificar “nombre” o “id”**.

[*Поле]: Información obligatoria.