Medición de comercio electrónico

En esta guía se describe cómo recoger datos de comercio electrónico con analytics.js.

Visión general

Con la medición de comercio electrónico, puedes medir el número de transacciones y los ingresos que se generan en tu sitio web. En un sitio de comercio electrónico estándar, cuando un usuario hace clic en el botón para comprar del navegador, la información de compra del usuario se envía al servidor web, que lleva a cabo la transacción. Si se lleva a cabo correctamente, el servidor redirecciona al usuario a una página de agradecimiento o de emisión de recibo con los detalles de la transacción y un recibo de la compra. Puedes usar la biblioteca analytics.js para enviar los datos de comercio electrónico procedentes de la página de agradecimiento a Google Analytics.

Existen dos tipos de datos de comercio electrónico que puedes enviar mediante analytics.js: datos de transacciones y de artículos.

Datos de transacciones

Una transacción representa la transacción completa que se produce en el sitio y contiene los siguientes valores:

Clave Tipo de valor Obligatorio Descripción
id texto Indica el ID de la transacción (p. ej., 1234).
affiliation texto No Indica la tienda o la afiliación en la que se ha producido la transacción (p. ej., Nike Store).
revenue moneda No Especifica la suma total o los ingresos totales asociados a la transacción (por ejemplo, 11,99). Este valor puede incluir los gastos de envío, los impuestos u otros ajustes de los ingresos totales que quieras incluir para calcular tus ingresos.
shipping moneda No Especifica el total de los gastos de envío de la transacción (p. ej., 5).
tax moneda No Especifica el total de los impuestos de la transacción (por ejemplo, 1,29).

Datos de artículos

Un artículo representa cada uno de los productos que hay en el carrito de la compra y contiene los siguientes valores:

Clave Tipo de valor Obligatorio Descripción
id texto Especifica el ID de la transacción. Este ID representa los enlaces a las transacciones a las que pertenecen los artículos (p. ej., 1234).
name texto Indica el nombre del artículo (p. ej., "Ositos de peluche").
sku texto No Especifica el código SKU o de artículo (p. ej., SKU47).
category texto No Indica la categoría a la que pertenece el artículo (p. ej., "Peluches").
price moneda No Indica el precio unitario de cada artículo (p. ej., 11,99).
quantity entero No Indica el número de unidades compradas en la transacción. Si el valor de este campo es un número decimal (por ejemplo, 1,5), se redondeará al valor entero más próximo.

Implementación

Normalmente, la medición de comercio electrónico se implementa después de que el usuario haya completado el proceso de pago. Se suele producir en la página de agradecimiento por la compra. Cuando la hayas implementado y quieras enviar los datos de comercio electrónico a Google Analytics, estos son los pasos que debes seguir:

Cargar el complemento de comercio electrónico

Para reducir el tamaño de la biblioteca analytics.js, la medición de comercio electrónico no se incluye en la biblioteca predeterminada. Se ofrece como un módulo de complemento que se debe cargar antes de usarse.

Para cargar el complemento de comercio electrónico, usa este comando:

    ga('require', 'ecommerce');
    

El comando se debe indicar después de crear el objeto de seguimiento y antes de usar la función específica de comercio electrónico.

Después de cargarse, se añadirá una serie de nuevos comandos específicos de la medición de comercio electrónico al objeto de seguimiento predeterminado.

Añadir transacciones

Después de haber cargado el complemento, se crea un objeto transparente de carrito de la compra. Puedes añadir los datos de transacciones y de artículos al carrito de la compra y, una vez configurados por completo, enviarlos todos a la vez.

Añade los datos de transacciones al carrito de la compra con el comando ecommerce:addTransaction:

    ga('ecommerce:addTransaction', {
      'id': '1234',                     // Transaction ID. Required.
      'affiliation': 'Acme Clothing',   // Affiliation or store name.
      'revenue': '11.99',               // Grand Total.
      'shipping': '5',                  // Shipping.
      'tax': '1.29'                     // Tax.
    });
    

Añadir artículos

Después, para añadir artículos al carrito de la compra, usa el comando ecommerce:addItem:

    ga('ecommerce:addItem', {
      'id': '1234',                     // Transaction ID. Required.
      'name': 'Fluffy Pink Bunnies',    // Product name. Required.
      'sku': 'DD23444',                 // SKU/code.
      'category': 'Party Toys',         // Category or variation.
      'price': '11.99',                 // Unit price.
      'quantity': '1'                   // Quantity.
    });
    

Enviar datos

Por último, una vez que hayas configurado todos los datos de comercio electrónico en el carrito de la compra, envía los datos a Google Analytics con el comando ecommerce:send:

    ga('ecommerce:send');
    

Con este comando se analizan todos los artículos y transacciones del carrito y se envían los datos correspondientes a Google Analytics. Una vez terminada esta operación, se borran los datos del carrito de la compra y ya se pueden enviar los datos de una nueva transacción. Si se había ejecutado el comando ecommerce:send anteriormente, solo se enviarán los datos de nuevas transacciones y artículos.

Borrar datos

Si tienes que borrar manualmente todas las transacciones y los artículos del carrito de la compra, debes usar el comando siguiente:

    ga('ecommerce:clear');
    

Especificar las monedas locales

De forma predeterminada, puedes configurar una moneda común y global para todas las transacciones y artículos a través de la interfaz web de gestión de Google Analytics. La moneda global se usa de manera predeterminada en todos los artículos y transacciones. En el caso de los sitios web en los que se llevan a cabo transacciones en varias monedas, el complemento de comercio electrónico permite especificar la moneda local de la transacción, así como de los productos individuales.

La moneda local debe especificarse según el estándar ISO 4217. Consulta la lista completa de las monedas de conversión admitidas en el documento Referencia de los códigos de moneda.

Para definir la moneda local de una determinada transacción y todos sus artículos, solo tienes que especificar el valor "currency" de la transacción:

    ga('ecommerce:addTransaction', {
      'id': '1234',
      'affiliation': 'Acme Clothing',
      'revenue': '11.99',
      'shipping': '5',
      'tax': '1.29',
      'currency': 'EUR'  // local currency code.
    });
    

Por último, también puedes especificar la moneda de cada artículo:

      ga('ecommerce:addItem', {
        'id': '1234',
        'name': 'Fluffy Pink Bunnies',
        'sku': 'DD23444',
        'category': 'Party Toys',
        'price': '11.99',
        'quantity': '1',
        'currency': 'GBP' // local currency code.
      });
    

Compatibilidad con varios objetos de seguimiento

También puedes usar el complemento de comercio electrónico si has implementado varios objetos de seguimiento (con nombre) en tu página. El complemento funciona igual que el objeto de seguimiento predeterminado, con la excepción de que el formato es trackerName.pluginName:method. Por ejemplo, si has creado un objeto de seguimiento denominado myTracker:

    ga('create', 'UA-XXXXX-Y', 'auto', {'name': 'myTracker'});
    

Después, carga el complemento de comercio electrónico del objeto de seguimiento con nombre mediante:

    ga('myTracker.require', 'ecommerce');
    

Para enviar una transacción, puedes crear un objeto de transacción y transmitirlo al objeto de seguimiento con nombre del siguiente modo:

    var transaction = {
      'id': '1234',                    // Transaction ID.
      'affiliation': 'Acme Clothing',  // Affiliation or store name.
      'revenue': '11.99',              // Grand Total.
      'shipping': '5' ,                // Shipping.
      'tax': '1.29'                    // Tax.
    };

    ga('myTracker.ecommerce:addTransaction', transaction);
    

Con esta sintaxis, el objeto de transacción se puede usar en varios objetos de seguimiento.

Por último, los datos de seguimiento se envían del siguiente modo:

    ga('myTracker.ecommerce:send');
    

Ejemplo

La mayoría de los sitios web de comercio electrónico llevan a cabo las transacciones en el servidor, mientras que la biblioteca analytics.js envía los datos a Google Analytics desde el navegador. Por lo tanto, es necesario que haya cierta coordinación entre el servidor y el cliente para que los datos de comercio electrónico se envíen correctamente a Google Analytics.

La mayoría de los sitios web de comercio electrónico procesan la página de agradecimiento por la compra a través de un motor de creación de plantillas en el servidor. En este caso, se añade el código de medición de comercio electrónico a la plantilla en el servidor y se usa la lógica del servidor para escribir dinámicamente los valores de datos de comercio electrónico en la página final. A continuación, se incluye un ejemplo del aspecto que tendría en PHP.

En PHP, normalmente se tiene algún tipo de representación de los datos de comercio electrónico. En este ejemplo, los datos están almacenados en una matriz asociativa:

    <?php
    // Transaction Data
    $trans = array('id'=>'1234', 'affiliation'=>'Acme Clothing',
                   'revenue'=>'11.99', 'shipping'=>'5', 'tax'=>'1.29');

    // List of Items Purchased.
    $items = array(
      array('sku'=>'SDFSDF', 'name'=>'Shoes', 'category'=>'Footwear', 'price'=>'100', 'quantity'=>'1'),
      array('sku'=>'123DSW', 'name'=>'Sandals', 'category'=>'Footwear', 'price'=>'87', 'quantity'=>'1'),
      array('sku'=>'UHDF93', 'name'=>'Socks', 'category'=>'Footwear', 'price'=>'5.99', 'quantity'=>'2')
    );
    ?>
    

El primer paso es escribir la lógica para transformar los datos de comercio electrónico en la cadena JavaScript que requiere analytics.js:

    <?php
    // Function to return the JavaScript representation of a TransactionData object.
    function getTransactionJs(&$trans) {
      return <<<HTML
    ga('ecommerce:addTransaction', {
      'id': '{$trans['id']}',
      'affiliation': '{$trans['affiliation']}',
      'revenue': '{$trans['revenue']}',
      'shipping': '{$trans['shipping']}',
      'tax': '{$trans['tax']}'
    });
    HTML;
    }

    // Function to return the JavaScript representation of an ItemData object.
    function getItemJs(&$transId, &$item) {
      return <<<HTML
    ga('ecommerce:addItem', {
      'id': '$transId',
      'name': '{$item['name']}',
      'sku': '{$item['sku']}',
      'category': '{$item['category']}',
      'price': '{$item['price']}',
      'quantity': '{$item['quantity']}'
    });
    HTML;
    }
    ?>
    

A continuación, en la etiqueta <script>, añade la lógica PHP para obtener dinámicamente los datos de transacciones y artículos:

    <!-- Begin HTML -->
    <script>
    ga('require', 'ecommerce');

    <?php
    echo getTransactionJs($trans);

    foreach ($items as &$item) {
      echo getItemJs($trans['id'], $item);
    }
    ?>

    ga('ecommerce:send');
    </script>
    

Cuando haya terminado la ejecución de la secuencia de comandos PHP, se imprimirán en la página los datos de transacciones y artículos que requiere analytics.js. Una vez que el código JavaScript se procese en el navegador, se enviarán todos los datos de comercio electrónico a Google Analytics.

Tipos de moneda

El tipo de moneda predeterminada se puede configurar mediante la interfaz de gestión. Los valores de moneda que se envían con analytics.js representan el valor total de una moneda.

Se puede usar un punto como delimitador entre la parte entera y la decimal de la moneda. La precisión es de seis decimales como máximo. El siguiente valor es válido para un campo de moneda:

    1000.000001
    

Cuando el valor se envía a Google Analytics, se elimina todo el texto hasta el primer dígito, el carácter - o el carácter . (decimal). Por lo tanto:

    $-55.00
    

Se convierte en:

    -55.00