Transmisión de datos de comercio electrónico
Aviso
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.
Acerca del contenedor de datos y su transmisión a Yandex Metrica
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. Esta matriz se denomina contenedor de datos.
Alerta
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.
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 configurado en true
, se asume que el contenedor de datos es el arreglo window.dataLayer
.
<script type="text/javascript">
// Inicialización del código
ym(XXXXXX, 'init', {
...
// Si el parámetro “ecommerce” está activo durante la inicialización, el contenedor de datos siempre será window.dataLayer
// Si activó el parámetro por medio de la interface, siempre puede cambiar el nombre en los ajustes de la etiqueta
ecommerce: true
...
});
// El contenedor de datos (JavaScript array) en el namespace global (window)
window.dataLayer = window.dataLayer || [];
</script>
...
<script type="text/javascript">
// Usa el método “push” para añadir in objeto de E-commerce
window.dataLayer.push(
// Objeto de E-commerce
{
"ecommerce": {
...
"currencyCode": "RUB",
"<actionType>": {
"actionField": <actionField>,
"products": [<productFieldObject>, <productFieldObject>, ...]
}
...
}
}
);
</script>
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, 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.
Alerta
El contenedor de datos puede contener un máximo de 8,192 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.
Un objeto de comercio electrónico tiene el siguiente formato:
window.dataLayer.push({
"ecommerce": {
"currencyCode": "RUB",
"<actionType>": {
"actionField": <actionField>,
"products": [<productFieldObject>, <productFieldObject>, ...]
}
}
});
Campo |
Tipo |
Descripción |
|
Objeto |
Campo de contenedor obligatorio |
|
Cadena de caracteres |
Código de moneda ISO 4217 de tres letras. Si elige una moneda diferente, se enviarán valores nulos en lugar de monedas e importes. |
|
— |
El nombre del campo (sustituido en lugar de Valores posibles:
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. |
|
Objeto |
Un objeto actionField. Datos adicionales que describen la acción realizada. Solo se procesa si la acción es una compra ( |
|
Matriz |
Lista de descripciones de artículos sobre los que se realizó la acción especificada. Las descripciones de los productos son objectos productFieldObject No se utilizan para las acciones |
|
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. |
* Parámetro obligatorio.
** Parámetro requerido para enviar información de compra.
Datos de artículos
Un objeto que describe un artículo particular.
La estructura del objeto que describe el artículo se indica como productFieldObject.
Campo |
Tipo |
Descripción |
|
Cadena de caracteres |
ID del objeto. Por ejemplo, la SKU. Es necesario especificar ya sea id o nombre |
|
Cadena de caracteres |
Nombre del artículo. Por ejemplo, “camiseta” Debe especificar “nombre” o “id” |
|
Cadena de caracteres |
La marca o la marca comercial asociada con el artículo. Por ejemplo, “Yandex” |
|
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”. |
|
Cadena de caracteres |
Un código promocional asociado con el artículo. Por ejemplo, “PARTNER_SITE_15” |
|
Número |
Importe del descuento (un valor numérico). |
|
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. |
|
Número entero |
Posición del artículo en la lista. Por ejemplo, 2 |
|
Número |
Precio del artículo. |
|
Número entero |
Cantidad del artículo. |
|
Cadena de caracteres |
Una variación del artículo. Por ejemplo, “rojo” |
Datos de acciones
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 publicitarias de Yandex Direct. En la lista de metas disponibles en Yandex.Direct, esta meta se muestra como “Comercio electrónico: Compra (etiqueta núm.
Campo |
Tipo |
Descripción |
|
Cadena de caracteres |
ID del producto comprado. Información obligatoria. Ejemplo: TRX#54321 |
|
Cadena de caracteres |
Un código promocional asociado con toda la compra |
|
Número entero |
El número de objetivo. Especificado si esta acción fue el objetivo. Puede ver el número de metas en la interfaz de Yandex Metrica: vaya a la sección Configuración → Metas. |
|
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
Un objeto que describe campañas promocionales.
Este objeto usa un contenedor similar pero con promoFieldObject en lugar de productFieldObject.
Campo |
Tipo |
Descripción |
|
Cadena de caracteres |
ID de la campaña promocional. Información obligatoria |
|
Cadena de caracteres |
Nombre de la campaña promocional |
|
Cadena de caracteres |
Nombre del banner publicitario |
|
Cadena de caracteres |
Espacio de banner publicitario |
|
Cadena de caracteres |
Posición del banner publicitario |
Ejemplos
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, y los datos se transfieren a través del contenedor window.dataLayer.
Visualización de un producto lista
Los datos deben enviarse en el momento en que se abre la lista de productos.
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
Los datos deben enviarse en el momento en que el usuario hace clic en el enlace del producto.
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
Los datos deben enviarse en el momento en que se abre la página con la tarjeta del producto.
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
Los datos deben enviarse en el momento en que el pedido se agrega al carrito. Por ejemplo, al hacer clic en “Agregar al carrito”.
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
Los datos deben enviarse en el momento en que el artículo se elimina del carrito.
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
Los datos deben enviarse en el momento en que se confirma el pedido.
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
Los datos deben enviarse en el momento en que el usuario ve el anuncio.
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
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.
dataLayer.push({
"ecommerce": {
"promoClick": {
"promotions": [
{
"id": "BF001",
"name": "Black Friday",
"creative": "Banner_1",
"position": "Slot1"
}
]
}
}
});
Más información
Enlaces útiles |
Capacitación en línea |
Parámetro obligatorio.
Parámetro requerido para transmitir información de compra.
Debe especificar “nombre” o “id”.
Información obligatoria.