本文属于从 Universal AnalyticsGoogle Analytics(分析)4 迁移指南的一部分。请参阅迁移指南目录

[UA→GA4] 将电子商务数据收集功能从 UA 迁移到 GA4

在 Google Analytics(分析)4 媒体资源中设置电子商务数据收集功能的最佳做法
本文面向希望同时在 Universal Analytics 和 Google Analytics(分析)4 媒体资源中收集电子商务数据的网站所有者,还为使用 Google Analytics for Firebase 的移动应用所有者提供了一些最佳做法。

在 Google Analytics(分析)4 媒体资源中,某些电子商务事件和参数名称有所变化。通过使用正确的 GA4 名称和参数,您可以在 GA4 媒体资源中获得最实用的电子商务报告电子商务事件数据

如要从 UA 迁移到 GA4,您应

  • 继续采用 UA 的实现方式
  • 为 GA4 媒体资源创建相同的事件。使用 Google Analytics(分析)媒体资源所需的新事件名称和参数。这样,您将同时拥有两种独立的实现方式,每种实现方式的作用略有不同。

避免为 UA 和 GA4 使用相同的电子商务实现方式

如果您为 GA4 媒体资源使用现有的 UA 电子商务实现方式(即 dataLayer 事件和 gtag.js 代码),您将无法获得完整的 GA4 电子商务报告。gtag.js 库会自动将部分(而非所有)UA 事件和参数转换为 GA4 所需的数据。

此外,您也不应直接转换为 GA4 事件和参数名称。UA 不会收集无法识别的事件的任何数据。例如,所有 GA4 电子商务事件使用的参数都是 item_id,而非 id。   

因此,最佳做法是采用两种实现方式:一种用于 UA 媒体资源,另一种用于 GA4 媒体资源。

系统便会发送两个事件(通常只会发送一个事件),因此您可能会决定采用 UA 的实现方式,并且仅添加将数据发送到 GA4 媒体资源所需的额外事件/参数。不过,这需要您深入了解这两种不同的事件和参数。如果您保留 UA dataLayer 的结构和对象:

  • 您需要添加新的 GA4 事件/参数,以便使用 GA4 媒体资源中的完整报告功能
  • 如果某个 UA 事件在 GA4 中已被弃用,您应使用更新后的 GA4 名称创建相同的事件

基础知识:事件和参数

事件详细说明了系统会如何解读您发送的商品、列表和/或促销数据。参数用于传递有关事件的更具体信息。  

  • 在 GA4 中,参数会被嵌入到 items 数组中(了解详情)。请注意,这不同于 UA 中的 dataLayer,后者要求为不同的事件指定更多操作信息。
  • 电子商务代码植入受 GA4 事件和参数限制。最多可为每个事件指定 25 个自定义参数(items 数组仅占一个位置),且最多可为每个项目指定 50 个自定义维度和 50 个自定义指标(了解详情)。

GA4 电子商务的必需参数

(必需参数以粗体显示)

如果您没有为电子商务专属事件添加必需的参数(例如 itemsitem_iditem_name),这些事件将不会显示在您的 GA4 电子商务报告中,而是被报告为自定义事件。  

 

事件名称

参数

view_item

currency、items、value

view_item_list

items、item_list_name、item_list_id

select_item

items、item_list_name、item_list_id

add_to_wishlist

currency、items、value

add_to_cart

currency、items、value

view_promotion

items、promotion_id、promotion_name、creative_name、creative_slot、location_id

select_promotion

items、promotion_id、promotion_name、creative_name、creative_slot、location_id

view_cart

currency、items、value

remove_from_cart

currency、items、value

begin_checkout

coupon、currency、items、value

add_payment_info

coupon、currency、items、payment_type、value

add_shipping_info

coupon、currency、items、shipping_tier、value

purchase

affiliation、coupon、currency、itemstransaction_id、shipping、tax、value

refund

affiliation、coupon、currency、itemstransaction_id、shipping、tax、value

 
参数(coupon、affiliation、item_list_name、item_list_id)可以在事件级或商品级传递。如果它们同时出现在事件级和商品级中,商品级参数的优先级会更高。 

事件参数

商品级参数

Items(请参见下文)

affiliation、coupon、currency、discount、index、item_id、item_brand、item_category、item_category2、item_category3、item_category4、item_category5、item_list_name、item_list_id、item_name、item_variant、price、quantity

 

下表介绍了可供收集的各个 items 数组参数。

 

Items 数组参数名称

说明

affiliation

与单件商品关联的联属营销企业(合作伙伴/供应商;如果有)的名称或代码

coupon

与单件商品关联的优惠券名称/代码(如果有)

discount

与单件商品关联的折扣(如果有)

item_brand

商品的品牌

item_category

商品所属类别

item_category2

商品的第二类层次结构或其他类目

item_category3

商品的第三类层次结构或其他类目

item_category4

商品的第四类层次结构或其他类目

item_category5

商品的第五类层次结构或其他类目

item_id

商品的 ID(必需)

item_name

商品的名称(必需)

item_variant

用于提供其他商品详情/选项的商品款式/规格、唯一代码或说明

price 

商品的价格

quantity 

正在互动的商品的数量

UA 和 GA4 之间的数据映射

部分名称发生了变化,例如,过去名为“impression”或“product”的数据层参数已整合为一个 items

现在您有了一个 items 数组。

GA4 媒体资源中的电子商务和增强型电子商务没有区别。

如何使用此表格:

  • 对比事件更改(A 列与 C 列)
  • 查看维度/参数要求和更改(B 列与 D 列)。请注意下面的附加表格,其中重点列出了 items/products 参数的变化
  • 如果您有利用 Firebase 开发的应用,请注意以下事件名称的变化,并进行相应的修改,以便与 GA4 事件名称(C 列)保持一致。GA4 媒体资源中所有新的电子商务专属报告都不会显示在 Firebase 界面中。此外,Firebase 版详细事件报告(例如 ecommerce_purchasepurchase 的报告)可能无法更新。
    • 更改
      • ecommerce_purchase (Google Analytics for Firebase)  -> purchase
      • ecommerce_refund (Google Analytics for Firebase) -> refund
      • select_content (Google Analytics for Firebase) -> select_item
      • present_offer (Google Analytics for Firebase) -> select_promotion
    • 新增
      • view_cart
 

A 列

UA 事件名称(参考文档

B 列

UA 维度(参考文档

C 列

GA4 事件名称(参考文档

D 列

GA4 参数(参考文档

purchase

refund

id

coupon

revenue

tax

shipping

currencyCode

**products(详见下文)

purchase

refund

transaction_id

coupon

value

tax

shipping

currency

**items(详见下文)

checkout_option

option

*add_payment_info

payment_type

checkout_option

revenue

currencyCode

option

*add_shipping_info

price

currency

shipping_tier

checkout

currencyCode

revenue

coupon

step(仅适用于 analytics.js)

option(仅适用于 analytics.js)

**products

*begin_checkout

currency

value

coupon

**items

addToCart

removeFromCart

currencyCode

revenue

**products

*add_to_cart

*add_to_wishlist

*remove_from_cart

*view_cart

currency

value

**items

pageview

currencyCode

**products

revenue

*View_item(默认的视图名称)

currency

**items

value

pageview

productClick

list

无 - 不存在

**products

*View_item_list(推销视图)

*select_item

item_list_name

item_list_id

**items

pageview

promotionClick

id

name

creative

position

**products

*view_promotion

*select_promotion

promotion_id

promotion_name

creative_name

creative_slot

**items

 

*在 UA 基础上添加或更改的事件名称

 

详细信息

GA4 参数

对应的 UA 维度

**Items/Products 详细信息

items

item_id

item_name

item_brand

item_category

item_category2

item_category3

item_category4

item_category5

item_variant

affiliation

discount

coupon

price

quantity

products

id

name

brand

category

无 - 不存在

无 - 不存在

无 - 不存在

无 - 不存在

variant

无 - 不存在

无 - 不存在

coupon

price

quantity

UA 中的以下事件名称会被视为 GA4 媒体资源中的电子商务事件:

  • purchase
  • refund
  • begin_checkout
  • add_to_cart
  • remove_from_cart
  • view_cart
  • add_to_wishlist
  • view_item*
  • view_promotion
  • select_promotion
  • select_item*
  • view_item_list
  • add_payment_info
  • add_shipping_info
  • *这些事件仅支持单件商品。

通过 gtag.js API 将上述某一事件发送到 GA4 媒体资源时,GA4 电子商务事件处理架构将在事件模型中查找 items 键。如果找到了“items”键,该参数会被解析为包含最多 200 件商品的数组,其中每件商品都是具有预定义架构的对象。对于每件商品,GA4 电子商务都将从预定义列表的任何字段中传输数据。以下将是商品的初始预定义字段:

  • item_id
  • item_name
  • item_brand
  • item_category
  • item_category2
  • item_category3
  • item_category4
  • item_category5
  • item_variant
  • price
  • quantity
  • coupon
  • index
  • item_list_name
  • item_list_id
  • discount
  • affiliation
  • location_id
  • promotion_id(事件级或商品级;商品级优先)
  • promotion_name(事件级或商品级;商品级优先)
  • creative_name(事件级或商品级;商品级优先)
  • creative_slot(事件级或商品级;商品级优先)

如果您不通过 UA 更新事件检测工具,GA4 电子商务报告中将不会再显示以下事件,因为它无法识别旧事件名称。使用正确的名称为 GA4 媒体资源创建相同的事件。

  • set_checkout_option(在 GA4 中已与 begin_checkout 合并)
  • checkout_progress(在 GA4 中已与 begin_checkout 合并)
  • select_content(不再是 GA4 电子商务事件,但仍是推荐事件,不支持 items 数组)

GA4 媒体资源引入了一些额外的商品级参数,例如 affiliation、currency 和几个 item_category 参数。如果不重新添加代码,您将无法获享这些额外参数的好处。不过,这些额外的参数是可选的,即使不用,也不会出错。

更新 Google 跟踪代码管理器的 dataLayer

为了充分利用为 GA4 媒体资源引入的新事件,您需要在 dataLayer 中添加新的事件/参数,还需要在 Google 跟踪代码管理器中添加新的事件触发器。

  • 您可以选择手动确定要映射到指定事件参数的 datalayer 键。
    • 例如,在 UA 中,您必须在 dataLayer 对象中推送 purchase 事件的“id”,作为“ecommerce.purchase.actionField.id”。利用 GA4,您可以指定要映射到“transaction_id”事件参数的 dataLayer 键。如果您重复使用了 UA dataLayer 对象,则可以创建一个映射到键“ecommerce.purchase.actionField.id”的 Google 跟踪代码管理器 dataLayer 变量,并将其指定为 GA4 事件的“transaction_id”。或者,您可以将该 Google 跟踪代码管理器 datalayer 变量映射到键“ecommerce.purchase.transaction_id”,并将其分配给事件参数“transaction_id”。
  • 您可以选择继续引用现有的 dataLayer 对象
    • 如果您使用 UA 实现中现有的 dataLayer 对象,则无法利用新的 GA4 事件名称和参数(例如,额外的 item 级参数)。不过,如果您在跟踪代码管理器中手动创建了必要的变量,系统将会针对现有事件生成一些电子商务报告。
在 Google 跟踪代码管理器中配置 GA4 事件代码以使用 dataLayer 发送电子商务事件时,您必须手动输入 dataLayer 变量作为事件参数,例如参数名称“items”和值 {{ecommerce.purchase.products}},其中 {{ecommerce.purchase.products}} 是一个跟踪代码管理器 dataLayer 变量,需要创建这个变量以从 dataLayer 中读取 products 数组。您需要为每个事件级参数创建一个 dataLayer 变量,并将其分配给事件参数,然后对每个电子商务事件重复此操作。请查看以下示例了解详情。
 

UA Google 跟踪代码管理器 dataLayer 推送代码(参考文档

GA4 Google 跟踪代码管理器实现重复使用针对 UA 实现的现有 dataLayer

dataLayer.push({

  'ecommerce': {

    'purchase': {

      'actionField': {

        'id': 'T12345',                         // 交易 ID。对于购买和退款是必需的。

        'affiliation': 'Online Store',

        'revenue': '35.43',                     // 总交易价值(包括税费和运费)

        'tax':'4.90',

        'shipping': '5.99',

        'coupon': 'SUMMER_SALE'

      },

      'products': [{                            // productFieldObject 的列表。

        'name': 'Triblend Android T-Shirt',     // 必须提供名称或 ID。

        'id': '12345',

        'price': '15.25',

        'brand': 'Google',

        'category': 'Apparel',

        'variant': 'Gray',

        'quantity': 1,

        'coupon': ''                            // 可选字段可省略或设置为空白字符串。

       },

       {

        'name': 'Donut Friday Scented T-Shirt',

        'id': '67890',

        'price': '33.75',

        'brand': 'Google',

        'category': 'Apparel',

        'variant': 'Black',

        'quantity': 1

       }]

    }

  }

});

 

您需要为每个事件级参数创建 dataLayer 变量,如下所示。

 

您需要对所跟踪的每个电子商务事件重复执行此操作。

实现示例

设置购买漏斗

通常情况下,购买漏斗分为四个步骤:

查看商品

用户查看一件商品或一系列商品。要衡量商品列表的浏览情况/展示情况,请将商品列表推送到 dataLayer,并收集事件及相应商品数据。

  • gtag.js
    • 事件:view_item_listview_item
      • 在 UA 中,等效的事件是“impressions
    • 参数:必须至少包含 item_iditem_name
      • 在 UA 中,参数没有前缀“item_”;“list_position”现已更名为“index
  • Google 跟踪代码管理器
    • 事件:view_item_listview_item
      • 在 UA 中,等效的事件是“impressions
    • 参数:items 是数据层变量“ecommerce.items”;参数为“items{ }”,必须至少包含 item_iditem_name
      • 在 UA 中,参数没有前缀“item_”;“position”现已更名为“index

添加到购物车

用户选择一件商品并将其添加到购物车,该商品的其他款式/规格可以添加到心愿单或发送请求以索取更多信息。

  • gtag.js
    • 事件:add_to_cart
    • 参数:必须至少包含 item_iditem_name
  • Google 跟踪代码管理器
    • 事件:add_to_cart
      • 在 UA 中,等效的 dataLayer 事件为“addToCart”,并且这需要额外的 actionFieldObject “add”;对于 GA4,dataLayer 对象中不再需要 actionFieldObject。
    • 参数:作为“items”的一部分,必须至少包含 item_iditem_name
      • 在 UA 中,需要为商品信息提供单独的变量“products

结账

用户进入已添加了一件商品的购物车,然后开始结账流程。添加支付方式或配送信息等一些额外的步骤有自己的 GA4 事件。如果您的结账流程包括这些额外的步骤,请务必发送具体的事件,使其包含在您的购买漏斗中。  

  • gtag.js
    • 事件:begin_checkout
      • 在 UA 中,还有“checkout_progress”和“set_checkout_option”事件,它们在 GA4 媒体资源中不存在。您可以看到的是 add_to_cartadd_shipping_infoadd_payment_info 这些具体事件。
    • 参数:必须至少包含 item_iditem_name
  • Google 跟踪代码管理器
    • 事件:begin_checkout
      • 在 UA 中,等效的 dataLayer 事件为“checkout”,并且这需要额外的 actionFieldObject “checkout”。GA4 中不再需要此 actionField,不过,您不应该更改现有的实现,否则会破坏 UA 中的电子商务功能。
    • 参数:作为“items”的一部分,必须至少包含 item_iditem_name
      • 在 UA 中,需要为商品信息提供单独的变量“products”

购买

用户进行购买

  • 在 GA4 媒体资源中,此事件在添加到代码中后会自动标记为转化
  • gtag.js
    • 事件:purchase
      • 在 UA 中,还有“checkout_progress”和“set_checkout_option”事件,它们在 GA4 媒体资源中不存在
    • 参数:必须至少包含 transaction_id
 

UA - analytics.js

参考文档

UA - gtag.js

参考文档

GA4 媒体资源 - gtag.js

参考文档

ga('ec:addProduct', {

  'id': 'P12345',

  'name': 'Android Warhol T-Shirt',

  “Other optional values”

});

 

ga('ec:setAction', 'purchase', {

  'id': 'T12345', 

  “Other optional values”                        });

gtag('event', 'purchase', {

  "transaction_id": "123",

  “Other optional values”

  "items": [

    {

      "id": "P12345",

      "name": "Android Warhol T-Shirt",

     “Other optional values”

    },

    {

      "id": "P67890",

      "name": "Flame challenge TShirt",

     “Other optional values”

    }

  ]

});

gtag('event', 'purchase', {

  "transaction_id": "123",

  “Other optional values”

  "items": [

    {

      "item_id": "P12345",

      "item_name": "Android Warhol T-Shirt",

     “Other optional values”

    },

    {

      "item_id": "P67890",

      "item_name": "Flame challenge TShirt",

     “Other optional values”

    }

  ]

});

analytics.js 使用增强型电子商务设置 productFieldObject 以指定商品详情,并使用 actionFieldObject 来指定发生的操作。

 

迁移到 gtag.js 会产生一些根本性的差异。只有一个事件会自动记录为电子商务;交易和商品信息都可以包含在内;商品信息可以在数组中发送(而不是要求提供更多事件)。

发送 purchase 事件,并提供相应交易所涉及的商品。

 

必需值的命名方式有所不同,例如“id”已改为“item_id”,“name”已改为“item_name”。

 

此外,还应注意可选值的差异。

发送 purchase 事件,并提供相应交易所涉及的商品

 
  • Google 跟踪代码管理器
    • 事件:purchase
      • 在 UA 中,等效的数据层事件为“purchase”;这需要针对整个交易提供操作字段
    • 参数:作为“items”的一部分,必须至少包含 item_iditem_name
      • 在 UA 中,需要为商品信息提供单独的变量“products”
 

UA - 跟踪代码管理器

参考文档

GA4 媒体资源 - gtag.js

参考文档

dataLayer.push({

  'ecommerce': {

    'purchase': {

      'actionField': {

        'id': 'T12345',

        ‘Other optional values’

      },

      'products': [{

        'name': 'Triblend Android T-Shirt',     

        'id': '12345',

        ‘Other optional values’

       },

       {

        'name': 'Donut Friday Scented T-Shirt',

        'id': '67890',

        ‘Other optional values’

       }]

    }

  }

});

dataLayer.push({

  'event': 'purchase',

  'ecommerce': {

    'items': [{

      'item_name': 'Triblend Android T-Shirt',

      'item_id': '12345',

      ‘Other optional values’

    },

    {

      'item_name': 'Donut Friday Scented T-Shirt',

      'item_id': '67890',

      ‘Other optional values’

 

    }]

  }

});

使用 purchase 操作以及 event(后者会触发已启用增强型电子商务的代码),将您的交易详情推送到 dataLayer。

在网页加载时通过网页浏览发送交易数据。否则,请在交易数据可用时使用 event。

显著变化:

  • GA4 会列出 items,而不是 products。虽然您可以使用 UA 实现方式,但您的 GA4 媒体资源只会收集事件数等基本信息,并且不支持其他功能(如漏斗报告)。
  • 必需值的命名方式有所不同,例如“id”已改为“item_id”,“name”已改为“item_name”。
    • 此外,还应注意可选值的差异。

要衡量交易情况,请将商品列表推送到数据层,并收集 purchase 事件以及相应商品数据。下例假定在网页加载时该网页上显示的商品相关详情是已知的:

其他电子商务活动

GA4 媒体资源还可以捕获其他信息:

  • 突出强调与某一商品或事件相关的奖励
    • Coupon 使您能够指定与某件商品相关联的任何优惠券的名称(例如,免运费,单件商品 8 折);数据类型为字符串,这是一个商品参数
    • Discount(全新)使您能够指定与某件商品相关联的折扣的货币价值(例如“0.05”);数据类型为浮点数
  • Promotion - 这些包括引导用户访问您网站/应用的特定版块的站内讯息
    • 必须使用 promotion_idpromotion_name,否则数据只能在标准事件表报告中使用
  • Refund - 用于衡量交易的退款
    • Refund 是可处理全额或部分退款的特定事件
    • 必须使用 transaction_id,否则数据只能在标准事件表报告中使用
该内容对您有帮助吗?
您有什么改进建议?
搜索
清除搜索查询
关闭搜索框
Google 应用
主菜单
搜索支持中心
true
69256
false