Questa guida descrive come implementare le funzionalità di e-commerce avanzato di Universal Analytics utilizzando l'SDK di Google Tag Manager per Android.
Panoramica
L'E-commerce avanzato di Google Analytics consente di inviare i dati sulle impressioni, sulle promozioni e sulle vendite dei prodotti con qualsiasi visualizzazione di schermata ed evento di Google Analytics.
Prima di iniziare
Ti consigliamo di consultare la sezione Azioni e tipi di dati per l'e-commerce avanzato della Guida allo sviluppo per l'e-commerce avanzato di Google Analytics (web) per aiutarti a pianificare l'implementazione. La guida ti aiuterà a capire quali campi sono obbligatori e facoltativi per ogni interazione e-commerce da misurare.
Implementazione
Le seguenti sezioni mostrano come utilizzare il livello dati per misurare le seguenti attività di e-commerce avanzato:
- Impressioni del prodotto
- Selezionazioni/clic dei prodotti
- Impressioni dei dettagli del prodotto
- Aggiunta / rimozione dal carrello
- Impressioni delle promozioni
- Selezionazioni/clic delle promozioni
- Pagamento
- Acquisti
- Rimborsi
Misurazione delle impressioni dei prodotti
- Misurazione e-commerce:
impressions
- Accetta dati: array di
impressionFieldObjects
Misura le impressioni del prodotto utilizzando l'azione impression
e una o più impressionFieldObjects
. L'esempio seguente presuppone che i dettagli sui prodotti mostrati siano noti al momento della visualizzazione della schermata:
// Product impressions are sent by pushing an impressions object // containing one or more impressionFieldObjects. dataLayer.push("ecommerce", DataLayer.mapOf( "currencyCode", "EUR", // Local currency is optional. "impressions", DataLayer.listOf( DataLayer.mapOf( "name", "Triblend Android T-Shirt", // Name or ID is required. "id", "12345", "price", "15.25", "brand", "Google", "category", "Apparel", "variant", "Gray", "list", "Search Results", "position", 1), DataLayer.mapOf( "name", "Donut Friday Scented T-Shirt", "id", "67890", "price", "33.75", "brand", "Google", "category", "Apparel", "variant", "Black", "list", "Search Results", "position", 2))));
Misurazione di selezioni/clic dei prodotti
- Misurazione e-commerce:
click
- Accetta dati:
list
, array diproductFieldObjects
Misura le selezioni dei prodotti eseguendo il push di un'azione click
al livello dati, insieme a un valore productFieldObject
per rappresentare il prodotto selezionato:
dataLayer.pushEvent("productClick", DataLayer.mapOf( "ecommerce", DataLayer.mapOf( "click", DataLayer.mapOf( "actionField", DataLayer.mapOf( "list", "Search Results"), // Optional list property. "products", DataLayer.listOf( DataLayer.mapOf( "name", "Triblend Android T-Shirt", // Name or ID is required. "id", "12345", "price", "15.25", "brand", "Google", "category", "Apparel", "variant", "Gray"))))));
Misurazione delle visualizzazioni dei dettagli dei prodotti
- Misurazione e-commerce:
detail
- Accetta dati:
list
, array diproductFieldObjects
Misura una visualizzazione dei dettagli del prodotto eseguendo il push di un'azione detail
al livello dati, insieme a uno o più productFieldObjects
che rappresentano i prodotti visualizzati:
// Measure a view of product details. dataLayer.push("ecommerce", DataLayer.mapOf( "detail", DataLayer.mapOf( "actionField", DataLayer.mapOf( "list", "Apparel Gallery"), // detail actions have an optional list property. "products", DataLayer.listOf( DataLayer.mapOf( "name", "Triblend Android T-Shirt", // Name or ID is required. "id", "12345", "price", "15.25", "brand", "Google", "category", "Apparel", "variant", "Gray")))));
Misurazione delle aggiunte o delle rimozioni dal carrello degli acquisti
- Misurazione e-commerce:
add
,remove
- Accetta dati:
list
, array diproductFieldObjects
Misura le aggiunte o le rimozioni da un carrello degli acquisti utilizzando un actionFieldObject
add
o remove
e un elenco di productFieldObjects
:
Aggiunta di un prodotto al carrello degli acquisti
// Measure adding a product to a shopping cart by using an "add" // actionFieldObject and a list of productFieldObjects. dataLayer.pushEvent("addToCart", DataLayer.mapOf( "ecommerce", DataLayer.mapOf( "currencyCode", "EUR", "add", DataLayer.mapOf( // 'add' actionFieldObject measures. "products", DataLayer.listOf( DataLayer.mapOf( "name", "Triblend Android T-Shirt", "id", "12345", "price", "15.25", "brand", "Google", "category", "Apparel", "variant", "Gray", "quantity", 1))))));
Rimozione di un prodotto da un carrello degli acquisti
// Measure the removal of a product from a shopping cart. dataLayer.pushEvent("removeFromCart", DataLayer.mapOf( "ecommerce", DataLayer.mapOf( "remove", DataLayer.mapOf( // 'remove' actionFieldObject measures. "products", DataLayer.listOf( DataLayer.mapOf( "name", "Triblend Android T-Shirt", "id", "12345", "price", "15.25", "brand", "Google", "category", "Apparel", "variant", "Gray", "quantity", 1))))));
Misurazione delle promozioni
Puoi misurare sia le impressioni sia le selezioni per le promozioni interne di app, ad esempio i banner visualizzati nell'app per pubblicizzare uno sconto su un determinato sottoinsieme di prodotti o un'offerta per la spedizione gratuita.
Misurazione delle impressioni della promozione
- Misurazione e-commerce:
promoView
- Accetta dati: array di
promoFieldObjects
Per misurare un'impressione di promozione, imposta la chiave promoView
nel
livello dati di e-commerce su un valore promoFieldObject
che descriva le
promozioni mostrate agli utenti sullo schermo:
// An example of measuring promotion views. This example assumes that // information about the promotions displayed is available when the screen is // displayed. dataLayer.push("ecommerce", DataLayer.mapOf( "promoView", DataLayer.mapOf( "promotions", DataLayer.listOf( // List of promoFieldObjects. DataLayer.mapOf( "id", "JUNE_PROMO13", // ID or Name is required. "name", "June Sale", "creative", "banner1", "position", "slot1"), DataLayer.mapOf( "id", "FREE_SHIP13", "name", "Free Shipping Promo", "creative", "skyscraper1", "position", "slot2")))));
Misurazione di selezioni/clic su promozioni
Per misurare la selezione di una promozione, esegui il push dell'azione promoClick
al livello dati con un array contenente un promoFieldObject
che descriva la promozione selezionata:
dataLayer.pushEvent("promotionClick", DataLayer.mapOf( "ecommerce", DataLayer.mapOf( "promoClick", DataLayer.mapOf( "promotions", DataLayer.listOf( DataLayer.mapOf( "id", "JUNE_PROMO13", // Name or ID is required. "name", "June Sale", "creative", "banner1", "position", "slot1"))))));
Misurazione di una procedura di pagamento
Per misurare ogni passaggio di una procedura di pagamento, devi:
- Misura ogni passaggio della procedura di pagamento utilizzando l'azione
checkout
. - Se applicabile, misura le opzioni di pagamento utilizzando
l'azione
checkout_option
. - (Facoltativo) Imposta nomi dei passaggi facili da usare per il report sulla canalizzazione di pagamento configurando Impostazioni e-commerce nella sezione Amministrazione dell'interfaccia web.
1. Misurazione dei passaggi di pagamento
- Misurazione e-commerce:
checkout
- Accetta dati:
step
, array diproductFieldObjects
Per misurare la procedura di pagamento, che potrebbe includere un pulsante di pagamento e una o più schermate di pagamento in cui gli utenti inseriscono i dati di spedizione e pagamento, utilizza l'azione checkout
e il campo step
per indicare in quale fase della procedura di pagamento viene misurata la misurazione.
Puoi anche utilizzare il campo option
per fornire dati aggiuntivi sulla procedura di pagamento, ad esempio il tipo di pagamento selezionato dall'utente.
dataLayer.pushEvent("checkout", DataLayer.mapOf( "ecommerce", DataLayer.mapOf( "checkout", DataLayer.mapOf( "actionField", DataLayer.mapOf( "step", 1, "option", "Visa"), "products", DataLayer.listOf( DataLayer.mapOf( "name", "Triblend Android T-Shirt", "id", "12345", "price", "15.25", "brand", "Google", "category", "Apparel", "variant", "Gray", "quantity", 1))))));
2. Misurazione delle opzioni di pagamento
- Misurazione e-commerce:
checkout_option
- Accetta dati:
step
,option
L'opzione di pagamento è utile nei casi in cui hai già misurato un
passaggio di pagamento, ma vuoi acquisire informazioni aggiuntive sullo stesso
passaggio di pagamento. Ad esempio, il metodo di spedizione selezionato da un utente.
Per misurare questa metrica, utilizza l'azione checkout_option
insieme ai campi step
e option
.
dataLayer.pushEvent("checkoutOption", DataLayer.mapOf( "ecommerce", DataLayer.mapOf( "checkout_option", DataLayer.mapOf( "products", DataLayer.listOf(), // checkout_option expects a list of products. The workaround is to provide an empty list. "actionField", DataLayer.mapOf( "step", 1, "option", "Express")))));
3. Configurazione della canalizzazione di pagamento
Facoltativamente, a ogni passaggio della procedura di pagamento può essere assegnato un nome descrittivo che verrà utilizzato nei report. Per configurare questi nomi, visita la sezione Amministrazione dell'interfaccia web di Google Analytics, seleziona la vista (profilo) e fai clic su Impostazioni e-commerce. Segui le istruzioni di configurazione dell'e-commerce per etichettare ogni passaggio di pagamento che vuoi monitorare.
Misurazione degli acquisti
- Misurazione e-commerce:
purchase
- Accetta dati:
id
(ID transazione), array diproductFieldObjects
Esegui il push dei dettagli della transazione nel livello dati utilizzando l'azione purchase
, insieme a un event
che attiverà un tag abilitato per l'e-commerce avanzato. In questo esempio, i dettagli della transazione sono noti al momento della visualizzazione della schermata:
// Send transaction data with a screenview if possible. // Otherwise, use an event when the transaction data becomes available. dataLayer.push("ecommerce", DataLayer.mapOf( "purchase", DataLayer.mapOf( "actionField", DataLayer.mapOf( "id", "T12345", // Transaction ID. Required for purchases and refunds. "affiliation", "Online Store", "revenue", "35.43", // Total transaction value (incl. tax and shipping) "tax", "4.90", "shipping", "5.99", "coupon", "SUMMER_SALE"), "products", DataLayer.listOf( // List of productFieldObjects. DataLayer.mapOf( "name", "Triblend Android T-Shirt", // Name or ID is required. "id", "12345", "price", "15.25", "brand", "Google", "category", "Apparel", "variant", "Gray", "quantity", 1, "coupon", ""), // Optional fields may be omitted or set to empty string. DataLayer.mapOf( "name", "Donut Friday Scented T-Shirt", "id", "67890", "price", "33.75", "brand", "Google", "category", "Apparel", "variant", "Black", "quantity", 1)))));
Misurazione dei rimborsi
- Misurazione e-commerce:
refund
- Accetta dati:
id
(ID transazione), array diproductFieldObjects
Per misurare il rimborso completo di una transazione, invia un
refund
actionFieldObject
insieme all'ID
transazione della transazione rimborsata:
// Refund an entire transaction by providing the transaction ID. This example // assumes the details of the completed refund are available when the screen // is displayed. dataLayer.push("ecommerce", DataLayer.mapOf( "refund", DataLayer.mapOf( "products", DataLayer.listOf(), // refund expects a list of products. The workaround is to provide an empty list. "actionField", DataLayer.mapOf( "id", "T12345")))); // Transaction ID. Required for refunds.
Per misurare un rimborso parziale, aggiungi un elenco di
productFieldObjects
, inclusi gli ID prodotto e le quantità
rimborsate:
// Measure a partial refund by providing an array of productFieldObjects and // specifying the ID and quantity of each product being returned. This example // assumes the partial refund details are known at the time the screen is // displayed: dataLayer.push("ecommerce", DataLayer.mapOf( "refund", DataLayer.mapOf( "products", DataLayer.listOf( DataLayer.mapOf( "id", "P4567", "quantity", 1), // Product ID & quantity. Required for partial refunds. DataLayer.mapOf( "id", "P8901", "quantity", 2)), "actionField", DataLayer.mapOf( "id", "T12345")))); // Transaction ID.
Combinazione di impressioni e azioni
Nei casi in cui tu abbia sia le impressioni del prodotto sia un'azione, puoi combinare e misurare questi dati in un unico hit.
L'esempio seguente mostra come misurare una visualizzazione dei dettagli del prodotto con le impressioni del prodotto da una sezione dei prodotti correlati:
dataLayer.push("ecommerce", DataLayer.mapOf( "impressions", DataLayer.listOf( DataLayer.mapOf( "name", "Triblend Android T-Shirt", // Name or ID is required. "id", "12345", "price", "15.25", "brand", "Google", "category", "Apparel", "variant", "Gray", "list", "Related Products", "position", 1), DataLayer.mapOf( "name", "Donut Friday Scented T-Shirt", "id", "67890", "price", "33.75", "brand", "Google", "category", "Apparel", "variant", "Black", "list", "Related Products", "position", 2)), "detail", DataLayer.mapOf( "actionField", DataLayer.mapOf( "list", "Apparel Gallery"), // 'detail' actions have an optional list property. "products", DataLayer.listOf( DataLayer.mapOf( "name", "Triblend Android T-Shirt", // Name or ID is required. "id", "12345", "price", "15.25", "brand", "Google", "category", "Apparel", "variant", "Gray")))));