Comercio electrónico mejorado

El complemento de comercio electrónico mejorado para analytics.js permite la medición de las interacciones del usuario con productos en sitios web de comercio electrónico a lo largo de la experiencia de compra del usuario, lo que incluye: impresiones de productos, clics en productos, visualización de detalles de productos, adición de un producto a un carrito de compras, inicio del pago procesos, transacciones y reembolsos.

Migración y compatibilidad con el complemento de comercio electrónico (ecommerce.js)

Si ya ha implementado la medición de comercio electrónico y desea comenzar a utilizar el comercio electrónico mejorado, existen dos opciones principales:

Usar una nueva propiedad

Puede agregar un rastreador adicional para una propiedad recién creada y etiquetar/habilitar Comercio electrónico mejorado para la nueva propiedad. Consulte Trabajar con varios objetos de seguimiento para obtener detalles sobre cómo enviar datos a varias propiedades desde una sola página.

Migrar una propiedad existente

Para migrar del complemento de comercio electrónico al complemento de comercio electrónico mejorado, los usuarios actuales de analytics.js deben eliminar y reemplazar las referencias con código de comercio electrónico mejorado.

Si actualmente usa ga.js , primero deberá migrar a analytics.js antes de usar el complemento de comercio electrónico mejorado.

Los datos de artículos y transacciones recopilados anteriormente mediante el complemento ecommerce.js no se verán afectados por la migración y permanecerán disponibles en las propiedades y perfiles a los que se enviaron originalmente.

Tipos de datos y acciones de comercio electrónico mejorados

Hay varios tipos de datos de comercio electrónico que puede enviar:

Datos de impresión

Representa información sobre un producto que ha sido visto. Se conoce como impressionFieldObject y contiene los siguientes valores:

Llave Tipo de valor Requerido Descripción
id texto *Sí

El ID o SKU del producto (p. ej., P67890).

* Se debe establecer uno de id o name .

name texto *Sí

El nombre del producto (por ejemplo, camiseta de Android).

* Se debe establecer uno de id o name .

list texto No La lista o colección a la que pertenece el producto (por ejemplo, resultados de búsqueda)
brand texto No La marca asociada con el producto (por ejemplo, Google).
category texto No La categoría a la que pertenece el producto (por ejemplo, Ropa). Utilice / como delimitador para especificar hasta 5 niveles de jerarquía (p. ej., Ropa/Hombres/Camisetas).
variant texto No La variante del producto (por ejemplo, Negro).
position entero No La posición del producto en una lista o colección (por ejemplo, 2).
price número No El precio de un producto (por ejemplo, 29,20).

Datos del producto

Los datos del producto representan productos individuales que se vieron, agregaron al carrito de compras, etc. Se denominan productFieldObject y contienen los siguientes valores:

Llave Tipo de valor Requerido Descripción
id texto *Sí

El ID o SKU del producto (p. ej., P67890).

* Se debe establecer uno de id o name .

name texto *Sí

El nombre del producto (por ejemplo, camiseta de Android).

* Se debe establecer uno de id o name .

brand texto No La marca asociada con el producto (por ejemplo, Google).
category texto No La categoría a la que pertenece el producto (por ejemplo, Ropa). Utilice / como delimitador para especificar hasta 5 niveles de jerarquía (p. ej., Ropa/Hombres/Camisetas).
variant texto No La variante del producto (por ejemplo, Negro).
price número No El precio de un producto (por ejemplo, 29,20).
quantity entero No La cantidad de un producto (por ejemplo, 2).
coupon texto No El código de cupón asociado con un producto (por ejemplo, SUMMER_SALE13).
position entero No La posición del producto en una lista o colección (por ejemplo, 2).

Datos de promoción

Representa información sobre una promoción que se ha visto. Se refiere a un promoFieldObject y contiene los siguientes valores:

Llave Tipo de valor Requerido Descripción
id texto *Sí

El ID de la promoción (por ejemplo, PROMO_1234).

* Se debe establecer uno de id o name .

name texto *Sí

El nombre de la promoción (por ejemplo, Oferta de verano).

* Se debe establecer uno de id o name .

creative texto No La creatividad asociada con la promoción (por ejemplo, summer_banner2).
position texto No La posición de la creatividad (por ejemplo, banner_slot_1).

Datos de acción

Representa información sobre una acción relacionada con el comercio electrónico que ha tenido lugar. Se denomina actionFieldObject y contiene los siguientes valores:

Llave Tipo de valor Requerido Descripción
id texto *Sí

El ID de la transacción (por ejemplo, T1234).

* Obligatorio si el tipo de acción es purchase o refund

affiliation texto No La tienda o afiliación desde la que se produjo esta transacción (por ejemplo, Google Store).
revenue número No

Especifica los ingresos totales o el total general asociado con la transacción (por ejemplo, 11,99). Este valor puede incluir gastos de envío, impuestos u otros ajustes a los ingresos totales que desee incluir como parte de sus cálculos de ingresos.

tax número No El impuesto total asociado con la transacción.
shipping número No El costo de envío asociado con la transacción.
coupon texto No El cupón de transacción canjeado con la transacción.
list texto No La lista a la que pertenecen los productos asociados. Opcional.
step entero No Un número que representa un paso en el proceso de compra. Opcional en acciones `checkout`.
option texto No Campo adicional para las acciones checkout y checkout_option que pueden describir la información de la opción en la página de pago, como el método de pago seleccionado.

Acciones de Producto y Promoción

Las acciones especifican cómo interpretar los datos de productos y promociones que envía a Google Analytics.

Acción Descripción
click Un clic en un producto o enlace de producto para uno o más productos.
detail Una vista de los detalles del producto.
add Agregar uno o más productos a un carrito de compras.
remove Eliminar uno o más productos de un carrito de compras.
checkout Iniciar el proceso de compra de uno o más productos.
checkout_option Envío del valor de la opción para un paso de pago determinado.
purchase La venta de uno o más productos.
refund La devolución de uno o más productos.
promo_click Un clic en una promoción interna.

Implementación

Las siguientes secciones describen cómo implementar el complemento de comercio electrónico mejorado para medir la actividad de comercio electrónico en un sitio web con la biblioteca analytics.js.

Cargue el complemento de comercio electrónico

Para reducir el tamaño de la biblioteca analytics.js, no se proporciona comercio electrónico mejorado en la biblioteca predeterminada. En cambio, se proporciona como un módulo de complemento que debe cargarse antes de usarse.

Para cargar el complemento de comercio electrónico mejorado, use el siguiente comando:

ga('require', 'ec');

Este comando debe ocurrir después de crear su objeto de seguimiento y antes de usar cualquiera de las funciones específicas mejoradas de comercio electrónico.

Envío de datos de comercio electrónico mejorados

Una vez cargado, se agregarán un par de nuevos comandos específicos para el comercio electrónico mejorado al rastreador predeterminado y podrá comenzar a enviar datos de comercio electrónico.

Medición de actividades de comercio electrónico

Una implementación típica de comercio electrónico mejorado medirá las impresiones de productos y cualquiera de las siguientes acciones:

  • Hace clic en el enlace de un producto.
  • Visualización de detalles del producto.
  • Impresiones y clicks de promociones internas.
  • Agregar/eliminar un producto de un carrito de compras.
  • Iniciar el proceso de compra de un producto.
  • Compras y devoluciones.

Medición de impresiones

Las impresiones de productos se miden con el comando ec:addImpression . Los detalles sobre el producto se agregan en un impressionFieldObject .

Por ejemplo, el siguiente código mide la impresión de un producto en una lista de resultados de búsqueda:

ga('ec:addImpression', {            // Provide product details in an impressionFieldObject.
  'id': 'P12345',                   // Product ID (string).
  'name': 'Android Warhol T-Shirt', // Product name (string).
  'category': 'Apparel/T-Shirts',   // Product category (string).
  'brand': 'Google',                // Product brand (string).
  'variant': 'Black',               // Product variant (string).
  'list': 'Search Results',         // Product list (string).
  'position': 1,                    // Product position (number).
  'dimension1': 'Member'            // Custom dimension (string).
});

Un impressionFieldObject debe tener un name o un valor id . Todos los demás valores son opcionales y no es necesario configurarlos.

Acciones de medición

Las acciones se miden usando el comando ec:addProduct con un productFieldObject para agregar detalles del producto y el comando ec:setAction para especificar la acción que se está realizando.

Por ejemplo, el siguiente código mide un clic en el enlace de un producto que se muestra en una lista de resultados de búsqueda:

ga('ec:addProduct', {               // Provide product details in a productFieldObject.
  'id': 'P12345',                   // Product ID (string).
  'name': 'Android Warhol T-Shirt', // Product name (string).
  'category': 'Apparel',            // Product category (string).
  'brand': 'Google',                // Product brand (string).
  'variant': 'Black',               // Product variant (string).
  'position': 1,                    // Product position (number).
  'dimension1': 'Member'            // Custom dimension (string).
});

ga('ec:setAction', 'click', {       // click action.
  'list': 'Search Results'          // Product list (string).
});

Un productFieldObject debe tener un name o valor id . Todos los demás valores son opcionales y no es necesario establecerlos.

Combinar impresiones y acciones

En los casos en los que tiene impresiones de productos y una acción, es posible combinar y medir esto en un solo golpe.

El siguiente ejemplo muestra cómo medir una vista de detalle de producto con una sección de productos relacionados:

// The impression from a Related Products section.
ga('ec:addImpression', {            // Provide product details in an impressionFieldObject.
  'id': 'P12345',                   // Product ID (string).
  'name': 'Android Warhol T-Shirt', // Product name (string).
  'category': 'Apparel/T-Shirts',   // Product category (string).
  'brand': 'Google',                // Product brand (string).
  'variant': 'Black',               // Product variant (string).
  'list': 'Related Products',       // Product list (string).
  'position': 1                     // Product position (number).
});

// The product being viewed.
ga('ec:addProduct', {                 // Provide product details in an productFieldObject.
  'id': 'P67890',                     // Product ID (string).
  'name': 'YouTube Organic T-Shirt',  // Product name (string).
  'category': 'Apparel/T-Shirts',     // Product category (string).
  'brand': 'YouTube',                 // Product brand (string).
  'variant': 'gray',                  // Product variant (string).
  'position': 2                       // Product position (number).
});

ga('ec:setAction', 'detail');       // Detail action.

Medición de transacciones

Mida una transacción utilizando el comando ec:setAction y configurando el tipo de acción en purchase . Los detalles del nivel de transacción, como los ingresos totales, los impuestos y el envío, se proporcionan en un actionFieldObject :

ga('ec:addProduct', {               // Provide product details in an productFieldObject.
  'id': 'P12345',                   // Product ID (string).
  'name': 'Android Warhol T-Shirt', // Product name (string).
  'category': 'Apparel',            // Product category (string).
  'brand': 'Google',                // Product brand (string).
  'variant': 'black',               // Product variant (string).
  'price': '29.20',                 // Product price (number).
  'coupon': 'APPARELSALE',          // Product coupon (string).
  'quantity': 1                     // Product quantity (number).
});

ga('ec:setAction', 'purchase', {          // Transaction details are provided in an actionFieldObject.
  'id': 'T12345',                         // (Required) Transaction id (string).
  'affiliation': 'Google Store - Online', // Affiliation (string).
  'revenue': '37.39',                     // Revenue (number).
  'tax': '2.85',                          // Tax (number).
  'shipping': '5.34',                     // Shipping (number).
  'coupon': 'SUMMER2013'                  // Transaction coupon (string).
});

Un actionFieldObject debe tener un valor id si el tipo de acción es purchase o refund . Todos los demás valores son opcionales y no es necesario establecerlos.

Medición de reembolsos

Para reembolsar una transacción completa, establezca una acción refund y proporcione el ID de la transacción:

// Refund an entire transaction.
ga('ec:setAction', 'refund', {
  // Transaction ID is only required field for full refund.
  'id': 'T12345'
});

Si no se encuentra una transacción coincidente, no se procesará el golpe refund .

Para medir un reembolso parcial, establezca una acción refund y especifique la identificación de la transacción, la(s) identificación(es) del producto y las cantidades de productos que se reembolsarán:

// Refund a single product.
ga('ec:addProduct', {
  'id': 'P12345',       // Product ID is required for partial refund.
  'quantity': 1         // Quantity is required for partial refund.
});

ga('ec:setAction', 'refund', {
  'id': 'T12345',       // Transaction ID is required for partial refund.
});

Uso de eventos sin interacción para reembolsos

Si necesita enviar datos de reembolso utilizando un evento y el evento no es parte del comportamiento medido normalmente en el sitio (es decir, no es iniciado por el usuario), entonces se recomienda que envíe un evento sin interacción . Esto evitará que métricas como la tasa de rebote, el tiempo en el sitio, etc. se vean afectadas por el evento. Por ejemplo:

ga('send', 'event', 'Ecommerce', 'Refund', {'nonInteraction': 1});

Medición del proceso de pago

Para medir cada paso en un proceso de pago:

  • Agregue código para medir cada paso del proceso de pago.
  • Si corresponde, agregue código para medir las opciones de pago.
  • Opcionalmente, establezca nombres de pasos fáciles de usar para el informe del embudo de pago configurando la configuración de comercio electrónico en la sección de administración de la interfaz web.

1. Medición de los pasos de pago

Para cada paso de su proceso de pago, deberá implementar el código correspondiente para enviar datos a Google Analytics:

  • campo step

    Para cada paso de pago que mida, debe incluir un valor step . Este valor se usa para asignar sus acciones de pago a las etiquetas que configuró para cada paso en la configuración de comercio electrónico .

  • campo option

    Si tiene información adicional sobre el paso de pago dado en el momento en que se mide el paso, puede configurar el campo option con una acción checkout para capturar esta información. Por ejemplo, el tipo de pago predeterminado para el usuario (por ejemplo, Visa ).

  • Medición de un paso de pago

    Para medir un paso de pago, use ec:addProduct para cada producto y ec:setAction indique un pago. Si corresponde, ec:setAction puede tomar un actionFieldObject adicional para describir el paso de pago con un step y una option .

    El siguiente ejemplo muestra cómo medir el primer paso de un proceso de pago, con un solo producto y alguna información adicional sobre el tipo de pago:

    ga('ec:addProduct', {               // Provide product details in an productFieldObject.
      'id': 'P12345',                   // Product ID (string).
      'name': 'Android Warhol T-Shirt', // Product name (string).
      'category': 'Apparel',            // Product category (string).
      'brand': 'Google',                // Product brand (string).
      'variant': 'black',               // Product variant (string).
      'price': '29.20',                 // Product price (number).
      'quantity': 1                     // Product quantity (number).
    });
    
    // Add the step number and additional info about the checkout to the action.
    ga('ec:setAction','checkout', {
        'step': 1,
        'option': 'Visa'
    });
    

2. Medición de opciones de pago

Las opciones de pago le permiten medir información adicional sobre el estado del pago. Esto es útil en los casos en los que ha medido un paso de pago durante la página vista inicial, pero la información adicional sobre el mismo paso de pago está disponible después de que se haya configurado una opción seleccionada por el usuario. Por ejemplo, el usuario selecciona un método de envío.

Para medir una opción de pago, use ec:setAction para indicar una checkout_option e incluya el número de paso y la descripción de la opción.

Es probable que desee medir esta acción una vez que el usuario haya hecho clic para pasar al siguiente paso en el proceso de pago. Por ejemplo:

// (On "Next" button click)
ga('ec:setAction', 'checkout_option', {'step': 2, 'option': 'FedEx'});

ga('send', 'event', 'Checkout', 'Option', {
    hitCallback: function() {
      // advance to next page
    },
});

3. Configuración del embudo de pago

A cada paso de su proceso de pago se le puede dar un nombre descriptivo que se usará en los informes. Para configurar estos nombres, visite la sección Administrador de la interfaz web de Google Analytics, seleccione la vista (perfil) y haga clic en Configuración de comercio electrónico . Siga las instrucciones de configuración de comercio electrónico para etiquetar cada paso de pago que desee medir.

Configuración de comercio electrónico en la sección Administrador de la interfaz web de Google Analytics. El comercio electrónico está habilitado y se agregaron 4 etiquetas de pasos del embudo de pago: 1. Revisar carrito, 2. Recopilar información de pago, 3. Confirmar detalles de compra, 4. Recibo
Figura 1: Configuración de comercio electrónico: embudo de pago

Medición de promociones internas

El complemento de comercio electrónico mejorado incluye soporte para medir impresiones y clics de promociones internas, como banners que se muestran para promocionar una venta en otra sección de un sitio web.

Impresiones de promoción

Las impresiones de promoción interna generalmente se miden cuando se carga la página y se envían con la vista de página inicial mediante el comando ec:addPromo . Por ejemplo:

ga('ec:addPromo', {               // Promo details provided in a promoFieldObject.
  'id': 'PROMO_1234',             // Promotion ID. Required (string).
  'name': 'Summer Sale',          // Promotion name (string).
  'creative': 'summer_banner2',   // Creative (string).
  'position': 'banner_slot1'      // Position  (string).
});

Clics de promoción

Los clics en promociones internas se pueden medir configurando la acción promo_click . Por ejemplo:

// Identify the promotion that was clicked.
ga('ec:addPromo', {
  'id': 'PROMO_1234',
  'name': 'Summer Sale',
  'creative': 'summer_banner2',
  'position': 'banner_slot1'
});

// Send the promo_click action with an event.
ga('ec:setAction', 'promo_click');
ga('send', 'event', 'Internal Promotions', 'click', 'Summer Sale');

Por ejemplo, para medir la página de detalles de un producto con una impresión y un clic promocional, primero envíe los datos del producto y de la impresión con la página vista inicial y luego envíe los datos del clic promocional en un evento separado:

// 1. Send product and impression data with pageview.
ga('ec:addProduct', {
  'id': 'P12345',                   // Product ID (string).
  'name': 'Android Warhol T-Shirt', // Product name (string).
  'category': 'Apparel',            // Product category (string).
  'brand': 'Google',                // Product brand (string).
  'variant': 'Black',               // Product variant (string).
  'position': 1,                    // Product position (number).
});

// The impression from the Related Products section.
ga('ec:addImpression', {
  'id': 'P12345',                   // Product ID (string).
  'name': 'Android Warhol T-Shirt', // Product name (string).
  'category': 'Apparel/T-Shirts',   // Product category (string).
  'brand': 'Google',                // Product brand (string).
  'variant': 'Black',               // Product variant (string).
  'list': 'Related Products',       // Product list (string).
  'position': 1,                    // Product position (number).
});

ga('ec:setAction', 'detail');       // Detail action.

ga('send', 'pageview');             // Send the product data with initial pageview.


// 2. Send the promo click data when the promo click occurs.
// Call this function when promo click occurs.
function onPromoClick() {
  ga('ec:addPromo', {
    'id': 'PROMO_1234',
    'name': 'Summer Sale',
    'creative': 'summer_banner2',
    'position': 'banner_slot1'
  });

  // Send the promo_click action with an event.
  ga('ec:setAction', 'promo_click');
  ga('send', 'event', 'Internal Promotions', 'click', 'Summer Sale');
}

Un promoFieldObject debe tener un name o valor id . Todos los demás valores son opcionales y no es necesario establecerlos.

Ejemplo completo

Los fragmentos de código a continuación muestran cómo se puede medir el ciclo de vida del comercio electrónico de un solo producto desde la impresión inicial hasta la transacción utilizando el complemento de comercio electrónico mejorado.

Medir la impresión de un producto

En este ejemplo, un usuario primero ve el producto en una lista de resultados de búsqueda. Para medir la impresión de este producto, use el comando ec:addImpression y proporcione los detalles del producto en un impressionFieldObject :

ga('create', 'UA-XXXXX-Y');
ga('require', 'ec');

ga('ec:addImpression', {
  'id': 'P12345',                   // Product details are provided in an impressionFieldObject.
  'name': 'Android Warhol T-Shirt',
  'category': 'Apparel/T-Shirts',
  'brand': 'Google',
  'variant': 'black',
  'list': 'Search Results',
  'position': 1                     // 'position' indicates the product position in the list.
});

ga('ec:addImpression', {
  'id': 'P67890',
  'name': 'YouTube Organic T-Shirt',
  'category': 'Apparel/T-Shirts',
  'brand': 'YouTube',
  'variant': 'gray',
  'list': 'Search Results',
  'position': 2
});

ga('send', 'pageview');              // Send product impressions with initial pageview.

Medición de un clic de producto

A continuación, un usuario expresa interés en este producto en particular haciendo clic en la lista de productos para ver más detalles.

Para medir ese clic de producto, use ec:addProduct y ec:setAction :

// Called when a link to a product is clicked.
function onProductClick() {
  ga('ec:addProduct', {
    'id': 'P12345',
    'name': 'Android Warhol T-Shirt',
    'category': 'Apparel',
    'brand': 'Google',
    'variant': 'black',
    'position': 1
  });
  ga('ec:setAction', 'click', {list: 'Search Results'});

  // Send click with an event, then send user to product page.
  ga('send', 'event', 'UX', 'click', 'Results', {
    hitCallback: function() {
      document.location = '/product_details?id=P12345';
    }
  });
}

El enlace del producto podría implementarse así:

<a href="/next-page.html"
   onclick="onProductClick(); return !ga.loaded;">
  Android Warhol T-Shirt
</a>

Medición de la vista de detalles de un producto

Después de hacer clic en la lista de productos, un usuario ve la página de detalles del producto.

Para medir la vista de detalles de este producto, use ec:addProduct y ec:setAction para especificar una acción detail :

ga('create', 'UA-XXXXX-Y');
ga('require', 'ec');

ga('ec:addProduct', {
  'id': 'P12345',
  'name': 'Android Warhol T-Shirt',
  'category': 'Apparel',
  'brand': 'Google',
  'variant': 'black'
});

ga('ec:setAction', 'detail');

ga('send', 'pageview');       // Send product details view with the initial pageview.

Medición de una adición o eliminación del carrito

El usuario expresa su intención de comprar el artículo agregándolo a un carrito de compras.

Para medir la adición o eliminación de un producto de un carrito de compras, use ec:addProduct y configure el tipo add o remove :

// Called when a product is added to a shopping cart.
function addToCart(product) {
  ga('ec:addProduct', {
    'id': product.id,
    'name': product.name,
    'category': product.category,
    'brand': product.brand,
    'variant': product.variant,
    'price': product.price,
    'quantity': product.qty
  });
  ga('ec:setAction', 'add');
  ga('send', 'event', 'UX', 'click', 'add to cart');     // Send data using an event.
}

Medición del proceso de pago

Ahora el usuario está listo para comenzar el proceso de pago, que en este ejemplo incluye dos pasos, cada uno en páginas separadas:

  • Agregue detalles de pago (pago.html).
  • Agregue detalles de envío (shipping.html).

Si corresponde, asegúrese de haber configurado correctamente un embudo de pago en el Administrador de la interfaz web, en Configuración de comercio electrónico . Por ejemplo:

Configuración de comercio electrónico en la sección Administrador de la interfaz web de Google Analytics. El comercio electrónico está habilitado y se agregaron etiquetas de pasos del embudo de pago: 1. Detalles de pago y 2. Detalles de envío
Figura 2: Configuración de comercio electrónico: embudo de pago

Paso 1 - Pago

Para medir el primer paso del pago, use ec:addProduct para cada producto en el carrito de compras y ec:setAction para indicar un checkout . ec:setAction toma un actionFieldObject para describir el paso de pago con un número y se ha incluido información adicional sobre el tipo de pago predeterminado para este usuario usando el campo option :

ga('create', 'UA-XXXXX-Y');
ga('require', 'ec');

/**
 * Called when the user begins the checkout process.
 * @param {Array} cart An array representing the user's shopping cart.
 */
function checkout(cart) {
  for(var i = 0; i < cart.length; i++) {
    var product = cart[i];
    ga('ec:addProduct', {
      'id': product.id,
      'name': product.name,
      'category': product.category,
      'brand': product.brand,
      'variant':  product.variant,
      'price': product.price,
      'quantity': product.qty
    });
  }
}

// In the case of checkout actions, an additional actionFieldObject can
// specify a checkout step and option.
ga('ec:setAction','checkout', {
    'step': 1,            // A value of 1 indicates this action is first checkout step.
    'option': 'Visa'      // Used to specify additional info about a checkout stage, e.g. payment method.
});
ga('send', 'pageview');   // Pageview for payment.html

Paso 2 - Envío

Para medir el segundo paso del pago, use ec:addProduct para cada producto en el carrito de compras y ec:setAction para indicar un pago. En este caso, no tenemos información adicional sobre la opción de envío seleccionada cuando se envía la vista de página inicial, por lo que se manejará por separado mediante ec:setAction para indicar una checkout_option .

// Measure checkout step 2:
ga('create', 'UA-XXXXX-Y');
ga('require', 'ec');

/**
 * Called when the user begins the checkout process.
 * @param {Array} cart An array representing the user's shopping cart.
 */
function checkout(cart) {
  for(var i = 0; i < cart.length; i++) {
    var product = cart[i];
    ga('ec:addProduct', {
      'id': product.id,
      'name': product.name,
      'category': product.category,
      'brand': product.brand,
      'variant':  product.variant,
      'price': product.price,
      'quantity': product.qty
    });
  }
}

ga('ec:setAction','checkout', {'step': 2});
ga('send', 'pageview');     // Pageview for shipping.html


// Called when user has completed shipping options.
function onShippingComplete(stepNumber, shippingOption) {
  ga('ec:setAction', 'checkout_option', {
    'step': stepNumber,
    'option': shippingOption
  });

  ga('send', 'event', 'Checkout', 'Option', {
     hitCallback: function() {
       // Advance to next page.
     }
  });
}

El formulario podría implementarse así:

<a href="/next-page.html"
   onclick="onShippingComplete(2, 'FedEx'); return !ga.loaded;">
  Continue
</a>

Medición de una transacción

Por último, el usuario completa el proceso de pago y envía su compra.

Para medir la venta de uno o más productos, use ec:addProduct para agregar cada producto, luego ec:setAction para especificar una purchase . La información del nivel de transacción, como los ingresos totales, los impuestos, etc., se puede especificar a través de un actionFieldObject . Por ejemplo:

ga('create', 'UA-XXXXX-Y');
ga('require', 'ec');

ga('ec:addProduct', {
  'id': 'P12345',
  'name': 'Android Warhol T-Shirt',
  'category': 'Apparel',
  'brand': 'Google',
  'variant': 'black',
  'price': '29.20',
  'quantity': 1
});

// Transaction level information is provided via an actionFieldObject.
ga('ec:setAction', 'purchase', {
  'id': 'T12345',
  'affiliation': 'Google Store - Online',
  'revenue': '37.39',
  'tax': '2.85',
  'shipping': '5.34',
  'coupon': 'SUMMER2013'    // User added a coupon at checkout.
});

ga('send', 'pageview');     // Send transaction data with initial pageview.

Especificación de monedas locales

De forma predeterminada, puede configurar una moneda común y global para todas las transacciones y artículos a través de la interfaz web de administración de Google Analytics. De forma predeterminada, la moneda global se utiliza para todos los artículos y transacciones. Para los sitios web que realizan transacciones en varias monedas, el complemento de comercio electrónico le permite especificar la moneda local de la transacción.

La moneda local debe especificarse en la norma ISO 4217 . Lea el documento de referencia de códigos de moneda para obtener una lista completa de las monedas de conversión admitidas.

Las monedas locales se especifican mediante la propiedad de seguimiento currencyCode . Por ejemplo, este rastreador enviará valores de moneda como euros:

ga('create', 'UA-XXXXX-Y');
ga('require', 'ec');

ga('set', 'currencyCode', 'EUR'); // Set currency to Euros.

ga('ec:addProduct', {
  'id': 'P12345',
  'name': 'Android Warhol T-Shirt',
  'category': 'Apparel',
  'brand': 'Google',
  'variant': 'black',
  'price': '21.89',
  'quantity': 1
});

ga('ec:setAction', 'purchase', {
  id: 'T12345',
  affiliation: 'Google Store - Online',
  revenue: '28.03',
  tax: '2.14',
  shipping: '4.00',
  coupon: 'SUMMER2013'
});

ga('send', 'pageview');