Google Analytics ofrece el método de seguimiento Comercio electrónico mejorado en propiedades de Universal Analytics. Este método permite medir las interacciones del usuario con productos a lo largo de toda la experiencia de compra. Estas interacciones pueden ser impresiones de promociones o de productos, clics en promociones o en productos, vistas de detalles de productos, inclusiones o eliminaciones de productos en el carrito de la compra, inicios del proceso de pago, transacciones o reembolsos.
Las últimas versiones de Google Tag Manager y Google Analytics para aplicaciones móviles funcionan con Firebase, la plataforma para aplicaciones móviles de Google. Al medir el rendimiento de una aplicación con el SDK de Firebase, tendrás acceso a numerosos informes de aplicaciones móviles generados automáticamente, que podrás personalizar y complementar aún más con el código de la aplicación. Estos informes incluirán automáticamente datos de las compras en la aplicación procesados por el App Store en iTunes y por Google Play. Se pueden generar otros informes sobre comercio electrónico implementando eventos recomendados para aplicaciones de comercio electrónico. De momento, los informes detallados sobre el comportamiento de compra (Comercio electrónico mejorado) solo están disponibles en las propiedades de Universal Analytics.
En este documento se describe cómo usar Google Tag Manager para aplicaciones móviles con el SDK de Firebase para enviar datos de Comercio electrónico mejorado a propiedades de Universal Analytics.
Primeros pasos
Antes de empezar, debes seguir estos pasos:
- Instala y configura Firebase y Google Tag Manager en la aplicación. Asegúrate de que tienes la versión 11 o una posterior del SDK de Firebase para Android.
Importa estos dos paquetes:
import com.google.firebase.analytics.FirebaseAnalytics.Event;
import com.google.firebase.analytics.FirebaseAnalytics.Param;
En tu contenedor de Tag Manager, crea una variable definida por el usuario llamada "promotions" con la siguiente configuración:
- Tipo de evento: parámetro personalizado
- Clave del parámetro de evento: promotions
- Valor predeterminado: undefined
Implementación
En las secciones siguientes se muestra cómo registrar eventos con los parámetros necesarios para medir este tipo de actividades de Comercio electrónico mejorado:
- Impresiones de productos
- Selecciones de productos o clics en productos
- Vistas de detalles de productos
- Inclusiones de productos en el carrito
- Retirada de productos del carrito
- Impresiones de promociones
- Selecciones de promociones o clics en promociones
- Proceso de tramitación de la compra
- Compras
- Reembolsos
Impresiones de productos
Para medir impresiones de productos, registra eventos con un parámetro ITEM_LIST
y uno o varios artículos (es decir, productos) definidos con los campos correspondientes.
// 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 );
Ver la configuración de etiqueta de este ejemplo
- Tipo de etiqueta: Universal Analytics
- Tipo de seguimiento: Screen View
- Configurar campos: "screenName" como el campo del nombre de la página y, por ejemplo, la pantalla de resultados de búsqueda como valor
- Habilitar funciones de Comercio electrónico mejorado: true
- Leer datos de: evento de Firebase
- Activador: (Personalizado > Algunos eventos), por ejemplo, que el nombre del evento sea igual a "view_search_results"
Selecciones de productos o clics en productos
Para medir clics en productos, registra eventos SELECT_CONTENT
con un artículo (es decir, un producto) definido con los campos correspondientes:
// 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 );
Ver la configuración de etiqueta de este ejemplo
- Tipo de etiqueta: Universal Analytics
- Tipo de seguimiento: evento
- Categoría de evento: por ejemplo, Ecommerce
- Acción de evento: por ejemplo, clic en un producto
- Habilitar funciones de Comercio electrónico mejorado: true
- Leer datos de: evento de Firebase
- Activador: (Personalizado > Algunos eventos) por ejemplo, que el nombre del evento sea igual a "select_content" Y &lbrace";{promotions}}" sea igual a "undefined"
Vistas de detalles de productos
Para medir vistas de detalles de productos, registra eventos VIEW_ITEM
con un artículo (es decir, un producto) definido con los campos correspondientes:
// 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 );
Ver la configuración de etiqueta de este ejemplo
- Tipo de etiqueta: Universal Analytics
- Tipo de seguimiento: Screen View
- Configurar campos: "screenName" como el campo del nombre de la página y, por ejemplo, la pantalla de detalles del producto como valor
- Habilitar funciones de Comercio electrónico mejorado: true
- Leer datos de: evento de Firebase
- Activador: (Personalizado > Algunos eventos) por ejemplo, que el nombre del evento sea igual a "view_item" Y
- "{{promociones}}" sea igual a "undefined"
Inclusiones de productos en el carrito
Para medir inclusiones de productos en un carrito de la compra, registra eventos ADD_TO_CART
con un artículo (es decir, un producto) definido con los campos correspondientes:
// 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 );
Ver la configuración de etiqueta de este ejemplo
- Tipo de etiqueta: Universal Analytics
- Tipo de seguimiento: evento
- Categoría de evento: por ejemplo, Ecommerce
- Acción de evento: por ejemplo, añadir al carrito
- Habilitar funciones de Comercio electrónico mejorado: true
- Leer datos de: evento de Firebase
- Activador: (Personalizado > Algunos eventos), por ejemplo, que el nombre del evento sea igual a "add_to_cart"
Eliminaciones de productos del carrito
Para medir eliminaciones de productos de un carrito de la compra, registra eventos REMOVE_FROM_CART
con un artículo (es decir, un producto) definido con los campos correspondientes:
// 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 );
Ver la configuración de etiqueta de este ejemplo
- Tipo de etiqueta: Universal Analytics
- Tipo de seguimiento: evento
- Categoría de evento: por ejemplo, Ecommerce
- Acción de evento: por ejemplo, quitar del carrito
- Habilitar funciones de Comercio electrónico mejorado: true
- Leer datos de: evento de Firebase
- Activador: (Personalizado > Algunos eventos) por ejemplo, que el nombre del evento sea igual a "remove_from_cart"
Impresiones de promociones
Para medir impresiones de promociones, registra eventos VIEW_ITEM
, VIEW_ITEM_LIST
o VIEW_SEARCH_RESULTS
con un artículo de promoción definido con los campos correspondientes:
// 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 );
Ver la configuración de etiqueta de este ejemplo
- Tipo de etiqueta: Universal Analytics
- Tipo de seguimiento: evento
- Categoría de evento: por ejemplo, promoción interna
- Acción de evento: por ejemplo impresión
- Hit sin interacción: true
- Habilitar funciones de Comercio electrónico mejorado: true
- Leer datos de: evento de Firebase
- Activador: (Evento personalizado > Algunos eventos personalizados) por ejemplo, que el nombre del evento sea igual a "view_item" Y
- "{{promociones}}" no sea igual a "undefined"
Selecciones de promociones o clics en promociones
Para medir clics en promociones, registra un evento SELECT_CONTENT
con una promoción definida con los campos correspondientes:
// 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 );
Ver la configuración de etiqueta de este ejemplo
- Tipo de etiqueta: Universal Analytics
- Tipo de seguimiento: evento
- Categoría de evento: por ejemplo, promoción interna
- Acción de evento: por ejemplo, clic
- Habilitar funciones de Comercio electrónico mejorado: true
- Leer datos de: evento de Firebase
- Activador: (Evento personalizado > Algunos eventos personalizados) por ejemplo, que el nombre de evento sea igual a "select_content" Y "{{promotions}}" no sea igual a "undefined"
Proceso de tramitación de compra
Inicio de la tramitación de la compra
Para medir el primer paso de un proceso de tramitación de compra, registra un evento BEGIN_CHECKOUT
con uno o varios artículos (es decir, productos) definidos con los campos correspondientes:
// 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 );
Ver la configuración de etiqueta de este ejemplo
- Tipo de etiqueta: Universal Analytics
- Tipo de seguimiento: Screen View
- Configurar campos: "screenName" como el campo del nombre de la página y, por ejemplo, la página del carrito como valor
- Habilitar funciones de Comercio electrónico mejorado: true
- Leer datos de: evento de Firebase
- Activador: (Evento personalizado > Algunos eventos personalizados) por ejemplo, que el nombre del evento sea igual a "begin_checkout"
Pasos adicionales de la tramitación de la compra
Para medir pasos adicionales de un proceso de tramitación de compra, registra eventos CHECKOUT_PROGRESS
con uno o varios artículos (es decir, productos) definidos con los campos correspondientes:
// 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 );
Ver la configuración de etiqueta de este ejemplo
- Tipo de etiqueta: Universal Analytics
- Tipo de seguimiento: Screen View
- Configurar campos: "screenName" como el campo del nombre de la página y, por ejemplo, la página del segundo paso de tramitación de la compra como valor
- Habilitar funciones de Comercio electrónico mejorado: true
- Leer datos de: evento de Firebase
- Activador: (Evento personalizado > Algunos eventos personalizados) por ejemplo, que el nombre del evento sea igual a "checkout_progress"
Opciones de pago
Las opciones de pago permiten medir información adicional sobre el estado del proceso de tramitación de la compra. Puedes medirlas como parte de un evento correspondiente a un paso de la tramitación de la compra (como hemos visto más arriba) o cuando un usuario seleccione una opción después de que ya se haya registrado el evento correspondiente a un determinado paso de dicha tramitación.
Para medir estas opciones después de un paso de tramitación de la compra, registra eventos 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 );
Ver la configuración de etiqueta de este ejemplo
- Tipo de etiqueta: Universal Analytics
- Tipo de seguimiento: evento
- Categoría de evento: por ejemplo, Ecommerce
- Acción de evento, por ejemplo: Set Checkout Option
- Habilitar funciones de Comercio electrónico mejorado: true
- Leer datos de: evento de Firebase
- Activador: (Personalizado > Algunos eventos) por ejemplo, que el nombre del evento sea igual a "set_checkout_option"
Compras
Para medir compras, registra eventos ECOMMERCE_PURCHASE
con uno o varios artículos (es decir, productos) definidos con los campos correspondientes:
// 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 );
Ver la configuración de etiqueta de este ejemplo
- Tipo de etiqueta: Universal Analytics
- Tipo de seguimiento: Screen View
- Configurar campos: "screenName" como el campo del nombre de la página y, por ejemplo, la pantalla de agradecimiento por la compra como valor
- Habilitar funciones de Comercio electrónico mejorado: true
- Leer datos de: evento de Firebase
- Activador: (Personalizado > Algunos eventos) por ejemplo, que el nombre del evento sea igual a "ecommerce_purchase"
Reembolsos
Para medir reembolsos, registra eventos PURCHASE_REFUND
con el ID de transacción correspondiente especificado y, si quieres (para reembolsos parciales), uno o varios artículos (es decir, productos) definidos con los IDs de artículo 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 );
Ver la configuración de etiqueta de este ejemplo
- Tipo de etiqueta: Universal Analytics
- Tipo de seguimiento: evento
- Categoría de evento: por ejemplo, Ecommerce
- Acción de evento: por ejemplo, reembolso
- Habilitar funciones de Comercio electrónico mejorado: true
- Leer datos de: evento de Firebase
- Activador: (Personalizado > Algunos eventos) por ejemplo, que el nombre del evento sea igual a "purchase_refund"