O Google Analytics é compatível com o e-commerce avançado nas propriedades do Universal Analytics. Com esse recurso, é possível medir as interações dos usuários com produtos em toda a experiência de compra. Isso pode incluir cliques e impressões da promoção, cliques e impressões de produtos, visualizações de detalhes, adição ou remoção de itens em um carrinho de compras, início de pagamentos, transações e reembolsos.
As versões mais recentes do Gerenciador de tags do Google e do Analytics para dispositivos móveis funcionam com o Firebase, a plataforma de apps para dispositivos móveis do Google. Quando mede 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 aplicativo 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 e-commerce. No momento, os relatórios detalhados sobre o comportamento de compra (ou seja, e-commerce avançado) estão disponíveis apenas nas propriedades do Universal Analytics.
Neste documento, descrevemos como usar o Gerenciador de tags em apps para dispositivos móveis com o SDK do Firebase e enviar dados de e-commerce avançado às propriedades do Universal Analytics.
Primeiras etapas
Antes de mais nada, configure estes pré-requisitos no app:
- 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 Android.
Importe estes dois pacotes:
import com.google.firebase.analytics.FirebaseAnalytics.Event;
import com.google.firebase.analytics.FirebaseAnalytics.Param;
No contêiner do Gerenciador de tags, crie uma variável definida pelo usuário 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 abaixo, demonstramos como registrar eventos com os parâmetros necessários para medir as atividades de e-commerce avançado, por exemplo:
- Impressões do produto
- Cliques/seleções de produtos
- Visualizações dos detalhes do produto
- Adições ao carrinho
- Remoções do carrinho
- Impressões da promoção
- Cliques/seleções da promoção
- Processo de finalização de compra
- Compras
- Reembolsos
Impressões do produto
Meça as impressões do produto registrando um evento com um parâmetro ITEM_LIST
e definido os campos relevantes para um ou mais itens (ou seja, produtos).
// 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 );
Esta é a configuração das tags para esse exemplo:
- Tipo de tag: Universal Analytics
- Tipo de acompanhamento: exibição de tela
- Campos que vão ser definidos: (nome do campo) screenName (valor, por exemplo) Search Results Screen
- Ativar os recursos de e-commerce 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 de produtos
Meça os cliques nos produtos registrando um evento SELECT_CONTENT
e definindo os campos relevantes para um item (ou seja, produto):
// 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 );
Esta é a configuração das tags para esse exemplo:
- Tipo de tag: Universal Analytics
- Tipo de acompanhamento: evento
- Exemplo de categoria do evento: e-commerce
- Exemplo de ação do evento: clique no produto
- Ativar os recursos de e-commerce avançado: "true"
- 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 registrando um evento VIEW_ITEM
e definindo os campos relevantes para um item (ou seja, produto):
// 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 );
Esta é a configuração das tags para esse exemplo:
- Tipo de tag: Universal Analytics
- Tipo de acompanhamento: exibição de tela
- Campos que vão ser definidos: (nome do campo) screenName (valor, por exemplo) Product Details Screen
- Ativar os recursos de e-commerce 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 ADD_TO_CART
e definindo os campos relevantes para um item (ou seja, produto):
// 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 );
Esta é a configuração das tags para esse exemplo:
- Tipo de tag: Universal Analytics
- Tipo de acompanhamento: evento
- Exemplo de categoria do evento: e-commerce
- Exemplo de ação do evento: adicionar ao carrinho
- Ativar os recursos de e-commerce avançado: "true"
- 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 REMOVE_FROM_CART
e definindo os campos relevantes para um item (ou seja, produto):
// 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 );
Esta é a configuração das tags para esse exemplo:
- Tipo de tag: Universal Analytics
- Tipo de acompanhamento: evento
- Exemplo de categoria do evento: e-commerce
- Exemplo de ação do evento: remover do carrinho
- Ativar os recursos de e-commerce avançado: "true"
- 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 VIEW_ITEM
, VIEW_ITEM_LIST
ou VIEW_SEARCH_RESULTS
e definindo os campos relevantes para um item de promoção:
// 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 );
Esta é a configuração das tags para esse exemplo:
- Tipo de tag: Universal Analytics
- Tipo de acompanhamento: evento
- Exemplo de categoria do evento: promoção interna
- Exemplo de ação do evento: impressão
- Hit sem interação: "true"
- Ativar os recursos de e-commerce avançado: "true"
- 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
Avalie cliques na promoção registrando um evento SELECT_CONTENT
e definindo os campos relevantes para uma promoção:
// 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 );
Esta é a configuração das tags para esse exemplo:
- Tipo de tag: Universal Analytics
- Tipo de acompanhamento: evento
- Exemplo de categoria do evento: promoção interna
- Exemplo de ação do evento: clique
- Ativar os recursos de e-commerce avançado: "true"
- Ler dados de: evento do Firebase
- Exemplo de acionador: (Personalizado > Alguns eventos) Nome do evento igual a "select_content" E {{promotions}} não é igual a "undefined"
Processo de finalização de compra
Iniciar finalização de compra
Meça a primeira etapa do processo de pagamento registrando um evento BEGIN_CHECKOUT
e definindo os campos relevantes para um ou mais itens (ou seja, produtos):
// 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 );
Esta é a configuração das tags para esse exemplo:
- Tipo de tag: Universal Analytics
- Tipo de acompanhamento: exibição de tela
- Campos que vão ser definidos: (nome do campo) screenName (valor, por exemplo) Cart Screen
- Ativar os recursos de e-commerce avançado: "true"
- Ler dados de: evento do Firebase
- Exemplo de acionador: (Personalizado > Alguns eventos) nome do evento igual a "begin_checkout"
Etapas adicionais de finalização de compra
Meça etapas extras em um processo de pagamento registrando um evento CHECKOUT_PROGRESS
e definindo os campos relevantes para um ou mais itens (ou seja, produtos):
// 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 );
Esta é a configuração das tags para esse exemplo:
- Tipo de tag: Universal Analytics
- Tipo de acompanhamento: exibição de tela
- Campos que vão ser definidos: (nome do campo) screenName (valor, por exemplo) Checkout Step 2 Screen
- Ativar os recursos de e-commerce avançado: "true"
- Ler dados de: evento do Firebase
- Exemplo de acionador: (Personalizado > Alguns eventos) nome do evento igual a "checkout_progress"
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 as opções como parte de um evento de etapa do pagamento (como mostrado acima) ou quando um usuário seleciona uma opção após o evento de uma determinada etapa já ter sido registrado.
Meça as opções de finalização de compra após uma etapa desse processo registrando um evento SET_CHECKOUT_OPTION
com os parâmetros correspondentes CHECKOUT_STEP
e CHECKOUT_OPTION
:
Bundle ecommerceBundle = new Bundle();
ecommerceBundle.putLong( Param.CHECKOUT_STEP, 2 );
ecommerceBundle.putString( Param.CHECKOUT_OPTION, "Mastercard" );
mFirebaseAnalytics.logEvent( Event.SET_CHECKOUT_OPTION, ecommerceBundle );
Esta é a configuração das tags para esse exemplo:
- Tipo de tag: Universal Analytics
- Tipo de acompanhamento: evento
- Exemplo de categoria do evento: e-commerce
- Exemplo de ação do evento: definir opção de finalização de compra
- Ativar os recursos de e-commerce avançado: "true"
- 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 ECOMMERCE_PURCHASE
e definindo os campos relevantes para um ou mais itens (ou seja, produtos):
// 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 );
Esta é a configuração das tags para esse exemplo:
- Tipo de tag: Universal Analytics
- Tipo de acompanhamento: exibição de tela
- Campos que vão ser definidos: (nome do campo) screenName (valor, por exemplo) Thank You Screen
- Ativar os recursos de e-commerce 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 PURCHASE_REFUND
com o ID da transação relevante especificado. Para reembolsos parciais, é possível definir os IDs e as quantidades de um ou mais itens (ou seja, produtos):
// 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 );
Esta é a configuração das tags para esse exemplo:
- Tipo de tag: Universal Analytics
- Tipo de acompanhamento: evento
- Exemplo de categoria do evento: e-commerce
- Exemplo de ação do evento: reembolso
- Ativar os recursos de e-commerce avançado: "true"
- Ler dados de: evento do Firebase
- Exemplo de acionador: (Personalizado > Alguns eventos) nome do evento igual a "purchase_refund"