Questa guida descrive come implementare le funzionalità di E-commerce avanzato di Universal Analytics utilizzando Google Tag Manager su un sito web.
Panoramica
L'E-commerce avanzato di Google Analytics consente di inviare i dati sulle impressioni dei prodotti, sulle promozioni e sulle vendite con qualsiasi visualizzazione di pagina ed evento di Google Analytics. Utilizza le visualizzazioni di pagina per monitorare le impressioni e gli acquisti dei prodotti e gli eventi per monitorare i passaggi di pagamento e i clic del prodotto.
Prima di iniziare
Ti consigliamo di consultare la sezione Azioni e tipi di dati per l'e-commerce avanzato della Guida per sviluppatori di e-commerce avanzato per aiutarti a pianificare l'implementazione. Questa guida ti aiuterà a capire quali campi sono obbligatori e facoltativi per ciascuna delle interazioni e-commerce da misurare.
Attivazione dell'E-commerce avanzato
Nella maggior parte delle implementazioni, devi attivare l'E-commerce avanzato su ogni visualizzazione di pagina o tag evento di Universal Analytics. Per attivare l'E-commerce avanzato sono disponibili due opzioni nella schermata dell'editor di tag dell'interfaccia web:
- Implementazione utilizzando il livello dati (consigliato)
- Implementazione utilizzando una macro JavaScript personalizzata
Sebbene entrambi i metodi forniscano funzionalità di e-commerce equivalenti, consigliamo a tutti i siti web che supportano un livello dati di utilizzare il metodo del livello dati. Questa guida presenta il metodo del livello dati come predefinito, mentre alla fine della guida è descritto l'utilizzo di una macro JavaScript personalizzata.
Utilizzo del livello dati
Le seguenti sezioni mostrano come utilizzare il livello dati per misurare le seguenti attività di e-commerce avanzato:
- Impressioni del prodotto
- Clic sui prodotti
- Impressioni dei dettagli del prodotto
- Aggiungi / rimuovi dal carrello
- Impressioni delle promozioni
- Clic promozione
- Pagamento
- Acquisti
- Rimborsi
Cancellazione dell'oggetto e-commerce
Ti consigliamo di utilizzare il comando seguente per cancellare l'oggetto e-commerce prima di eseguire il push di un evento di e-commerce al livello dati. La cancellazione dell'oggetto impedirà a più eventi e-commerce di una pagina di influire gli uni sugli altri.
dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.
Misurazione delle impressioni dei prodotti
- Misurazione e-commerce:
impressions
- Accetta dati: array di
impressionFieldObjects
Misura le impressioni dei prodotti utilizzando l'azione impression
e una o più
impressionFieldObjects
. L'esempio seguente presuppone che i dettagli relativi ai prodotti visualizzati in una pagina siano noti al momento del caricamento della pagina:
<script> // Measures product impressions and also tracks a standard // pageview for the tag configuration. // Product impressions are sent by pushing an impressions object // containing one or more impressionFieldObjects. dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object. dataLayer.push({ 'ecommerce': { 'currencyCode': 'EUR', // Local currency is optional. 'impressions': [ { '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 }, { 'name': 'Donut Friday Scented T-Shirt', 'id': '67890', 'price': '33.75', 'brand': 'Google', 'category': 'Apparel', 'variant': 'Black', 'list': 'Search Results', 'position': 2 }] } }); </script>
Misurazione dei clic sui prodotti
- Misurazione e-commerce:
click
- Accetta dati:
list
, array diproductFieldObjects
Misura i clic sui link dei prodotti inviando un'azione click
al livello dati, insieme a un valore productFieldObject
per rappresentare il prodotto selezionato, come in questo esempio:
<script> /** * Call this function when a user clicks on a product link. This function uses the event * callback datalayer variable to handle navigation after the ecommerce data has been sent * to Google Analytics. * @param {Object} productObj An object representing a product. */ function(productObj) { dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object. dataLayer.push({ 'event': 'productClick', 'ecommerce': { 'click': { 'actionField': {'list': 'Search Results'}, // Optional list property. 'products': [{ 'name': productObj.name, // Name or ID is required. 'id': productObj.id, 'price': productObj.price, 'brand': productObj.brand, 'category': productObj.cat, 'variant': productObj.variant, 'position': productObj.position }] } }, 'eventCallback': function() { document.location = productObj.url } }); } </script>
Misurazione delle visualizzazioni dei dettagli del prodotto
- Misurazione e-commerce:
detail
- Accetta dati:
list
, array diproductFieldObjects
Misura una visualizzazione dei dettagli del prodotto trasferendo un'azione detail
al livello dati, insieme a uno o più productFieldObjects
che rappresentano i prodotti visualizzati:
<script> // Measure a view of product details. This example assumes the detail view occurs on pageload, // and also tracks a standard pageview of the details page. dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object. dataLayer.push({ 'ecommerce': { 'detail': { 'actionField': {'list': 'Apparel Gallery'}, // 'detail' actions have an optional list property. 'products': [{ 'name': 'Triblend Android T-Shirt', // Name or ID is required. 'id': '12345', 'price': '15.25', 'brand': 'Google', 'category': 'Apparel', 'variant': 'Gray' }] } } }); </script>
Misurazione di aggiunte o rimozioni dal carrello degli acquisti
- Misurazione dell'e-commerce:
add
,remove
- Accetta dati:
list
, array diproductFieldObjects
Allo stesso modo, puoi misurare 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 a un carrello degli acquisti
// Measure adding a product to a shopping cart by using an 'add' actionFieldObject // and a list of productFieldObjects. dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object. dataLayer.push({ 'event': 'addToCart', 'ecommerce': { 'currencyCode': 'EUR', 'add': { // 'add' actionFieldObject measures. 'products': [{ // adding a product to a shopping cart. '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.push({ ecommerce: null }); // Clear the previous ecommerce object. dataLayer.push({ 'event': 'removeFromCart', 'ecommerce': { 'remove': { // 'remove' actionFieldObject measures. 'products': [{ // removing a product to a shopping cart. '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 che i clic sulle promozioni interne al sito, ad esempio i banner visualizzati sul sito stesso che pubblicizzano una vendita su un determinato sottoinsieme di prodotti o un'offerta di spedizione gratuita.
Misurazione delle impressioni delle promozioni
- Misurazione e-commerce:
promoView
- Accetta dati: array di
promoFieldObjects
Per misurare un'impressione di promozione, imposta la chiave promoView
nella variabile del livello dati di e-commerce
su promoFieldObject
che descrive le promozioni mostrate agli utenti nella pagina:
<script> // An example of measuring promotion views. This example assumes that // information about the promotions displayed is available when the page loads. dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object. dataLayer.push({ 'ecommerce': { 'promoView': { 'promotions': [ // Array of promoFieldObjects. { 'id': 'JUNE_PROMO13', // ID or Name is required. 'name': 'June Sale', 'creative': 'banner1', 'position': 'slot1' }, { 'id': 'FREE_SHIP13', 'name': 'Free Shipping Promo', 'creative': 'skyscraper1', 'position': 'slot2' }] } } }); </script>
Misurazione dei clic sulle promozioni
Per misurare un clic su una promozione, invia l'azione promoClick
al livello dati
con un array contenente un promoFieldObject
che descriva la promozione selezionata:
<script> /** * Call this function when a user clicks on a promotion. This function uses the eventCallBack * datalayer variable to handle navigation after the ecommerce data is sent to Google Analytics. * * @param {Object} promoObj An object representing an internal site promotion. */ function onPromoClick(promoObj) { dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object. dataLayer.push({ 'event': 'promotionClick', 'ecommerce': { 'promoClick': { 'promotions': [ { 'id': promoObj.id, // Name or ID is required. 'name': promoObj.name, 'creative': promoObj.creative, 'position': promoObj.pos }] } }, 'eventCallback': function() { document.location = promoObj.destinationUrl; } }); } </script>
Misurazione di un 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 di passaggi intuitivi 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ù pagine di pagamento in cui gli utenti inseriscono i dati di spedizione e pagamento, utilizza l'azione checkout
e il campo step
per indicare la fase della procedura di pagamento che viene misurata.
Puoi utilizzare il campo option
anche per fornire altri dati sulla pagina, come il tipo di pagamento selezionato dall'utente.
<script> /** * A function to handle a click on a checkout button. This function uses the eventCallback * data layer variable to handle navigation after the ecommerce data has been sent to Google Analytics. */ function onCheckout() { dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object. dataLayer.push({ 'event': 'checkout', 'ecommerce': { 'checkout': { 'actionField': {'step': 1, 'option': 'Visa'}, 'products': [{ 'name': 'Triblend Android T-Shirt', 'id': '12345', 'price': '15.25', 'brand': 'Google', 'category': 'Apparel', 'variant': 'Gray', 'quantity': 1 }] } }, 'eventCallback': function() { document.location = 'checkout.html'; } }); } </script>
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 ulteriori informazioni sullo stesso
passaggio. ad esempio il metodo di spedizione selezionato da un utente.
Per misurare questa situazione, utilizza l'azione checkout_option
insieme ai campi step
e option
.
<script> /** * A function to handle a click leading to a checkout option selection. */ function onCheckoutOption(step, checkoutOption) { dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object. dataLayer.push({ 'event': 'checkoutOption', 'ecommerce': { 'checkout_option': { 'actionField': {'step': step, 'option': checkoutOption} } } }); } </script>
3. Configurazione della canalizzazione di pagamento
Se vuoi, 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 intendi monitorare.
Misurazione degli acquisti
- Misurazione e-commerce:
purchase
- Accetta dati:
id
(ID transazione), array diproductFieldObjects
Invia i dettagli della transazione al 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 del caricamento della pagina e verranno inviati con una visualizzazione di pagina quando lo script gtm.js
restituisce:
<script> // Send transaction data with a pageview if available // when the page loads. Otherwise, use an event when the transaction // data becomes available. dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object. dataLayer.push({ 'ecommerce': { 'purchase': { 'actionField': { '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': [{ // List of productFieldObjects. '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. }, { 'name': 'Donut Friday Scented T-Shirt', 'id': '67890', 'price': '33.75', 'brand': 'Google', 'category': 'Apparel', 'variant': 'Black', 'quantity': 1 }] } } }); </script>
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:
<script> // Refund an entire transaction by providing the transaction ID. This example assumes the details // of the completed refund are available when the page loads: dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object. dataLayer.push({ 'ecommerce': { 'refund': { 'actionField': {'id': 'T12345'} // Transaction ID. Required for purchases and refunds. } } }); </script>
Per misurare un rimborso parziale, aggiungi un elenco di
productFieldObjects
, inclusi gli ID prodotto e le quantità rimborsate:
<script> // 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 page loads: dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object. dataLayer.push({ 'ecommerce': { 'refund': { 'actionField': {'id': 'T12345'}, // Transaction ID. 'products': [ {'id': 'P4567', 'quantity': 1}, // Product ID and quantity. Required for partial refunds. {'id': 'P8901','quantity': 2} ] } } }); </script>
Passaggio delle dimensioni personalizzate basate sui prodotti
Per passare una dimensione personalizzata basata sui prodotti all'oggetto e-commerce, utilizza la seguente notazione per aggiungerla al prodotto:
dimensionn
dove n
è un numero naturale, ad esempio:
<script> dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object. dataLayer.push({ 'ecommerce': { 'purchase': { ... 'products': [{ 'name': 'Triblend Android T-Shirt', 'id': '12345', 'price': '15.25', 'brand': 'Google', 'category': 'Apparel', 'variant': 'Gray', 'dimension1': 'Same day delivery' }] } } }); </script>
Passaggio di metriche personalizzate basate sui prodotti
Per passare una metrica personalizzata basata sui prodotti all'oggetto e-commerce, utilizza la seguente notazione per aggiungerla al prodotto:
metricn
dove n
è un numero naturale, ad esempio:
<script> dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object. dataLayer.push({ 'ecommerce': { 'purchase': { ... 'products': [{ 'name': 'Goal Flow Garden Hose', 'id': 'p001', 'brand': 'Google Analytics', 'category': 'Home Goods', 'variant': 'Green', 'price': '20', 'quantity': 1, 'metric3': '10' // Custom metric 'Cost' }] } } }); </script>
Combinazione di impressioni e azioni
Nei casi in cui sono presenti sia impressioni del prodotto sia un'azione, è possibile combinarle e misurarle in un unico hit.
L'esempio seguente mostra come misurare una visualizzazione dei dettagli del prodotto con impressioni del prodotto da una sezione dei prodotti correlati:
<script> dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object. dataLayer.push({ 'ecommerce': { 'impressions': [ { '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 }, { 'name': 'Donut Friday Scented T-Shirt', 'id': '67890', 'price': '33.75', 'brand': 'Google', 'category': 'Apparel', 'variant': 'Black', 'list': 'Related Products', 'position': 2 }], 'detail': { 'actionField': {'list': 'Apparel Gallery'}, // 'detail' actions have an optional list property. 'products': [{ 'name': 'Triblend Android T-Shirt', // Name or ID is required. 'id': '12345', 'price': '15.25', 'brand': 'Google', 'category': 'Apparel', 'variant': 'Gray' }] } } }); </script>
Utilizzo di una macro JavaScript personalizzata
Se il tuo sito web non supporta un livello dati, puoi utilizzare una macro JavaScript personalizzata per chiamare una funzione che restituisca l'oggetto dati di e-commerce. Questo oggetto deve utilizzare la sintassi del livello dati mostrata in precedenza in questa guida, ad esempio:
// A custom JavaScript macro that returns an ecommerceData object // that follows the data layer syntax. function() { var ecommerceData = { 'ecommerce': { 'purchase': { 'actionField': {'id': 'T12345'}, 'products': [ // List of productFieldObjects ], ... // Rest of the code should follow the data layer syntax. } }; return ecommerceData; }
Se scegli di utilizzare una macro JavaScript personalizzata anziché il livello dati, seleziona Attiva le funzionalità di e-commerce avanzate e imposta l'opzione Leggi i dati dalla macro.