Android Version 4 – Erweiterter E-Commerce

In diesem Leitfaden wird beschrieben, wie Sie die erweiterten E-Commerce-Funktionen von Universal Analytics mit dem Google Tag Manager SDK für Android implementieren.

Überblick

Mit den erweiterten E-Commerce-Berichten von Google Analytics können Daten zu Produktimpressionen, Werbeaktionen und Verkäufen zusammen mit Ihren Google Analytics-Bildschirmaufrufen und -Ereignissen gesendet werden.

Vorbereitung

Wir empfehlen Ihnen, den Abschnitt Erweiterte E-Commerce-Datentypen und -Aktionen im Entwicklerhandbuch zu erweiterten E-Commerce-Berichten für Google Analytics (Web) zu lesen, um Ihre Implementierung zu planen. In diesem Leitfaden erfahren Sie, welche Felder für die einzelnen E-Commerce-Interaktionen, die Sie messen möchten, erforderlich und welche optional sind.

Implementierung

In den folgenden Abschnitten erfahren Sie, wie Sie mithilfe der Datenschicht die folgenden Aktivitäten für erweiterte E-Commerce-Berichte messen:

Produktimpressionen messen

  • E-Commerce-Messung: impressions
  • Akzeptiert Daten: Array mit impressionFieldObjects

Messen Sie Produktimpressionen mithilfe der Aktion impression und eines oder mehrerer impressionFieldObjects. Im folgenden Beispiel wird davon ausgegangen, dass Details zu den angezeigten Produkten zum Zeitpunkt der Bildschirmanzeige bekannt sind:

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

Produktklicks/-auswahlen messen

  • E-Commerce-Messung: click
  • Akzeptiert Daten: list, Array mit productFieldObjects

Messen Sie die Produktauswahl, indem Sie die Aktion click an die Datenschicht übergeben, zusammen mit einer productFieldObject, die das ausgewählte Produkt darstellt:

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

Aufrufe von Produktdetails messen

  • E-Commerce-Messung: detail
  • Akzeptiert Daten: list, Array mit productFieldObjects

Messen Sie eine Ansicht der Produktdetails, indem Sie die Aktion detail an die Datenschicht übergeben, zusammen mit einer oder mehreren productFieldObjects für die aufgerufenen Produkte:

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

Ergänzen oder Entfernen von Artikeln in einem Einkaufswagen messen

  • E-Commerce-Messung: add, remove
  • Akzeptiert Daten: list, Array mit productFieldObjects

Zum Messen von Hinzufügungen oder Entfernungen in einem Einkaufswagen verwenden Sie ein add- oder remove-actionFieldObject und eine Liste von productFieldObjects:

Hinzufügen eines Produkts zu einem Einkaufswagen

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

Produkt aus einem Einkaufswagen entfernen

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

Werbeaktionen messen

Sie können sowohl Impressionen als auch Auswahlen bei interner App-Werbung messen, z. B. Banner, die in der App angezeigt werden, um für einen Sonderangebot für eine bestimmte Untergruppe von Produkten oder ein Angebot für kostenlosen Versand zu werben.

Werbeimpressionen messen

  • E-Commerce-Messung: promoView
  • Akzeptiert Daten: Array mit promoFieldObjects

Wenn Sie eine Angebotsimpression messen möchten, legen Sie den Schlüssel promoView in der E-Commerce-Datenebene auf eine promoFieldObject fest, die die Angebote beschreibt, die den Nutzern auf dem Bildschirm angezeigt werden:

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

Klicks/Auswahl von Angeboten messen

Wenn Sie die Auswahl eines Angebots messen möchten, übertragen Sie die Aktion promoClick mit einem Array an die Datenschicht, das ein promoFieldObject enthält, das das ausgewählte Angebot beschreibt:

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

Bezahlvorgang messen

So erfassen Sie die einzelnen Schritte eines Bezahlvorgangs:

  1. Messen Sie jeden Schritt des Bezahlvorgangs mit der Aktion checkout.
  2. Messen Sie gegebenenfalls Zahlungsoptionen mit der Aktion checkout_option.
  3. Legen Sie optional benutzerfreundliche Schrittnamen für den Bericht zum Bezahlvorgang-Trichter fest, indem Sie auf der Weboberfläche im Bereich Admin die E-Commerce-Einstellungen konfigurieren.

1. Bezahlvorgang-Schritte messen

  • E-Commerce-Messung: checkout
  • Akzeptiert Daten: step, Array mit productFieldObjects

Wenn Sie den Bezahlvorgang messen möchten, der eine Schaltfläche zum Bezahlen und mindestens ein Bezahlbildschirm umfassen kann, auf dem Nutzer Versand- und Zahlungsinformationen eingeben, verwenden Sie die Aktion checkout und das Feld step, um anzugeben, welche Phase des Bezahlvorgangs erfasst wird. Sie können das Feld option auch verwenden, um zusätzliche Daten zum Bezahlvorgang anzugeben, z. B. die vom Nutzer ausgewählte Zahlungsart.

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. Bezahlvorgang-Optionen messen

  • E-Commerce-Messung: checkout_option
  • Akzeptiert Daten: step, option

Die Bezahloption ist nützlich, wenn du einen Bezahlschritt bereits erfasst hast, aber zusätzliche Informationen zum selben Schritt erfassen möchtest. z. B. die Versandmethode, die ein Nutzer ausgewählt hat. Verwenden Sie die Aktion checkout_option zusammen mit den Feldern step und option, um dies zu messen.

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. Konfiguration des Checkout-Trichters

Optional kann jeder Schritt im Bezahlvorgang einen aussagekräftigen Namen erhalten, der in Berichten verwendet wird. Rufen Sie zum Konfigurieren dieser Namen den Bereich Verwaltung der Google Analytics-Weboberfläche auf, wählen Sie die Datenansicht (Profil) aus und klicken Sie auf E-Commerce-Einstellungen. Folgen Sie der Anleitung zum Einrichten von E-Commerce, um jeden Schritt des Bezahlvorgangs, den Sie erfassen möchten, mit einem Label zu versehen.

E-Commerce-Einrichtung in Google Analytics Ein Trichter für den Bezahlvorgang wird in vier Schritten definiert: 1. Warenkorb bewerten, 2. Zahlungsinformationen erfassen
         3. Kaufdetails bestätigen, 4. Beleg.
Abbildung 1: E-Commerce-Einrichtung, Trichter für den Bezahlvorgang

Käufe messen

  • E-Commerce-Messung: purchase
  • Akzeptiert Daten: id (Transaktions-ID), Array von productFieldObjects

Übertragen Sie Ihre Transaktionsdetails mit der Aktion purchase und einer event an die Datenschicht, die ein Tag mit aktivierten E-Commerce-Berichten auslöst. In diesem Beispiel sind die Transaktionsdetails zum Zeitpunkt der Bildschirmanzeige bekannt:

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

Erfassen von Erstattungen

  • E-Commerce-Messung: refund
  • Akzeptiert Daten: id (Transaktions-ID), Array von productFieldObjects

Um eine vollständige Erstattung einer Transaktion zu messen, senden Sie per Push ein refund actionFieldObject zusammen mit der Transaktions-ID der Transaktion, die erstattet wird:

// 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.

Füge für eine teilweise Erstattung eine Liste mit productFieldObjects hinzu, einschließlich der Produkt-IDs und der zu erstattenden Mengen:

// 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.

Impressionen und Aktionen kombinieren

Falls Sie sowohl Produktimpressionen als auch eine Aktion haben, kann dies in einem einzigen Treffer kombiniert und gemessen werden.

Im folgenden Beispiel wird gezeigt, wie eine Produktdetailansicht mit Produktimpressionen aus einem Bereich für ähnliche Produkte erfasst wird:

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