Android v4 - E-commerce avanzato

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:

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 di productFieldObjects

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 di productFieldObjects

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 di productFieldObjects

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:

  1. Misura ogni passaggio della procedura di pagamento utilizzando l'azione checkout.
  2. Se applicabile, misura le opzioni di pagamento utilizzando l'azione checkout_option.
  3. (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 di productFieldObjects

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.

Configurazione dell'e-commerce nell'interfaccia di amministrazione di Google Analytics. Una canalizzazione
 di pagamento è definita in quattro passaggi: 1. Carrello delle recensioni, 2. Raccogliere i dati di pagamento, 3. Conferma i dettagli dell'acquisto, 4. Ricevuta.
Figura 1: configurazione e-commerce, canalizzazione di pagamento.

Misurazione degli acquisti

  • Misurazione e-commerce: purchase
  • Accetta dati: id (ID transazione), array di productFieldObjects

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 di productFieldObjects

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