Comercio electrónico mejorado de Universal Analytics para iOS

El comercio electrónico mejorado es una función de Google Analytics disponible en las propiedades de Universal Analytics que permite medir las interacciones del usuario con los productos a lo largo de la experiencia de compra del usuario. Esto puede incluir impresiones de productos, clics en productos, vistas de detalles de productos, agregar artículos a un carrito de compras, iniciar pagos, transacciones y reembolsos.

Las últimas generaciones de Google Tag Manager y Google Analytics para aplicaciones móviles funcionan en conjunto con Firebase , la plataforma de aplicaciones móviles de Google. Al medir aplicaciones con el SDK de Firebase , tendrá acceso a una gran cantidad de informes de aplicaciones móviles generados automáticamente, que se pueden personalizar y complementar aún más con el código de la aplicación. Estos informes incluirán automáticamente datos sobre las compras dentro de la aplicación procesadas por App Store en iTunes y Google Play. Se pueden generar informes adicionales relacionados con el comercio electrónico implementando eventos sugeridos para aplicaciones de comercio electrónico . Los informes detallados sobre el comportamiento de compra (es decir, comercio electrónico mejorado) actualmente solo están disponibles en las propiedades de Universal Analytics.

Este documento describe cómo usar Tag Manager para aplicaciones de iOS junto con el SDK de Firebase para enviar datos de comercio electrónico mejorados a las propiedades de Universal Analytics. Se debe usar la misma sintaxis de eventos y parámetros para preparar el escenario para informes de comercio electrónico adicionales en el futuro.

Primeros pasos

Antes de comenzar, configure los siguientes requisitos previos para su aplicación:

  1. Instale y configure Firebase y Google Tag Manager en su aplicación. Asegúrese de estar usando la versión 11 o superior del SDK de Firebase para iOS.
  2. Configure una variable definida por el usuario en su contenedor de Tag Manager llamada "promociones", con la siguiente configuración:
    • Tipo de evento: parámetro personalizado
    • Clave de parámetro de evento: promociones
    • Valor predeterminado: indefinido

Implementación

Las siguientes secciones muestran cómo registrar eventos con los parámetros necesarios para medir actividades de comercio electrónico mejoradas, como:

Impresiones de productos

Mida las impresiones de productos registrando un evento con un parámetro kFIRParameterItemID y uno o más artículos (es decir, productos) definidos con los campos relevantes.

// Define product with relevant parameters.
NSDictionary *product1 = @{
   kFIRParameterItemID : @"sku1234", // ITEM_ID or ITEM_NAME is required.
   kFIRParameterItemName : @"Android Jogger Sweatpants",
   kFIRParameterItemCategory : @"Apparel/Men/Pants",
   kFIRParameterItemVariant : @"Blue",
   kFIRParameterItemBrand : @"Google",
   kFIRParameterPrice : @39.99,
   kFIRParameterCurrency : @"USD",  // Item-level currency unused today.
   kFIRParameterIndex : @1          // Position of the item in the list.
};

NSDictionary *product2 = @{
   kFIRParameterItemID : @"sku5678", // ITEM_ID or ITEM_NAME is required.
   kFIRParameterItemName : @"Android Capri",
   kFIRParameterItemCategory : @"Apparel/Women/Pants",
   kFIRParameterItemVariant : @"Black",
   kFIRParameterItemBrand : @"Google",
   kFIRParameterPrice : @35.99,
   kFIRParameterCurrency : @"USD",  // Item-level currency unused today.
   kFIRParameterIndex : @2          // Position of the item in the list.
};

// Prepare ecommerce dictionary.
NSArray *items = @[product1, product2];

NSDictionary *ecommerce = @{
   @"items" : items,
   kFIRParameterItemList : @"Search Results" // List name.
};

// Log select_content event with ecommerce dictionary.
[FIRAnalytics logEventWithName:kFIREventViewSearchResults
                    parameters:ecommerce];

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

  • Tipo de etiqueta: Universal Analytics
  • Tipo de pista: vista de pantalla
  • Campos para configurar: (Nombre de campo) screenName (valor, p. ej.) Pantalla de resultados de búsqueda
  • Habilitar funciones de comercio electrónico mejoradas: verdadero
  • Leer datos de: Evento de Firebase
  • Disparador, por ejemplo: (Personalizado > Algunos eventos) El nombre del evento es igual a view_search_results

Clics/selecciones de productos

Mida los clics en productos registrando un evento kFIREventSelectContent con un artículo (es decir, producto) definido con los campos relevantes:

// Define product with relevant parameters.
NSDictionary *product1 = @{
   kFIRParameterItemID : @"sku1234", // ITEM_ID or ITEM_NAME is required.
   kFIRParameterItemName : @"Android Jogger Sweatpants",
   kFIRParameterItemCategory : @"Apparel/Men/Pants",
   kFIRParameterItemVariant : @"Blue",
   kFIRParameterItemBrand : @"Google",
   kFIRParameterPrice : @39.99,
   kFIRParameterCurrency : @"USD",  // Item-level currency unused today.
   kFIRParameterIndex : @1          // Position of the item in the list.
};

// Prepare ecommerce dictionary.
NSArray *items = @[product1];

NSDictionary *ecommerce = @{
   @"items" : items,
   kFIRParameterItemList : @"Search Results" // List name.
};

// Log select_content event with ecommerce dictionary.
[FIRAnalytics logEventWithName:kFIREventSelectContent
                    parameters:ecommerce];

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

  • Tipo de etiqueta: Universal Analytics
  • Tipo de pista: Evento
  • Categoría de evento, por ejemplo: comercio electrónico
  • Acción de evento, por ejemplo: clic en el producto
  • Habilitar funciones de comercio electrónico mejoradas: verdadero
  • Leer datos de: Evento de Firebase
  • Desencadenador, por ejemplo: (Personalizado > Algunos eventos) Nombre del evento es igual a select_content Y es igual a indefinido

Vistas detalladas del producto

Mida las vistas detalladas del producto registrando un evento kFIREventViewItem con un artículo (es decir, un producto) definido con los campos relevantes:

// Define product with relevant parameters.
NSDictionary *product1 = @{
   kFIRParameterItemID : @"sku1234", // ITEM_ID or ITEM_NAME is required.
   kFIRParameterItemName : @"Android Jogger Sweatpants",
   kFIRParameterItemCategory : @"Apparel/Men/Pants",
   kFIRParameterItemVariant : @"Blue",
   kFIRParameterItemBrand : @"Google",
   kFIRParameterPrice : @39.99,
   kFIRParameterCurrency : @"USD",  // Item-level currency unused today.
};

// Prepare ecommerce dictionary.
NSArray *items = @[product1];

NSDictionary *ecommerce = @{
   @"items" : items,
   kFIRParameterItemList : @"Search Results" // List name.
};

// Log view_item event with ecommerce dictionary.
[FIRAnalytics logEventWithName:kFIREventViewItem
                    parameters:ecommerce];

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

  • Tipo de etiqueta: Universal Analytics
  • Tipo de pista: vista de pantalla
  • Campos para configurar: (Nombre de campo) nombre de pantalla (valor, p. ej.) Pantalla de detalles del producto
  • Habilitar funciones de comercio electrónico mejoradas: verdadero
  • Leer datos de: Evento de Firebase
  • Desencadenador, por ejemplo: (Personalizado > Algunos eventos) Nombre del evento es igual a view_item Y
  • es igual a indefinido

Adiciones al carrito

Mida un producto que se agrega a un carrito de compras registrando un evento kFIREventAddToCart con un artículo (es decir, producto) definido con los campos relevantes:

/// Define product with relevant parameters.
NSDictionary *product1 = @{
   kFIRParameterItemID : @"sku1234", // ITEM_ID or ITEM_NAME is required.
   kFIRParameterItemName : @"Android Jogger Sweatpants",
   kFIRParameterItemCategory : @"Apparel/Men/Pants",
   kFIRParameterItemVariant : @"Blue",
   kFIRParameterItemBrand : @"Google",
   kFIRParameterPrice : @39.99,
   kFIRParameterCurrency : @"USD",  // Item-level currency unused today.
   kFIRParameterQuantity : @1
};

// Prepare ecommerce dictionary.
NSArray *items = @[product1];

NSDictionary *ecommerce = @{
   @"items" : items
};

// Log add_to_cart event with ecommerce dictionary.
[FIRAnalytics logEventWithName:kFIREventAddToCart
                    parameters:ecommerce];

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

  • Tipo de etiqueta: Universal Analytics
  • Tipo de pista: Evento
  • Categoría de evento, por ejemplo: comercio electrónico
  • Acción de evento, por ejemplo: Agregar al carrito
  • Habilitar funciones de comercio electrónico mejoradas: verdadero
  • Leer datos de: Evento de Firebase
  • Disparador, p. ej.: (Personalizado > Algunos eventos) Nombre del evento es igual a add_to_cart

Retiros del carrito

Mida la eliminación de un producto de un carrito de compras registrando un evento kFIREventRemoveFromCart con un artículo (es decir, producto) definido con los campos relevantes:

// Define product with relevant parameters.
NSDictionary *product1 = @{
   kFIRParameterItemID : @"sku1234", // ITEM_ID or ITEM_NAME is required.
   kFIRParameterItemName : @"Android Jogger Sweatpants",
   kFIRParameterItemCategory : @"Apparel/Men/Pants",
   kFIRParameterItemVariant : @"Blue",
   kFIRParameterItemBrand : @"Google",
   kFIRParameterPrice : @39.99,
   kFIRParameterCurrency : @"USD",  // Item-level currency unused today.
   kFIRParameterQuantity : @1
};

// Prepare ecommerce dictionary.
NSArray *items = @[product1];

NSDictionary *ecommerce = @{
   @"items" : items
};

// Log remove_from_cart event with ecommerce dictionary.
[FIRAnalytics logEventWithName:kFIREventRemoveFromCart
                    parameters:ecommerce];

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

  • Tipo de etiqueta: Universal Analytics
  • Tipo de pista: Evento
  • Categoría de evento, por ejemplo: comercio electrónico
  • Acción de evento, por ejemplo: Eliminar del carrito
  • Habilitar funciones de comercio electrónico mejoradas: verdadero
  • Leer datos de: Evento de Firebase
  • Disparador, por ejemplo: (Personalizado > Algunos eventos) El nombre del evento es igual a remove_from_cart

Impresiones de promoción

Mida las impresiones de promoción registrando un evento kFIREventViewItem con un elemento de promoción definido con los campos relevantes:

/// Define promotion with relevant parameters.
NSDictionary *promotion = @{
   kFIRParameterItemID : @"PROMO_1234", // promotion ID; either ITEM_ID or ITEM_NAME is.
   kFIRParameterItemName : @"Summer Sale", // promotion name.
   kFIRParameterCreativeName : @"summer_banner2",
   kFIRParameterCreativeSlot : @"banner_slot1"
};

// Prepare ecommerce dictionary.
NSArray *promotions = @[promotion];
NSDictionary *ecommerce = @{
   @"promotions" : promotions
};

// Log view_item, view_item_list, or view_search_results
// event with ecommerce bundle.
[FIRAnalytics logEventWithName:kFIREventViewItem
                    parameters:ecommerce];

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

  • Tipo de etiqueta: Universal Analytics
  • Tipo de pista: Evento
  • Categoría de evento, por ejemplo: Promoción interna
  • Acción de evento, por ejemplo: Impresión
  • Acierto sin interacción: verdadero
  • Habilitar funciones de comercio electrónico mejoradas: verdadero
  • Leer datos de: Evento de Firebase
  • Desencadenador, por ejemplo: (Personalizado > Algunos eventos) Nombre del evento es igual a view_item Y
  • no es igual a indefinido

Clics/selecciones de promoción

Mida los clics de promoción registrando un evento kFIREventSelectContent con una promoción definida con los campos relevantes:

// Define promotion with relevant parameters.
NSDictionary *promotion = @{
   kFIRParameterItemID : @"PROMO_1234", // promotion ID; either ITEM_ID or ITEM_NAME is required.
   kFIRParameterItemName : @"Summer Sale", // promotion name.
   kFIRParameterCreativeName : @"summer_banner2",
   kFIRParameterCreativeSlot : @"banner_slot1"
};

// Prepare ecommerce dictionary.
NSArray *promotions = @[promotion];

// Set properties for the event to be shown in the Google Analytics (Firebase) reports.
// These properties will not impact the Universal Analytics reporting.
NSDictionary *ecommerce = @{
   kFIRParameterItemID : @"PROMO_1234",
   kFIRParameterContentType : @"Internal Promotions",
   @"promotions" : promotions
};

// Log select_content, view_item_list, or view_search_results event with ecommerce bundle.
[FIRAnalytics logEventWithName:kFIREventSelectContent
                    parameters:ecommerce];

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

  • Tipo de etiqueta: Universal Analytics
  • Tipo de pista: Evento
  • Categoría de evento, por ejemplo: Promoción interna
  • Acción de evento, p. ej.: hacer clic
  • Habilitar funciones de comercio electrónico mejoradas: verdadero
  • Leer datos de: Evento de Firebase
  • Disparador, por ejemplo: (Personalizado > Algunos eventos) El nombre del evento es igual a select_content Y no es igual a indefinido

Proceso de pago

Comenzar registro de salida

Mida el primer paso en un proceso de pago registrando un evento kFIREventBeginCheckout con uno o más elementos (es decir, productos) definidos con los campos relevantes:

// Define products with relevant parameters.
NSDictionary *product1 = @{
   kFIRParameterItemID : @"sku1234", // ITEM_ID or ITEM_NAME is required.
   kFIRParameterItemName : @"Android Jogger Sweatpants",
   kFIRParameterItemCategory : @"Apparel/Men/Pants",
   kFIRParameterItemVariant : @"Blue",
   kFIRParameterItemBrand : @"Google",
   kFIRParameterPrice : @39.99,
   kFIRParameterCurrency : @"USD",  // Item-level currency unused today.
   kFIRParameterQuantity : @1
};

// Prepare ecommerce dictionary.
NSArray *items = @[product1];

// Set checkout step and optional checkout option.
NSDictionary *ecommerce = @{
   @"items" : items,
   kFIRParameterCheckoutStep : @1, // Optional for first step.
   kFIRParameterCheckoutOption : @"Visa" // Optional.
};

// Log BEGIN_CHECKOUT event with ecommerce dictionary.
[FIRAnalytics logEventWithName:kFIREventBeginCheckout
                    parameters:ecommerce];

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

  • Tipo de etiqueta: Universal Analytics
  • Tipo de pista: vista de pantalla
  • Campos para establecer: (Nombre de campo) screenName (valor, por ejemplo) Pantalla de carrito
  • Habilitar funciones de comercio electrónico mejoradas: verdadero
  • Leer datos de: Evento de Firebase
  • Disparador, por ejemplo: (Personalizado > Algunos eventos) El nombre del evento es igual a begin_checkout

Opciones de pago

Las opciones de pago le permiten medir información adicional sobre el estado del proceso de pago. Puede medir las opciones de pago como parte de un evento de paso de pago (como se muestra arriba) o cuando un usuario selecciona una opción después de que el evento para un paso de pago dado ya se haya registrado.

Mida las opciones de pago después de un paso de pago registrando un evento kFIREventCheckoutProgress con los parámetros kFIRParameterCheckoutStep y kFIRParameterCheckoutOption correspondientes:

// Define products with relevant parameters.
NSDictionary *product1 = @{
   kFIRParameterItemID : @"sku1234", // ITEM_ID or ITEM_NAME is required.
   kFIRParameterItemName : @"Android Jogger Sweatpants",
   kFIRParameterItemCategory : @"Apparel/Men/Pants",
   kFIRParameterItemVariant : @"Blue",
   kFIRParameterItemBrand : @"Google",
   kFIRParameterPrice : @39.99,
   kFIRParameterCurrency : @"USD",  // Item-level currency unused today.
   kFIRParameterQuantity : @1
};

// Prepare ecommerce dictionary.
NSArray *items = @[product1];

// Set checkout step and optional checkout option.
NSDictionary *ecommerce = @{
   @"items" : items,
   kFIRParameterCheckoutStep : @2, // Optional for first step.
   kFIRParameterCheckoutOption : @"Visa" // Optional.
};

// Log CHECKOUT_PROGRESS event with ecommerce dictionary.
[FIRAnalytics logEventWithName:kFIREventCheckoutProgress
                   parameters:ecommerce];

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

  • g Tipo: Universal Analytics
  • Tipo de acuse de recibo: Evento
  • Categoría ent, por ejemplo: comercio electrónico
  • Acción ent, por ejemplo: Establecer opción de pago
  • Funciones mejoradas de comercio electrónico: Verdadero
  • datos de anuncios de: Evento de Firebase
  • Disparador, por ejemplo: (Personalizado > Algunos eventos) El nombre del evento es igual a set_checkout_option

compras

Mida las compras registrando un evento kFIREventEcommercePurchase con uno o más artículos (es decir, productos) definidos con los campos relevantes:

// Define products with relevant parameters.
NSDictionary *product1 = @{
   kFIRParameterItemID : @"sku1234", // ITEM_ID or ITEM_NAME is required.
   kFIRParameterItemName : @"Android Jogger Sweatpants",
   kFIRParameterItemCategory : @"Apparel/Men/Pants",
   kFIRParameterItemVariant : @"Blue",
   kFIRParameterItemBrand : @"Google",
   kFIRParameterPrice : @39.99,
   kFIRParameterCurrency : @"USD",  // Item-level currency unused today.
   kFIRParameterQuantity : @1
};

NSDictionary *product2 = @{
   kFIRParameterItemID : @"sku5678", // ITEM_ID or ITEM_NAME is required.
   kFIRParameterItemName : @"Android Capri",
   kFIRParameterItemCategory : @"Apparel/Women/Pants",
   kFIRParameterItemVariant : @"Black",
   kFIRParameterItemBrand : @"Google",
   kFIRParameterPrice : @35.99,
   kFIRParameterCurrency : @"USD",  // Item-level currency unused today.
   kFIRParameterQuantity : @1
};

// Prepare ecommerce dictionary.
NSArray *items = @[product1, product2];

NSDictionary *ecommerce = @{
   @"items" : items,
   kFIRParameterItemList : @"Search Results", // List name.
   kFIRParameterTransactionID : @"T12345",
   kFIRParameterAffiliation : @"Google Store - Online",
   kFIRParameterValue : @75.98, // Revenue.
   kFIRParameterTax : @3.80,
   kFIRParameterShipping : @5.34,
   kFIRParameterCurrency : @"USD",
   kFIRParameterCoupon : @"SUMMER2017"
};

// Log ecommerce_purchase event with ecommerce dictionary.
[FIRAnalytics logEventWithName:kFIREventEcommercePurchase
                    parameters:ecommerce];

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

  • Tipo de etiqueta: Universal Analytics
  • Tipo de pista: vista de pantalla
  • Campos para establecer: (Nombre de campo) screenName (valor, por ejemplo) Pantalla de agradecimiento
  • Habilitar funciones de comercio electrónico mejoradas: verdadero
  • Leer datos de: Evento de Firebase
  • Activador, p. ej.: (Personalizado > Algunos eventos) Nombre del evento es igual a ecommerce_purchase

Reembolsos

Mida los reembolsos registrando un evento kFIREventPurchaseRefund con el ID de transacción relevante especificado y, opcionalmente (para reembolsos parciales), uno o más artículos (es decir, productos) definidos con ID de artículos y cantidades:

// (OPTIONAL) For partial refunds, define the item IDs and
// quantities of products being refunded.
NSDictionary *refundedProduct = @{
   kFIRParameterItemID : @"sku1234", // Required for partial refund.
   kFIRParameterQuantity : @1
};

// Prepare ecommerce bundle with transaction ID to be refunded.
NSDictionary *ecommerce = @{
   @"items" : @[ refundedProduct ],
   kFIRParameterTransactionID : @"T12345", // Required.
   kFIRParameterValue : @75.98 // Optional in Universal Analytics.
};

// Log purchase_refund event with ecommerce.
[FIRAnalytics logEventWithName:kFIREventPurchaseRefund
                    parameters:ecommerce];

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

  • Tipo de etiqueta: Universal Analytics
  • Tipo de pista: Evento
  • Categoría de evento, por ejemplo: comercio electrónico
  • Acción de evento, por ejemplo: Reembolso
  • Habilitar funciones de comercio electrónico mejoradas: verdadero
  • Leer datos de: Evento de Firebase
  • Disparador, por ejemplo: (Personalizado > Algunos eventos) Nombre del evento es igual a compra_reembolso