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

ecommerce*

Objeto

Campo de contenedor obligatorio

currencyCode

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.

<actionType>*

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. Datos adicionales que describen la acción realizada.

Solo se procesa si la acción es una compra (<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

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.

* 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

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

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. )”. Puede rastrear el cumplimiento del objetivo por su cuenta mediante la transmisión del campo goal_id.

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

Número entero

El número de objetivo. Especificado si esta acción fue el objetivo.
El objetivo debe configurarse como de tipo evento de JavaScript.

Puede ver el número de metas en la interfaz de Yandex Metrica: vaya a la sección Configuración → Metas.

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

Un objeto que describe campañas promocionales.

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

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

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

Chatee con nosotros

Escriba un correo electrónico

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.


Parámetro obligatorio.

Parámetro requerido para transmitir información de compra.

Debe especificar “nombre” o “id”.

Información obligatoria.