Comercio electrónico mejorado de Universal Analytics para Android

Google Analytics admite el comercio electrónico mejorado en las propiedades de Universal Analytics. El comercio electrónico mejorado permite medir las interacciones de los usuarios con los productos durante su experiencia de compra. Esto puede incluir impresiones de promociones, clics en promociones, impresiones de productos, clics en productos, vistas de detalles del producto, agregar artículos a un carrito de compras, quitarlos, iniciar la confirmación de la compra, las transacciones y los reembolsos.

Las versiones más recientes de Google Tag Manager y Google Analytics para las apps para dispositivos móviles funcionan en conjunto con Firebase, la plataforma de apps para dispositivos móviles de Google. Cuando midas apps con el SDK de Firebase, tendrás acceso a una gran cantidad de informes de apps para dispositivos móviles generados automáticamente, que se pueden personalizar y complementar con el código de la app. Estos informes incluirán automáticamente datos sobre las compras directas desde la aplicación que procesa la App Store en iTunes y Google Play. Para generar informes adicionales relacionados con el comercio electrónico, implementa los eventos sugeridos para las apps de comercio electrónico. Actualmente, los informes detallados sobre el comportamiento de compra (es decir, el comercio electrónico mejorado) solo están disponibles en las propiedades Universal Analytics.

En este documento, se describe cómo usar Tag Manager en apps para dispositivos móviles con el SDK de Firebase para enviar datos de comercio electrónico mejorado a las propiedades Universal Analytics.

Primeros pasos

Antes de comenzar, configura los siguientes requisitos previos para tu app:

  1. Instala y configura Firebase y Google Tag Manager en tu app. Asegúrate de usar la versión 11 o posterior del SDK de Firebase para Android.
  2. Importa estos dos paquetes:

    • import com.google.firebase.analytics.FirebaseAnalytics.Event;
    • import com.google.firebase.analytics.FirebaseAnalytics.Param;
  3. En el contenedor de Tag Manager, crea una variable definida por el usuario llamada "promociones" con la siguiente configuración:

    • Tipo de evento: Parámetro personalizado
    • Clave de parámetro del evento: promociones
    • Valor predeterminado: no definido

Implementación

En las siguientes secciones, se muestra cómo registrar eventos con los parámetros necesarios para medir las actividades de comercio electrónico mejorado, como los siguientes:

Impresiones del producto

Para medir las impresiones de productos, registra un evento con un parámetro ITEM_LIST y uno o más elementos (es decir, productos) definidos con los campos relevantes.

// Define products with relevant parameters

Bundle product1 = new Bundle();
product1.putString( Param.ITEM_ID, "sku1234");  // ITEM_ID or ITEM_NAME is required
product1.putString( Param.ITEM_NAME, "Donut Friday Scented T-Shirt");
product1.putString( Param.ITEM_CATEGORY, "Apparel/Men/Shirts");
product1.putString( Param.ITEM_VARIANT, "Blue");
product1.putString( Param.ITEM_BRAND, "Google");
product1.putDouble( Param.PRICE, 29.99 );
product1.putString( Param.CURRENCY, "USD" );
product1.putLong( Param.INDEX, 1 );     // Position of the item in the list

Bundle product2 = new Bundle();
product2.putString( Param.ITEM_ID, "sku5678");
product2.putString( Param.ITEM_NAME, "Android Workout Capris");
product2.putString( Param.ITEM_CATEGORY, "Apparel/Women/Pants");
product2.putString( Param.ITEM_VARIANT, "Black");
product2.putString( Param.ITEM_BRAND, "Google");
product2.putDouble( Param.PRICE, 39.99 );
product2.putString( Param.CURRENCY, "USD" );
product2.putLong( Param.INDEX, 2 );

// Prepare ecommerce bundle

ArrayList <bundle>items = new ArrayList<bundle>();
items.add(product1);
items.add(product2);

Bundle ecommerceBundle = new Bundle();
ecommerceBundle.putParcelableArrayList( "items", items );

// Set relevant bundle-level parameters

ecommerceBundle.putString( Param.ITEM_LIST, "Search Results" ); // List name

// Log view_search_results or view_item_list event with ecommerce bundle

mFirebaseAnalytics.logEvent( Event.VIEW_SEARCH_RESULTS, ecommerceBundle );

Consulta la configuración de la etiqueta para este ejemplo:

  • Tipo de etiqueta: Universal Analytics
  • Tipo de segmento: Screen View
  • Campos que se configurarán: (Nombre del campo) screenName (valor, p.ej.) Pantalla de resultados de búsqueda
  • Habilitar funciones de comercio electrónico mejorado: Verdadero
  • Leer datos de: Evento de Firebase
  • Activador, p.ej.: (Personalizado > Algunos eventos) El nombre del evento es igual a view_search_results

Clics o selecciones de productos

Para medir los clics en productos, registra un evento SELECT_CONTENT con un elemento (es decir, un producto) definido con los campos relevantes:

// Define product with relevant parameters

Bundle product1 = new Bundle();
product1.putString( Param.ITEM_ID, "sku1234"); // ITEM_ID or ITEM_NAME is required
product1.putString( Param.ITEM_NAME, "Donut Friday Scented T-Shirt");
product1.putString( Param.ITEM_CATEGORY, "Apparel/Men/Shirts");
product1.putString( Param.ITEM_VARIANT, "Blue");
product1.putString( Param.ITEM_BRAND, "Google");
product1.putDouble( Param.PRICE, 29.99 );
product1.putString( Param.CURRENCY, "USD" ); // Item-level currency unused today
product1.putLong( Param.INDEX, 1 ); // Position of the item in the list

// Prepare ecommerce bundle

Bundle ecommerceBundle = new Bundle();
ecommerceBundle.putBundle( "items", product1 );

// Set relevant action-level parameters

ecommerceBundle.putString( Param.ITEM_LIST, "Search Results" ); // Optional list name

// Log select_content event with ecommerce bundle

mFirebaseAnalytics.logEvent( Event.SELECT_CONTENT, ecommerceBundle );

Consulta la configuración de la etiqueta para este ejemplo:

  • Tipo de etiqueta: Universal Analytics
  • Tipo de segmento: Evento
  • Categoría del evento, p.ej.: Comercio electrónico
  • Acción del evento, p.ej. : Clic en el producto
  • Habilitar funciones de comercio electrónico mejorado: Verdadero
  • Leer datos de: Evento de Firebase
  • Activador, p.ej.: (Personalizado > Algunos eventos) El nombre del evento es igual a select_content Y &lbrace;&lbrace;promotions&rbrace;&rbrace; es igual a indefinido

Vistas de detalles del producto

Para medir las vistas de detalles del producto, registra un evento VIEW_ITEM con un artículo (es decir, un producto) definido con los campos relevantes:

// Define product with relevant parameters

Bundle product1 = new Bundle();
product1.putString( Param.ITEM_ID, "sku1234"); // ITEM_ID or ITEM_NAME is required
product1.putString( Param.ITEM_NAME, "Donut Friday Scented T-Shirt");
product1.putString( Param.ITEM_CATEGORY, "Apparel/Men/Shirts");
product1.putString( Param.ITEM_VARIANT, "Blue");
product1.putString( Param.ITEM_BRAND, "Google");
product1.putDouble( Param.PRICE, 29.99 );
product1.putString( Param.CURRENCY, "USD" ); // Item-level currency unused today

// Prepare ecommerce bundle

Bundle ecommerceBundle = new Bundle();
ecommerceBundle.putBundle( "items", product1 );

// Log view_item event with ecommerce bundle

mFirebaseAnalytics.logEvent( Event.VIEW_ITEM, ecommerceBundle );

Consulta la configuración de la etiqueta para este ejemplo:

  • Tipo de etiqueta: Universal Analytics
  • Tipo de segmento: Screen View
  • Campos que se configurarán: (Nombre del campo) screenName (valor, p.ej.) Pantalla de detalles del producto
  • Habilitar funciones de comercio electrónico mejorado: Verdadero
  • Leer datos de: Evento de Firebase
  • Activador, p.ej.: (Personalizado > Algunos eventos) El nombre del evento es igual a view_item Y
  • &lbrace;&lbrace;promotions&rbrace;&rbrace; equivale a indefinido

Adiciones al carrito

Para medir un producto que se agrega a un carrito de compras, registra un evento ADD_TO_CART con un artículo (es decir, un producto) definido con los campos relevantes:

// Define product with relevant parameters

Bundle product1 = new Bundle();
product1.putString( Param.ITEM_ID, "sku1234"); // ITEM_ID or ITEM_NAME is required
product1.putString( Param.ITEM_NAME, "Donut Friday Scented T-Shirt");
product1.putString( Param.ITEM_CATEGORY, "Apparel/Men/Shirts");
product1.putString( Param.ITEM_VARIANT, "Blue");
product1.putString( Param.ITEM_BRAND, "Google");
product1.putDouble( Param.PRICE, 29.99 );
product1.putString( Param.CURRENCY, "USD" ); // Item-level currency unused today
product1.putLong( Param.QUANTITY, 1 );

// Prepare ecommerce bundle

Bundle ecommerceBundle = new Bundle();
ecommerceBundle.putBundle( "items", product1 );

// Log add_to_cart event with ecommerce bundle

mFirebaseAnalytics.logEvent( Event.ADD_TO_CART, ecommerceBundle );

Consulta la configuración de la etiqueta para este ejemplo:

  • Tipo de etiqueta: Universal Analytics
  • Tipo de segmento: Evento
  • Categoría del evento, p.ej.: Comercio electrónico
  • Acción del evento, p.ej., Agregar al carrito
  • Habilitar funciones de comercio electrónico mejorado: Verdadero
  • Leer datos de: Evento de Firebase
  • Activador, p.ej.: (Personalizado > Algunos eventos) El nombre del evento es igual a add_to_cart

Eliminaciones del carrito

Para medir un producto que se quita de un carrito de compras, registra un evento REMOVE_FROM_CART con un artículo (es decir, un producto) definido con los campos relevantes:

// Define product with relevant parameters

Bundle product1 = new Bundle();
product1.putString( Param.ITEM_ID, "sku1234"); // ITEM_ID or ITEM_NAME is required
product1.putString( Param.ITEM_NAME, "Donut Friday Scented T-Shirt");
product1.putString( Param.ITEM_CATEGORY, "Apparel/Men/Shirts");
product1.putString( Param.ITEM_VARIANT, "Blue");
product1.putString( Param.ITEM_BRAND, "Google");
product1.putDouble( Param.PRICE, 29.99 );
product1.putString( Param.CURRENCY, "USD" ); // Item-level currency unused today
product1.putLong( Param.QUANTITY, 1 );

// Prepare ecommerce bundle

Bundle ecommerceBundle = new Bundle();
ecommerceBundle.putBundle( "items", product1 );

// Log remove_from_cart event with ecommerce bundle

mFirebaseAnalytics.logEvent( Event.REMOVE_FROM_CART, ecommerceBundle );

Consulta la configuración de la etiqueta para este ejemplo:

  • Tipo de etiqueta: Universal Analytics
  • Tipo de segmento: Evento
  • Categoría del evento, p.ej.: Comercio electrónico
  • Acción del evento (p.ej., Quitar del carrito)
  • Habilitar funciones de comercio electrónico mejorado: Verdadero
  • Leer datos de: Evento de Firebase
  • Activador, p.ej.: (Personalizado > Algunos eventos) El nombre del evento es igual a remove_from_cart

Impresiones de promociones

Para medir las impresiones de la promoción, registra un evento VIEW_ITEM, VIEW_ITEM_LIST o VIEW_SEARCH_RESULTS con un elemento de promoción definido con los campos relevantes:

// Define promotion with relevant parameters

Bundle promotion = new Bundle();
promotion.putString( Param.ITEM_ID, "PROMO_1234" ); // promotion ID; either ITEM_ID or ITEM_NAME is required
promotion.putString( Param.ITEM_NAME, "Summer Sale" ); // promotion name
promotion.putString( Param.CREATIVE_NAME, "summer_banner2" );
promotion.putString( Param.CREATIVE_SLOT, "banner_slot1" );

// Prepare ecommerce bundle

ArrayList <bundle>promotions = new ArrayList<bundle>();
promotions.add(promotion);

Bundle ecommerceBundle = new Bundle();
ecommerceBundle.putParcelableArrayList("promotions", promotions );

// Log view_item, view_item_list, or view_search_results event with ecommerce bundle

mFirebaseAnalytics.logEvent(Event.VIEW_ITEM, ecommerceBundle );

Consulta la configuración de la etiqueta para este ejemplo:

  • Tipo de etiqueta: Universal Analytics
  • Tipo de segmento: Evento
  • Categoría del evento, p.ej.: Promoción interna
  • Acción del evento, p.ej.: Impresión
  • Hit sin interacción: Verdadero
  • Habilitar funciones de comercio electrónico mejorado: Verdadero
  • Leer datos de: Evento de Firebase
  • Activador, p.ej.: (Personalizado > Algunos eventos) El nombre del evento es igual a view_item Y
  • &lbrace;&lbrace;promotions&rbrace;&rbrace; no es igual a indefinido

Clics o selecciones de promociones

Para medir los clics de promoción, registra un evento SELECT_CONTENT con una promoción definida con los campos relevantes:

// Define promotion with relevant parameters

Bundle promotion = new Bundle();
promotion.putString( Param.ITEM_ID, "PROMO_1234"); // promotion ID; either ITEM_ID or ITEM_NAME is required
promotion.putString( Param.ITEM_NAME, "Summer Sale"); // promotion name
promotion.putString( Param.CREATIVE_NAME, "summer_banner2");
promotion.putString( Param.CREATIVE_SLOT, "banner_slot1");

// Prepare ecommerce bundle

ArrayList <bundle>promotions = new ArrayList<bundle>();
promotions.add(promotion);

Bundle ecommerceBundle = new Bundle();
ecommerceBundle.putParcelableArrayList("promotions", promotions );

// Set properties for the event to be shown in the Google Analytics (Firebase) reports.
// These properties will not impact the Universal Analytics reporting.

ecommerceBundle.putString( Param.CONTENT_TYPE, “Internal Promotions” );
ecommerceBundle.putString( Param.ITEM_ID, "PROMO_1234" );

// Log select_content, view_item_list, or view_search_results event with ecommerce bundle

mFirebaseAnalytics.logEvent( Event.SELECT_CONTENT, ecommerceBundle );

Consulta la configuración de la etiqueta para este ejemplo:

  • Tipo de etiqueta: Universal Analytics
  • Tipo de segmento: Evento
  • Categoría del evento, p.ej.: Promoción interna
  • Acción del evento, p.ej. : clic
  • Habilitar funciones de comercio electrónico mejorado: Verdadero
  • Leer datos de: Evento de Firebase
  • Activador, p.ej.: (Personalizado > Algunos eventos) El nombre del evento es igual a select_content Y &lbrace;&lbrace;promotions&rbrace;&rbrace; no es igual indefinido

Proceso de confirmación de la compra

Inicio de confirmación de compra

Para medir el primer paso de un proceso de confirmación de la compra, registra un evento BEGIN_CHECKOUT con uno o más elementos (es decir, productos) definidos con los campos relevantes:

// Define products with relevant parameters

Bundle product1 = new Bundle();
product1.putString( Param.ITEM_ID, "sku1234"); // ITEM_ID or ITEM_NAME is required
product1.putString( Param.ITEM_NAME, "Donut Friday Scented T-Shirt");
product1.putString( Param.ITEM_CATEGORY, "Apparel/Men/Shirts");
product1.putString( Param.ITEM_VARIANT, "Blue");
product1.putString( Param.ITEM_BRAND, "Google");
product1.putDouble( Param.PRICE, 29.99 );
product1.putString( Param.CURRENCY, "USD" ); // Item-level currency unused today
product1.putLong( Param.QUANTITY, 1 );

// Prepare ecommerce bundle

ArrayList <bundle>items = new ArrayList<bundle>();
items.add(product1);

Bundle ecommerceBundle = new Bundle();
ecommerceBundle.putParcelableArrayList( "items", items );

// Set checkout step and optional checkout option

ecommerceBundle.putLong( Param.CHECKOUT_STEP, 1 ); // Optional for first step
ecommerceBundle.putString( Param.CHECKOUT_OPTION, "Visa" ); // Optional

// Log BEGIN_CHECKOUT event with ecommerce bundle

mFirebaseAnalytics.logEvent( Event.BEGIN_CHECKOUT, ecommerceBundle );

Consulta la configuración de la etiqueta para este ejemplo:

  • Tipo de etiqueta: Universal Analytics
  • Tipo de segmento: Screen View
  • Campos que se configurarán: (Nombre del campo) screenName (valor, p.ej.) Pantalla del carrito
  • Habilitar funciones de comercio electrónico mejorado: Verdadero
  • Leer datos de: Evento de Firebase
  • Activador, p.ej.: (Personalizado > Algunos eventos) El nombre del evento es igual a start_checkout

Pasos adicionales para la confirmación de la compra

Para medir los pasos adicionales en un proceso de confirmación de la compra, registra un evento CHECKOUT_PROGRESS con uno o más elementos (es decir, productos) definidos con los campos relevantes:

// Define products with relevant parameters

Bundle product1 = new Bundle();
product1.putString( Param.ITEM_ID, "sku1234"); // ITEM_ID or ITEM_NAME is required
product1.putString( Param.ITEM_NAME, "Donut Friday Scented T-Shirt");
product1.putString( Param.ITEM_CATEGORY, "Apparel/Men/Shirts");
product1.putString( Param.ITEM_VARIANT, "Blue");
product1.putString( Param.ITEM_BRAND, "Google");
product1.putDouble( Param.PRICE, 29.99 );
product1.putString( Param.CURRENCY, "USD" ); // Item-level currency unused today
product1.putLong( Param.QUANTITY, 1 );

// Prepare ecommerce bundle

ArrayList <bundle>items = new ArrayList<bundle>();
items.add(product1);

Bundle ecommerceBundle = new Bundle();
ecommerceBundle.putParcelableArrayList( "items", items );

// Set checkout step and optional checkout option

ecommerceBundle.putLong( Param.CHECKOUT_STEP, 2 );
ecommerceBundle.putString( Param.CHECKOUT_OPTION, "Visa" ); // Optional

// Log CHECKOUT_PROGRESS event with ecommerce bundle

mFirebaseAnalytics.logEvent( Event.CHECKOUT_PROGRESS, ecommerceBundle );

Consulta la configuración de la etiqueta para este ejemplo:

  • Tipo de etiqueta: Universal Analytics
  • Tipo de segmento: Screen View
  • Campos que se configurarán: (Nombre del campo) screenName (valor, p.ej.) Pantalla del paso 2 de la confirmación de la compra
  • Habilitar funciones de comercio electrónico mejorado: Verdadero
  • Leer datos de: Evento de Firebase
  • Activador, p.ej.: (Personalizado > Algunos eventos) El nombre del evento es igual a checkout_progress

Opciones de confirmación de la compra

Las opciones de confirmación de la compra te permiten medir información adicional sobre el estado del proceso de confirmación de la compra. Puedes medir las opciones de confirmación de la compra como parte de un evento de paso de confirmación de la compra (como se muestra más arriba) o cuando un usuario selecciona una opción después de que ya se haya registrado el evento para un paso de confirmación de la compra determinado.

Para medir las opciones de confirmación de la compra después de un paso de confirmación de la compra, registra un evento SET_CHECKOUT_OPTION con los parámetros CHECKOUT_STEP y CHECKOUT_OPTION correspondientes:

Bundle ecommerceBundle = new Bundle();
ecommerceBundle.putLong( Param.CHECKOUT_STEP, 2 );
ecommerceBundle.putString( Param.CHECKOUT_OPTION, "Mastercard" );
mFirebaseAnalytics.logEvent( Event.SET_CHECKOUT_OPTION, ecommerceBundle );

Consulta la configuración de la etiqueta para este ejemplo:

  • Tipo de etiqueta: Universal Analytics
  • Tipo de segmento: Evento
  • Categoría del evento, p.ej.: Comercio electrónico
  • Acción del evento, p.ej. : Configurar opción de confirmación de la compra
  • Habilitar funciones de comercio electrónico mejorado: Verdadero
  • Leer datos de: Evento de Firebase
  • Activador, p.ej.: (Personalizado > Algunos eventos) El nombre del evento es igual a set_checkout_option

Compras

Para medir las compras, registra un evento ECOMMERCE_PURCHASE con uno o más artículos (es decir, productos) definidos con los campos relevantes:

// Define product with relevant parameters

Bundle product1 = new Bundle();
product1.putString( Param.ITEM_ID, "sku1234"); // ITEM_ID or ITEM_NAME is required
product1.putString( Param.ITEM_NAME, "Donut Friday Scented T-Shirt");
product1.putString( Param.ITEM_CATEGORY, "Apparel/Men/Shirts");
product1.putString( Param.ITEM_VARIANT, "Blue");
product1.putString( Param.ITEM_BRAND, "Google");
product1.putDouble( Param.PRICE, 29.99 );
product1.putString( Param.CURRENCY, "USD" ); // Item-level currency unused today
product1.putLong( Param.QUANTITY, 1 );

Bundle product2 = new Bundle();
product2.putString( Param.ITEM_ID, "sku5678");
product2.putString( Param.ITEM_NAME, "Android Workout Capris");
product2.putString( Param.ITEM_CATEGORY, "Apparel/Women/Pants");
product2.putString( Param.ITEM_VARIANT, "Black");
product2.putString( Param.ITEM_BRAND, "Google");
product2.putDouble( Param.PRICE, 39.99 );
product2.putString( Param.CURRENCY, "USD" ); // Item-level currency unused today
product2.putLong( Param.QUANTITY, 1 );

// Prepare ecommerce bundle

ArrayList <bundle>items = new ArrayList<bundle>();
items.add(product1);
items.add(product2);

Bundle ecommerceBundle = new Bundle();
ecommerceBundle.putParcelableArrayList( "items", items );

// Set relevant transaction-level parameters

ecommerceBundle.putString( Param.TRANSACTION_ID, "T12345" );
ecommerceBundle.putString( Param.AFFILIATION, "Google Store - Online" );
ecommerceBundle.putDouble( Param.VALUE, 37.39 );    // Revenue
ecommerceBundle.putDouble( Param.TAX, 2.85 );
ecommerceBundle.putDouble( Param.SHIPPING, 5.34 );
ecommerceBundle.putString( Param.CURRENCY, "USD" );
ecommerceBundle.putString( Param.COUPON, "SUMMER2017" );

// Log ecommerce_purchase event with ecommerce bundle

mFirebaseAnalytics.logEvent( Event.ECOMMERCE_PURCHASE, ecommerceBundle );

Consulta la configuración de la etiqueta para este ejemplo:

  • Tipo de etiqueta: Universal Analytics
  • Tipo de segmento: Screen View
  • Campos que se configurarán: (Nombre del campo) screenName (valor, p.ej.) Pantalla de agradecimiento
  • Habilitar funciones de comercio electrónico mejorado: Verdadero
  • Leer datos de: Evento de Firebase
  • Activador, p.ej.: (Personalizado > Algunos eventos) El nombre del evento es igual a ecommerce_purchase

Reembolsos

Para medir los reembolsos, registra un evento PURCHASE_REFUND con el ID de transacción relevante especificado y, de forma opcional (en el caso de los reembolsos parciales), uno o más elementos (es decir, productos) definidos con los IDs de los artículos y las cantidades:

// Prepare ecommerce bundle with transaction ID to be refunded

Bundle ecommerceBundle = new Bundle();
ecommerceBundle.putString( Param.TRANSACTION_ID, "T12345" ); // Required
ecommerceBundle.putDouble( Param.VALUE, 37.39 ); // Optional in Universal Analytics

// (OPTIONAL) For partial refunds, define the item IDs and quantities of products being refunded

Bundle refundedProduct = new Bundle();
refundedProduct.putString( Param.ITEM_ID, "sku1234" ); // Required for partial refund
refundedProduct.putLong( Param.QUANTITY, 1 ); // Required for partial refund

ArrayList <bundle>items = new ArrayList<bundle>();
items.add(refundedProduct);
ecommerceBundle.putParcelableArrayList( "items", items );

// Log purchase_refund event with ecommerce bundle

mFirebaseAnalytics.logEvent( Event.PURCHASE_REFUND, ecommerceBundle );

Consulta la configuración de la etiqueta para este ejemplo:

  • Tipo de etiqueta: Universal Analytics
  • Tipo de segmento: Evento
  • Categoría del evento, p.ej.: Comercio electrónico
  • Acción del evento, p.ej. : Refund
  • Habilitar funciones de comercio electrónico mejorado: Verdadero
  • Leer datos de: Evento de Firebase
  • Activador, p.ej.: (Personalizado > Algunos eventos) El nombre del evento es igual a purchase_refund