Android v4 - 增强型电子商务

本指南介绍了如何实现 Universal Analytics 增强型电子商务 实现这些功能。

概览

借助 Google Analytics 增强型电子商务功能, 和销售数据 事件。

准备工作

我们建议您查看 增强型 “电子商务数据类型和操作”部分(位于 Google Google Analytics 增强型电子商务开发者指南(网站) 实施。本指南将帮助您了解哪些字段是必填字段,哪些是选填字段 为您要衡量的每次电子商务互动创建单独的列

实现

以下各部分将介绍如何使用数据层来衡量 下列增强型电子商务活动:

衡量商品展示情况

  • 衡量的电子商务活动:impressions
  • 接受的数据:由 impressionFieldObjects 组成的数组

使用 impression 操作衡量商品展示情况, 一个或多个 impressionFieldObjects。以下示例假定 屏幕显示时所显示商品的详细信息 显示:

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

衡量商品点击/选择

  • 衡量的电子商务活动:click
  • 接受的数据:list,由 productFieldObjects

通过将 click 操作推送到数据来衡量商品选择 图层,以及用来表示所选图层的 productFieldObject 产品:

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

衡量商品详情的查看情况

  • 衡量的电子商务活动:detail
  • 接受的数据:list,由 productFieldObjects

通过将 detail 操作推送到 数据层,以及一个或多个 productFieldObjects 代表被查看的产品:

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

衡量在购物车中添加或移除商品的情况

  • 衡量的电子商务活动:addremove
  • 接受的数据:list,由 productFieldObjects

使用 addremove actionFieldObjectproductFieldObjects 列表:

向购物车添加商品

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

从购物车移除商品

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

衡量促销信息

您可以衡量内部应用宣传广告的展示次数和选择, 例如在应用中展示横幅广告来宣传 部分商品或免运费优惠。

衡量促销信息的展示情况

  • 衡量的电子商务活动:promoView
  • 接受的数据:由 promoFieldObjects 组成的数组

要衡量促销信息的展示,请设置 promoView 键(位于 添加到promoFieldObject的电子商务数据层中, 在屏幕上向用户展示的促销信息:

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

衡量促销信息的点击/选择

要衡量促销信息选择,请将 promoClick 操作推送到 具有包含 promoFieldObject 的数组的数据层。 用于描述所选促销活动:

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

衡量结账情况

要衡量结账流程中的每个步骤,您需要:

  1. 使用 checkout 操作衡量结账流程中的每个步骤。
  2. 如果适用,使用 checkout_option 操作衡量结账选项。
  3. (可选)设置直观易懂的步骤名称以用于结账漏斗报告,方法是在网页界面的管理部分中配置电子商务设置

1. 衡量结账步骤

  • 衡量的电子商务活动:checkout
  • 接受的数据:step,由 productFieldObjects

为了衡量结账流程,其中可能包括结账按钮和 一个或多个结账屏幕,供用户输入运费和付款 请使用 checkout 操作和 step 字段来指明所衡量的是结账流程的哪个阶段。 您还可以使用 option 字段提供一部分 与结账流程有关的其他数据,例如 由用户选择

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. 衡量结账选项

  • 衡量的电子商务活动:checkout_option
  • 接受的数据:stepoption

结账选项在以下情形中很有用:您已衡量某个结账步骤,但想要捕获有关该结账步骤的更多信息。例如,用户选择的配送方式。 要衡量结账选项,请使用 checkout_option 操作以及 stepoption 字段。

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. 结账漏斗配置

(可选)您可以为结账流程中的每一步指定一个描述性的名称,以在报告中使用。要配置此类名称,请转到 Google Analytics 网页界面的管理部分,选择相应数据视图(配置文件),然后点击电子商务设置。请按照相应电子商务设置说明,为要跟踪的每个结账步骤设置标签。

Google Analytics 管理界面中的电子商务设置。某个结账漏斗设定了 4 个步骤:1. 查看购物车;2. 收集付款信息;3. 确认订单详情;4. 收据。
图 1:结账漏斗的电子商务设置。

衡量购买情况

  • 衡量的电子商务活动:purchase
  • 接受的数据:id(交易 ID)、数组 productFieldObjects

使用 purchase 操作,以及将触发的 event 一个启用了增强型电子商务的代码在本示例中,交易详情 显示以下信息:

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

衡量退款情况

  • 衡量的电子商务活动:refund
  • 接受的数据:id(交易 ID)、数组 productFieldObjects

要衡量交易的全额退款,请推送 refund actionFieldObject(以及交易) 退款交易的 ID:

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

要衡量部分退款的情况,请添加 productFieldObjects,包括正在 已退款:

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

合并展示和操作数据

既有产品展示又有操作时 将这些数据合并到同一次命中中进行衡量。

下例显示了如何衡量相关商品部分中的商品详情查看商品展示

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