E-commerce avanzato di Universal Analytics per Android

Google Analytics supporta l'e-commerce avanzato nelle proprietà Universal Analytics. L'E-commerce avanzato consente di misurare le interazioni degli utenti con i prodotti nell'esperienza di acquisto. Ciò può includere impressioni relative alle promozioni, clic sulle promozioni, impressioni del prodotto, clic sui prodotti, visualizzazioni dei dettagli del prodotto, aggiunta di articoli a un carrello degli acquisti, rimozione di articoli da un carrello degli acquisti, avvio di pagamenti, transazioni e rimborsi.

Le versioni più recenti di Google Tag Manager e Google Analytics per app mobile funzionano insieme a Firebase, la piattaforma delle app mobile di Google. Durante la misurazione delle app con l'SDK Firebase, hai accesso a una serie di report sulle app mobile generati automaticamente, che possono essere ulteriormente personalizzati e integrati dal codice in-app. Questi report includeranno automaticamente i dati sugli acquisti in-app elaborati dall'App Store su iTunes e Google Play. È possibile generare report aggiuntivi relativi all'e-commerce implementando gli eventi suggeriti per le app di e-commerce. I report approfonditi sul comportamento di acquisto (ad es. l'e-commerce avanzato) sono attualmente disponibili solo nelle proprietà Universal Analytics.

Questo documento descrive come utilizzare Tag Manager per le app mobile con l'SDK Firebase per inviare dati di e-commerce avanzato alle proprietà Universal Analytics.

Passaggi iniziali

Prima di iniziare, configura i seguenti prerequisiti per la tua app:

  1. Installa e configura Firebase e Google Tag Manager nella tua app. Assicurati di utilizzare la versione 11 o successiva dell'SDK Firebase per Android.
  2. Importa questi due pacchetti:

    • import com.google.firebase.analytics.FirebaseAnalytics.Event;
    • import com.google.firebase.analytics.FirebaseAnalytics.Param;
  3. Nel contenitore Tag Manager, crea una variabile definita dall'utente denominata "promozioni" con le seguenti impostazioni:

    • Tipo di evento: parametro personalizzato
    • Chiave parametro evento: promozioni
    • Valore predefinito: non definito

Implementazione

Le seguenti sezioni mostrano come registrare gli eventi con i parametri necessari per misurare le attività di e-commerce avanzato, ad esempio:

Impressioni del prodotto

Misura le impressioni dei prodotti registrando un evento con un parametro ITEM_LIST e uno o più articoli (ad es. prodotti) definiti con i campi pertinenti.

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

Vedi la configurazione dei tag per questo esempio:

  • Tipo di tag: Universal Analytics
  • Tipo di monitoraggio: visualizzazione di schermata
  • Campi da impostare: (Nome campo) screenName (valore, ad es.) Schermata dei risultati di ricerca
  • Attiva funzionalità e-commerce avanzate: True
  • Leggi i dati da: evento Firebase
  • Attivatore, ad esempio: (Personalizzato > Alcuni eventi) Nome evento è uguale a view_search_results

Clic/selezioni del prodotto

Misura i clic sui prodotti registrando un evento SELECT_CONTENT con un articolo (ad es. prodotto) definito con i campi pertinenti:

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

Vedi la configurazione dei tag per questo esempio:

  • Tipo di tag: Universal Analytics
  • Tipo di monitoraggio: Evento
  • Categoria evento, ad esempio: E-commerce
  • Azione evento, ad esempio: clic sul prodotto
  • Attiva funzionalità e-commerce avanzate: True
  • Leggi i dati da: evento Firebase
  • Attivatore, ad esempio: (Personalizzato > Alcuni eventi) Nome evento è uguale a select_content AND &lbrace;&lbrace;promotions&rbrace;&rbrace; è uguale a undefined

Viste dei dettagli dei prodotti

Misura le visualizzazioni dei dettagli del prodotto registrando un evento VIEW_ITEM con un articolo (ad es. prodotto) definito con i campi pertinenti:

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

Vedi la configurazione dei tag per questo esempio:

  • Tipo di tag: Universal Analytics
  • Tipo di monitoraggio: visualizzazione di schermata
  • Campi da impostare: (Nome campo) screenName (valore, ad es.) Schermata dei dettagli del prodotto
  • Attiva funzionalità e-commerce avanzate: True
  • Leggi i dati da: evento Firebase
  • Attivatore, ad esempio: (Personalizzato > Alcuni eventi) Nome evento è uguale a view_item AND
  • &lbrace;&lbrace;promotions&rbrace;&rbrace; è uguale a non definito

Aggiunte al carrello

Misura l'aggiunta di un prodotto al carrello degli acquisti registrando un evento ADD_TO_CART con un articolo (ad es. un prodotto) definito con i campi pertinenti:

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

Vedi la configurazione dei tag per questo esempio:

  • Tipo di tag: Universal Analytics
  • Tipo di monitoraggio: Evento
  • Categoria evento, ad esempio: E-commerce
  • Azione evento, ad esempio: Aggiungi al carrello
  • Attiva funzionalità e-commerce avanzate: True
  • Leggi i dati da: evento Firebase
  • Attivatore, ad esempio: (Personalizzato > Alcuni eventi) Nome evento è uguale a add_to_cart

Rimozioni dal carrello

Misura un prodotto che viene rimosso da un carrello degli acquisti registrando un evento REMOVE_FROM_CART con un articolo (ad es. un prodotto) definito con i campi pertinenti:

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

Vedi la configurazione dei tag per questo esempio:

  • Tipo di tag: Universal Analytics
  • Tipo di monitoraggio: Evento
  • Categoria evento, ad esempio: E-commerce
  • Azione evento, ad esempio: Rimuovi dal carrello
  • Attiva funzionalità e-commerce avanzate: True
  • Leggi i dati da: evento Firebase
  • Attivatore, ad esempio: (Personalizzato > Alcuni eventi) Nome evento è uguale a remove_from_cart

Impressioni promozione

Misura le impressioni della promozione registrando un evento VIEW_ITEM, VIEW_ITEM_LIST o VIEW_SEARCH_RESULTS con un articolo della promozione definito con i campi pertinenti:

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

Vedi la configurazione dei tag per questo esempio:

  • Tipo di tag: Universal Analytics
  • Tipo di monitoraggio: Evento
  • Categoria evento, ad esempio: Promozione interna
  • Azione evento, ad esempio: Impressione
  • Hit da non interazione: True
  • Attiva funzionalità e-commerce avanzate: True
  • Leggi i dati da: evento Firebase
  • Attivatore, ad esempio: (Personalizzato > Alcuni eventi) Nome evento è uguale a view_item AND
  • &lbrace;&lbrace;promotions&rbrace;&rbrace; non è uguale a non definito

Clic/selezioni su promozione

Misura i clic sulla promozione registrando un evento SELECT_CONTENT con una promozione definita con i campi pertinenti:

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

Vedi la configurazione dei tag per questo esempio:

  • Tipo di tag: Universal Analytics
  • Tipo di monitoraggio: Evento
  • Categoria evento, ad esempio: Promozione interna
  • Azione evento, ad esempio : Clic
  • Attiva funzionalità e-commerce avanzate: True
  • Leggi i dati da: evento Firebase
  • Attivatore, ad esempio: (Personalizzato > Alcuni eventi) Nome evento è uguale a select_content AND &lbrace;&lbrace;promotions&rbrace;&rbrace; non è uguale a undefined

Procedura di pagamento

Inizio procedura di pagamento

Misura il primo passaggio di una procedura di pagamento registrando un evento BEGIN_CHECKOUT con uno o più articoli (ad es. prodotti) definiti con i campi pertinenti:

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

Vedi la configurazione dei tag per questo esempio:

  • Tipo di tag: Universal Analytics
  • Tipo di monitoraggio: visualizzazione di schermata
  • Campi da impostare: (Nome campo) screenName (valore, ad es.) Schermata carrello
  • Attiva funzionalità e-commerce avanzate: True
  • Leggi i dati da: evento Firebase
  • Attivatore, ad esempio: (Personalizzato > Alcuni eventi) Nome evento è uguale a start_checkout

Passaggi di pagamento aggiuntivi

Misura i passaggi aggiuntivi di una procedura di pagamento registrando un evento CHECKOUT_PROGRESS con uno o più articoli (ad es. prodotti) definiti con i campi pertinenti:

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

Vedi la configurazione dei tag per questo esempio:

  • Tipo di tag: Universal Analytics
  • Tipo di monitoraggio: visualizzazione di schermata
  • Campi da impostare: (Nome campo) screenName (valore, ad es.) Passaggio 2 del pagamento Schermata
  • Attiva funzionalità e-commerce avanzate: True
  • Leggi i dati da: evento Firebase
  • Attivatore, ad esempio: (Personalizzato > Alcuni eventi) Nome evento è uguale a checkout_progress

Opzioni di checkout

Le opzioni di pagamento ti consentono di misurare informazioni aggiuntive sullo stato della procedura di pagamento. Puoi misurare le opzioni di pagamento nell'ambito di un evento di un passaggio di pagamento (come mostrato sopra) o quando un utente seleziona un'opzione dopo che l'evento per un determinato passaggio di pagamento è già stato registrato.

Misura le opzioni di pagamento dopo una fase di pagamento registrando un evento SET_CHECKOUT_OPTION con i parametri CHECKOUT_STEP e CHECKOUT_OPTION corrispondenti:

Bundle ecommerceBundle = new Bundle();
ecommerceBundle.putLong( Param.CHECKOUT_STEP, 2 );
ecommerceBundle.putString( Param.CHECKOUT_OPTION, "Mastercard" );
mFirebaseAnalytics.logEvent( Event.SET_CHECKOUT_OPTION, ecommerceBundle );

Vedi la configurazione dei tag per questo esempio:

  • Tipo di tag: Universal Analytics
  • Tipo di monitoraggio: Evento
  • Categoria evento, ad esempio: E-commerce
  • Azione evento, ad esempio: Imposta opzione di pagamento
  • Attiva funzionalità e-commerce avanzate: True
  • Leggi i dati da: evento Firebase
  • Attivatore, ad esempio: (Personalizzato > Alcuni eventi) Nome evento è uguale a set_checkout_option

Acquisti

Misura gli acquisti registrando un evento ECOMMERCE_PURCHASE con uno o più articoli (ad es. prodotti) definiti con i campi pertinenti:

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

Vedi la configurazione dei tag per questo esempio:

  • Tipo di tag: Universal Analytics
  • Tipo di monitoraggio: visualizzazione di schermata
  • Campi da impostare: (Nome campo) screenName (valore, ad es.) Schermata di ringraziamento
  • Attiva funzionalità e-commerce avanzate: True
  • Leggi i dati da: evento Firebase
  • Attivatore, ad esempio: (Personalizzato > Alcuni eventi) Nome evento è uguale a ecommerce_purchase

Rimborsi

Misura i rimborsi registrando un evento PURCHASE_REFUND con l'ID transazione pertinente specificato e, facoltativamente, (per i rimborsi parziali) uno o più articoli (ad es. prodotti) definiti con ID articolo e quantità:

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

Vedi la configurazione dei tag per questo esempio:

  • Tipo di tag: Universal Analytics
  • Tipo di monitoraggio: Evento
  • Categoria evento, ad esempio: E-commerce
  • Azione evento, ad esempio: rimborso
  • Attiva funzionalità e-commerce avanzate: True
  • Leggi i dati da: evento Firebase
  • Attivatore, ad esempio: (Personalizzato > Alcuni eventi) Nome evento è uguale a purchase_refund