Comércio eletrônico avançado do Universal Analytics para iOS

O comércio eletrônico avançado é um recurso do Google Analytics disponível nas propriedades do Universal Analytics que permite medir as interações dos usuários com os produtos em toda a experiência de compra. Isso pode incluir impressões e cliques em produtos, visualizações dos detalhes do produto, adição de itens a um carrinho de compras, finalizações de compras, transações e reembolsos.

As versões mais recentes do Gerenciador de tags do Google e do Google Analytics para dispositivos móveis funcionam com o Firebase, a plataforma de apps para dispositivos móveis do Google. Ao medir aplicativos com o SDK do Firebase, você tem acesso a uma série de relatórios de apps para dispositivos móveis que foram gerados automaticamente e podem ser personalizados e complementados pelo código no app. Eles incluirão dados sobre compras no app processadas pela App Store, no iTunes, e no Google Play. Outros relatórios desse tipo podem ser gerados com a implementação de eventos sugeridos para apps de comércio eletrônico. No momento, os relatórios detalhados sobre o comportamento de compra (ou seja, comércio eletrônico avançado) estão disponíveis apenas nas propriedades do Universal Analytics.

Neste documento, descrevemos como usar o Gerenciador de tags para apps iOS com o SDK do Firebase e enviar dados de comércio eletrônico avançado para as propriedades do Universal Analytics. É preciso usar a mesma sintaxe de parâmetro e evento para definir o cenário de outros relatórios de comércio eletrônico no futuro.

Primeiras etapas

Antes de começar, configure estes pré-requisitos no seu app:

  1. Instale e configure o Firebase e o Gerenciador de tags do Google no seu app. Verifique se você está usando a versão 11 ou mais recente do SDK do Firebase para iOS.
  2. Configure uma variável definida pelo usuário no seu contêiner do Gerenciador de tags, chamada "promoções", com as seguintes configurações:
    • Tipo de evento: parâmetro personalizado
    • Chave do parâmetro do evento: promoções
    • Valor padrão: indefinido

Implementação

Nas seções a seguir, demonstramos como registrar eventos com os parâmetros necessários para avaliar as atividades de comércio eletrônico avançado, como:

Impressões do produto

Meça as impressões do produto registrando um evento com um parâmetro kFIRParameterItemID e definindo os campos relevantes para um ou mais itens (ou seja, produtos).

// 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];

Veja a configuração das tags para esse exemplo:

  • Tipo de tag: Universal Analytics
  • Tipo de acompanhamento: exibição de tela
  • Campos a serem definidos: (nome do campo) screenName (valor, por exemplo) Search Results Screen
  • Ativar os recursos de comércio eletrônico avançado: "true"
  • Ler dados de: evento do Firebase
  • Exemplo de acionador: (Personalizado > Alguns eventos) nome do evento igual a "view_search_results"

Cliques/seleções do produto

Meça os cliques nos produtos registrando um evento kFIREventSelectContent e definindo os campos relevantes para um item (ou seja, produto):

// 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];

Veja a configuração das tags para esse exemplo:

  • Tipo de tag: Universal Analytics
  • Tipo de acompanhamento: evento
  • Categoria do evento, por exemplo: E-commerce
  • Exemplo de ação do evento: clique no produto
  • Ativar os recursos de comércio eletrônico avançado: verdadeiro
  • Ler dados de: evento do Firebase
  • Exemplo de acionador: (Personalizado > Alguns eventos) nome do evento igual a "select_content", E {{promotions}} igual a "undefined"

Visualizações dos detalhes do produto

Meça as visualizações dos detalhes do produtos registrando um evento kFIREventViewItem e definindo os campos relevantes para um item (ou seja, produto):

// 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];

Veja a configuração das tags para esse exemplo:

  • Tipo de tag: Universal Analytics
  • Tipo de acompanhamento: exibição de tela
  • Campos a serem definidos: (nome do campo) screenName (valor, por exemplo) Product Details Screen
  • Ativar os recursos de comércio eletrônico avançado: "true"
  • Ler dados de: evento do Firebase
  • Exemplo de acionador: (Personalizado > Alguns eventos) nome do evento igual a "view_item" E
  • {{promotions}} igual a "undefined"

Adições ao carrinho

Meça as adições de produtos a um carrinho de compras registrando um evento kFIREventAddToCart e definindo os campos relevantes para um item (ou seja, produto):

/// 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];

Veja a configuração das tags para esse exemplo:

  • Tipo de tag: Universal Analytics
  • Tipo de acompanhamento: evento
  • Categoria do evento, por exemplo: E-commerce
  • Exemplo de ação do evento: adicionar ao carrinho
  • Ativar os recursos de comércio eletrônico avançado: verdadeiro
  • Ler dados de: evento do Firebase
  • Exemplo de acionador: (Personalizado > Alguns eventos) nome do evento igual a "add_to_cart"

Remoções do carrinho

Meça as remoções de produtos de um carrinho de compras registrando um evento kFIREventRemoveFromCart e definindo os campos relevantes para um item (ou seja, produto):

// 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];

Veja a configuração das tags para esse exemplo:

  • Tipo de tag: Universal Analytics
  • Tipo de acompanhamento: evento
  • Categoria do evento, por exemplo: E-commerce
  • Exemplo de ação do evento: remover do carrinho
  • Ativar os recursos de comércio eletrônico avançado: verdadeiro
  • Ler dados de: evento do Firebase
  • Exemplo de acionador: (Personalizado > Alguns eventos) nome do evento igual a "remove_from_cart"

Impressões da promoção

Meça as impressões da promoção registrando um evento kFIREventViewItem e definindo os campos relevantes para um item:

/// 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];

Veja a configuração das tags para esse exemplo:

  • Tipo de tag: Universal Analytics
  • Tipo de acompanhamento: evento
  • Categoria do evento, por exemplo: Promoção interna
  • Exemplo de ação do evento: Impressão
  • Hit sem interação: "true"
  • Ativar os recursos de comércio eletrônico avançado: verdadeiro
  • Ler dados de: evento do Firebase
  • Exemplo de acionador: (Personalizado > Alguns eventos) nome do evento igual a "view_item" E
  • {{promotions}} não é igual a "undefined"

Cliques/seleções da promoção

Meça os cliques na promoção registrando um evento kFIREventSelectContent e definindo os campos relevantes para uma promoção:

// 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];

Veja a configuração das tags para esse exemplo:

  • Tipo de tag: Universal Analytics
  • Tipo de acompanhamento: evento
  • Categoria do evento, por exemplo: Promoção interna
  • Exemplo de ação do evento: clique
  • Ativar os recursos de comércio eletrônico avançado: verdadeiro
  • Ler dados de: evento do Firebase
  • Exemplo de acionador: (Personalizado > Alguns eventos) nome do evento igual a "select_content", E {{promotions}&rbrace, não é igual a "undefined"

Processo de finalização de compra

Iniciar finalização de compra

Meça a primeira etapa de um processo de finalização de compra registrando um evento kFIREventBeginCheckout e definindo os campos relevantes para um ou mais itens (ou seja, produtos):

// 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];

Veja a configuração das tags para esse exemplo:

  • Tipo de tag: Universal Analytics
  • Tipo de acompanhamento: exibição de tela
  • Campos a serem definidos: (nome do campo) screenName (valor, por exemplo) Cart Screen
  • Ativar os recursos de comércio eletrônico avançado: verdadeiro
  • Ler dados de: evento do Firebase
  • Exemplo de acionador: (Personalizado > Alguns eventos) nome do evento igual a "begin_checkout"

Opções de finalização de compra

Com as opções de finalização de compra, é possível avaliar informações adicionais sobre o estado desse processo. Você pode medir essas opções como parte de um evento da etapa de finalização de compra (como mostrado acima) ou quando um usuário selecionar uma opção após o evento de uma determinada etapa de finalização de compra já ter sido registrado.

Meça as opções de finalização de compra depois de uma etapa desse processo registrando um evento kFIREventCheckoutProgress com os parâmetros correspondentes kFIRParameterCheckoutStep e kFIRParameterCheckoutOption:

// 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];

Veja a configuração das tags para esse exemplo:

  • Tipo da tag: Universal Analytics
  • Tipo de acompanhamento: evento
  • Exemplo da categoria do evento: comércio eletrônico
  • Exemplo de ação do evento: definir opção de finalização de compra
  • Ativar os recursos do comércio eletrônico avançado: verdadeiro
  • Ler dados de: evento do Firebase
  • Exemplo de acionador: (Personalizado > Alguns eventos) nome do evento igual a "set_checkout_option"

Compras

Meça as compras registrando um evento kFIREventEcommercePurchase e definindo os campos relevantes para um ou mais itens (ou seja, produtos):

// 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];

Veja a configuração das tags para esse exemplo:

  • Tipo de tag: Universal Analytics
  • Tipo de acompanhamento: exibição de tela
  • Campos a serem definidos: (nome do campo) screenName (valor, por exemplo) Thank You Screen
  • Ativar os recursos de comércio eletrônico avançado: "true"
  • Ler dados de: evento do Firebase
  • Exemplo de acionador: (Personalizado > Alguns eventos) nome do evento igual a "ecommerce_purchase"

Reembolsos

Meça reembolsos registrando um evento kFIREventPurchaseRefund com o ID da transação relevante especificado. Como opção, para reembolsos parciais, é possível definir os códigos e as quantidades de um ou mais itens (ou seja, produtos):

// (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];

Veja a configuração das tags para esse exemplo:

  • Tipo de tag: Universal Analytics
  • Tipo de acompanhamento: evento
  • Categoria do evento, por exemplo: E-commerce
  • Exemplo de ação do evento: reembolso
  • Ativar os recursos de comércio eletrônico avançado: verdadeiro
  • Ler dados de: evento do Firebase
  • Exemplo de acionador: (Personalizado > Alguns eventos) nome do evento igual a "purchase_refund"