E-commerce avançado do Universal Analytics para Android

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:

  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 Android.
  2. Importe estes dois pacotes:

    • import com.google.firebase.analytics.FirebaseAnalytics.Event;
    • import com.google.firebase.analytics.FirebaseAnalytics.Param;
  3. 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

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 &lbrace;&lbrace;promotions&rbrace;&rbrace; 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
  • &lbrace;&lbrace;promotions&rbrace;&rbrace; 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
  • &lbrace;&lbrace;promotions&rbrace;&rbrace; 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 &lbrace;&lbrace;promotions&rbrace;&rbrace; 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"