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:
- Installa e configura Firebase e Google Tag Manager nella tua app. Assicurati di utilizzare la versione 11 o successiva dell'SDK Firebase per Android.
Importa questi due pacchetti:
import com.google.firebase.analytics.FirebaseAnalytics.Event;
import com.google.firebase.analytics.FirebaseAnalytics.Param;
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
- Clic/selezioni sui prodotti
- Viste dei dettagli del prodotto
- Aggiunte al carrello
- Rimozioni dal carrello
- Impressioni promozione
- Clic/selezioni delle promozioni
- Procedura di pagamento
- Acquisti
- Rimborsi
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 {{promotions}} è 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
- {{promotions}} è 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
- {{promotions}} 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 {{promotions}} 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