Seguimiento de comercio electrónico mejorado

En este documento se incluye una descripción general de cómo medir las impresiones y las acciones relacionadas con el comercio electrónico en la aplicación con la versión 4 del SDK de Google Analytics para Android.

Descripción general

El comercio electrónico mejorado permite medir las interacciones del usuario con productos durante toda su experiencia de compra como, por ejemplo, las impresiones del producto, los clics en el producto, la consulta de información del producto, la inclusión de un producto en un carrito de la compra, el inicio del proceso de pago, las transacciones o las devoluciones.

Implementación

La medición del comercio electrónico mejorado obliga a utilizar la clase HitBuilder y su conjunto de métodos para enviar datos de comercio electrónico sobre productos, impresiones y promociones. También se suministra un conjunto de clases de comercio electrónico de Google Analytics para organizar la información relacionada con el comercio electrónico.

Con el comercio electrónico mejorado puedes:

Medición de actividades de comercio electrónico

Una implementación de comercio electrónico mejorado normal medirá las impresiones de producto y cualquiera de las siguientes acciones:

  • Seleccionar un producto.
  • consultar detalles del producto,
  • impresiones y selección de promociones internas,
  • añadir o suprimir un producto de un carrito de la compra,
  • inicio del proceso de compra de un producto,
  • Compras y devoluciones.

Medición de impresiones

Para medir la impresión de un producto, crea un objeto Product y envíalo con un hit mediante el método addImpression. Un objeto Product debe tener un valor de ID o de nombre. El resto de valores son opcionales y no es necesario especificarlos.

Product product = new Product()
    .setId("P12345")
    .setName("Android Warhol T-Shirt")
    .setCategory("Apparel/T-Shirts")
    .setBrand("Google")
    .setVariant("Black")
    .setPosition(1)
    .setCustomDimension(1, "Member");
HitBuilders.ScreenViewBuilder builder = new HitBuilders.ScreenViewBuilder()
    .addImpression(product, "Search Results");

Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
    TrackerName.APP_TRACKER);
t.setScreenName("searchResults");
t.send(builder.build());

Consulta la sección Configuración avanzada para obtener información detallada sobre el método getTracker.

Medición de acciones

Para medir las acciones se utiliza el método addProduct con un objeto Product para agregar la información de producto y el método setProductAction con un objeto ProductAction para especificar la acción que se realiza.

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

Product product =  new Product()
    .setId("P12345")
    .setName("Android Warhol T-Shirt")
    .setCategory("Apparel/T-Shirts")
    .setBrand("Google")
    .setVariant("Black")
    .setPosition(1)
    .setCustomDimension(1, "Member");
ProductAction productAction = new ProductAction(ProductAction.ACTION_CLICK)
    .setProductActionList("Search Results");
HitBuilders.ScreenViewBuilder builder = new HitBuilders.ScreenViewBuilder()
    .addProduct(product)
    .setProductAction(productAction);

Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
    TrackerName.APP_TRACKER);
t.setScreenName("searchResults");
t.send(builder.build());

Combinar impresiones y acciones

En los casos en que tengas tanto una impresión de producto como una acción, es posible combinarlas y medirlas en un solo hit.

En el ejemplo siguiente se indica cómo medir una visualización de los detalles de un producto con una sección de productos relacionados:

// The product from a related products section.
Product relatedProduct =  new Product()
    .setId("P12346")
    .setName("Android Warhol T-Shirt")
    .setCategory("Apparel/T-Shirts")
    .setBrand("Google")
    .setVariant("White")
    .setPosition(1);

// The product being viewed.
Product viewedProduct =  new Product()
    .setId("P12345")
    .setName("Android Warhol T-Shirt")
    .setCategory("Apparel/T-Shirts")
    .setBrand("Google")
    .setVariant("Black")
    .setPosition(1);

ProductAction productAction = new ProductAction(ProductAction.ACTION_DETAIL);
HitBuilders.ScreenViewBuilder builder = new HitBuilders.ScreenViewBuilder()
    .addImpression(relatedProduct, "Related Products")
    .addProduct(viewedProduct)
    .setProductAction(productAction);

Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
    TrackerName.APP_TRACKER);
t.setScreenName("product");
t.send(builder.build());

Medición de transacciones

Para medir una transacción se utiliza el método addProduct con un objeto Product para agregar la información del producto y el método setProductAction con un objeto ProductAction para especificar una acción de compra. La información de la transacción, por ejemplo, los ingresos totales, los impuestos y los gastos de envío, se proporcionan en el objeto ProductAction.

Product product =  new Product()
    .setId("P12345")
    .setName("Android Warhol T-Shirt")
    .setCategory("Apparel/T-Shirts")
    .setBrand("Google")
    .setVariant("black")
    .setPrice(29.20)
    .setCouponCode("APPARELSALE")
    .setQuantity(1);
ProductAction productAction = new ProductAction(ProductAction.ACTION_PURCHASE)
    .setTransactionId("T12345")
    .setTransactionAffiliation("Google Store - Online")
    .setTransactionRevenue(37.39)
    .setTransactionTax(2.85)
    .setTransactionShipping(5.34)
    .setTransactionCouponCode("SUMMER2013");
HitBuilders.ScreenViewBuilder builder = new HitBuilders.ScreenViewBuilder()
    .addProduct(product)
    .setProductAction(productAction);

Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
    TrackerName.APP_TRACKER);
t.setScreenName("transaction");
t.send(builder.build());

Configuración de la moneda

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 administración de Google Analytics.

La moneda local se debe especificar según la norma ISO 4217. Consulta en el documento Referencia de los códigos de moneda la lista completa de las monedas de conversión que se admiten.

La moneda local se especifica mediante la propiedad de objeto de seguimiento currencyCode. Por ejemplo, este objeto de seguimiento envía los valores de moneda como euros:

Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
    TrackerName.APP_TRACKER);
t.setScreenName("transaction");
t.set("&cu", "EUR");  // Set tracker currency to Euros.
t.send(builder.build());

Medición de devoluciones

Para reembolsar una transacción completa, utiliza el método setProductAction con un objeto ProductAction para especificar el ID de transacción y un tipo de acción de devolución:

// Refund an entire transaction.
ProductAction productAction = new ProductAction(ProductAction.ACTION_REFUND)
    .setTransactionId("T12345");  // Transaction ID is only required field for a full refund.
HitBuilders.ScreenViewBuilder builder = new HitBuilders.ScreenViewBuilder()
    .setProductAction(productAction);

Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
    TrackerName.APP_TRACKER);
t.setScreenName("refund");
t.send(builder.build());

Si no se encuentra una transacción que coincida, la devolución no se procesa.

Para medir una devolución parcial, utiliza el método setProductAction con un objeto ProductAction para especificar el ID de la transacción, los ID del producto y las cantidades de productos que se deben incluir en la devolución:

// Refund a single product.
Product product =  new Product()
    .setId("P12345")  // Product ID is required for partial refund.
    .setQuantity(1);  // Quanity is required for partial refund.
ProductAction productAction = new ProductAction(ProductAction.ACTION_REFUND)
    .setTransactionId("T12345");  // Transaction ID is required for partial refund.
HitBuilders.ScreenViewBuilder builder = new HitBuilders.ScreenViewBuilder()
    .addProduct(product)
    .setProductAction(productAction);

Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
    TrackerName.APP_TRACKER);
t.setScreenName("refundProduct");
t.send(builder.build());

Uso de eventos sin interacción para devoluciones

Si necesitas enviar datos de devolución con un evento y el evento no forma parte del comportamiento del usuario que normalmente se mide (es decir, no iniciado por el usuario), se recomienda que envíes un evento que no sea una interacción. Así se evita que algunas métricas se vean afectadas por el evento. Por ejemplo:

// Refund an entire transaction.
ProductAction productAction = new ProductAction(ProductAction.ACTION_REFUND)
    .setTransactionId("T12345");
HitBuilders.EventBuilder builder = new HitBuilders.EventBuilder()
    .setProductAction(productAction)
    .setNonInteraction(true)
    .setCategory("Ecommerce")
    .setAction("Refund");

Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
    TrackerName.APP_TRACKER);
t.send(builder.build());

Medición del proceso de pedido

Para medir cada paso del proceso de pedido:

  1. Agrega código de seguimiento para medir cada paso del proceso de pedido.
  2. Si es posible, agrega código de seguimiento para medir las opciones de pago.
  3. Si lo deseas, asigna nombres descriptivos a cada paso para el informe de embudo de pago. Para ello, ajusta 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

En cada paso del proceso de pago, debes implementar el código de seguimiento correspondiente para enviar datos a Google Analytics.

Campo step

En cada paso del pago que midas, debes incluir un valor de step. Este valor se usa para asignar tus acciones de pago a las etiquetas configuradas en cada paso en Configuración de comercio electrónico.

Campo option

Si tienes información adicional sobre un paso de tramitación de compra determinado en el momento en que se mide, puedes configurar el campo option con una acción checkout para capturar esta información. Se podría tratar del tipo de pago predeterminado del usuario (por ejemplo, "Visa").

Medir un paso de tramitación de compra

Para medir un paso de pago, utiliza el método addProduct con un objeto Product para agregar información del producto y el método setProductAction con un objeto ProductAction para indicar una acción de pago. Si corresponde, también puedes configurar un campo step y option con el pago.

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

Product product =  new Product()
    .setId("P12345")
    .setName("Android Warhol T-Shirt")
    .setCategory("Apparel/T-Shirts")
    .setBrand("Google")
    .setVariant("black")
    .setPrice(29.20)
    .setQuantity(1);
// Add the step number and additional info about the checkout to the action.
ProductAction productAction = new ProductAction(ProductAction.ACTION_CHECKOUT)
    .setCheckoutStep(1)
    .setCheckoutOptions("Visa");
HitBuilders.ScreenViewBuilder builder = new HitBuilders.ScreenViewBuilder()
    .addProduct(product)
    .setProductAction(productAction);

Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
    TrackerName.APP_TRACKER);
t.setScreenName("checkoutStep1");
t.send(builder.build());

2. Medir las opciones de pago

Las opciones de pago permiten medir información adicional sobre el estado del pago. Esto es útil en los casos en los que has medido un paso de compra pero hay información adicional disponible sobre el mismo paso de compra después de configurar una opción seleccionada por el usuario. Por ejemplo, el usuario selecciona una forma de envío.

Para medir una opción de pago, utiliza el método setAction para indicar una opción de compra e incluir el número de paso y la descripción de la opción.

Lo más probable es que midas esta acción después de que el usuario haya realizado alguna acción para ir al paso siguiente del proceso de pago. Por ejemplo:

// (On "Next" button click.)
ProductAction productAction = new ProductAction(ProductAction.ACTION_CHECKOUT_OPTIONS)
    .setCheckoutStep(1)
    .setCheckoutOptions("FedEx");
HitBuilders.EventBuilder builder = new HitBuilders.EventBuilder()
    .setProductAction(productAction)
    .setCategory("Checkout")
    .setAction("Option");

Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
    TrackerName.APP_TRACKER);
t.send(builder.build());

// Advance to next page.

3. Configuración del embudo de pago

Puede asignarse un nombre descriptivo a cada paso del proceso de pago, que se usará en los informes. Para configurar estos nombres, ve a la sección Administrador de la interfaz web de Google Analytics, selecciona la vista (perfil) y haz clic en Configuración de comercio electrónico. Sigue las instrucciones de configuración de comercio electrónico para etiquetar cada paso de pago del que quieras realizar un seguimiento.

Configuración de comercio electrónico en la sección de administración de la interfaz web de Google Analytics.Se ha habilitado la función de comercio electrónico y se han agregado cuatro etiquetas de pasos del embudo de pago: 1. Consulta del carrito, 2.Recopilación de información de pago, 3.Confirmación de los detalles de compra, 4.Recibo
Figura 1: Configuración de comercio electrónico: embudo de pago

Medición de promociones internas

El comercio electrónico mejorado incluye compatibilidad con la medición de impresiones y de clics de promociones internas como, por ejemplo banners que se muestran para promocionar una venta.

Impresiones de promoción

Por lo general, para medir las impresiones de promoción interna con la visita a una pantalla inicial se utiliza el método addPromotion con un objeto Promotion para especificar la información de la promoción. Por ejemplo:

Promotion promotion = new Promotion()
    .setId("PROMO_1234")
    .setName("Summer Sale")
    .setCreative("summer_banner2")
    .setPosition("banner_slot1");
HitBuilders.ScreenViewBuilder builder = new HitBuilders.ScreenViewBuilder()
    .addPromotion(promotion);

Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
    TrackerName.APP_TRACKER);
t.setScreenName("promotions");
t.send(builder.build());

Clics de las promociones

Para medir los clics que reciben las promociones internas, puedes usar el método addPromotion con un objeto Promotion, y el método setPromotionAction con el valor Promotion.ACTION_CLICK o Promotion.ACTION_VIEW para indicar los clics o las visualizaciones de una determinada promoción, respectivamente. Por ejemplo:

Promotion promotion = new Promotion()
    .setId("PROMO_1234")
    .setName("Summer Sale")
    .setCreative("summer_banner2")
    .setPosition("banner_slot1");
HitBuilders.EventBuilder builder = new HitBuilders.EventBuilder()
    .addPromotion(promotion)
    .setPromotionAction(Promotion.ACTION_CLICK)
    .setCategory("Internal Promotions")
    .setAction("click")
    .setLabel("Summer Sale");

Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
    TrackerName.APP_TRACKER);
t.send(builder.build());