欢迎访问我的博客,有问题可以在任意文章底部留言评论

通过Google Tag Manager布署GA4电子商务

电商跟踪 Haran 10年前 (2016-11-11) 22888次浏览 26个评论

 

这篇文章介绍在 GTM布署GA4电子商务,这里会以view_item_list 作为一个示例。

电子商务的基本处理逻辑就是,页面端将电商数据通过dataLayer发送出去,然后在GTM里配置接收数据即可,其中dataLayer需要开发去做。

dataLayer页面发送数据

页面发送数据是需要开发将电商数据按特定结构组装成,然后调用dataLayer发送出去。

一次发送一个产品

一次只发送一个产品的示例代码如下:

dataLayer.push({ ecommerce: null });  
dataLayer.push({
  event: “view_item_list”,
  ecommerce: {
    items: [
    {
      item_id: "SKU_12345",
      item_name: "Stan and Friends Tee",
      affiliation: "Google Merchandise Store",
      coupon: "SUMMER_FUN",
      currency: "USD",
      discount: 2.22,
      index: 0,
      item_brand: "Google",
      item_category: "Apparel",
      item_category2: "Adult",
      item_category3: "Shirts",
      item_category4: "Crew",
      item_category5: "Short sleeve",
      item_list_id: "related_products",
      item_list_name: "Related Products",
      item_variant: "green",
      location_id: "L_12345",
      price: 9.99,
      quantity: 1
    }
    ]
  }
});

 

一次发送多个产品

你可以一次发送多个产品,例如打开一个页面的时候,展示2个产品,那么可以一起发送,示例代码如下:

// Measure product views / impressions
dataLayer.push({ ecommerce: null });  // Clear the previous ecommerce object.
dataLayer.push({
  event: "view_item_list",
  ecommerce: {
    items: [
     {
       item_name: "Triblend Android T-Shirt",       // Name or ID is required.
       item_id: "12345",
       price: 15.25,
       item_brand: "Google",
       item_category: "Apparel",
       item_category2: "Mens",
       item_category3: "Shirts",
       item_category4: "Tshirts",
       item_variant: "Gray",
       item_list_name: "Search Results",
       item_list_id: "SR123",
       index: 1,
       quantity: 1
     },
     {
       item_name: "Donut Friday Scented T-Shirt",
       item_id: "67890",
       price: 33.75,
       item_brand: "Google",
       item_category: "Apparel",
       item_category2: "Mens",
       item_category3: "Shirts",
       item_category4: "Tshirts",
       item_variant: "Black",
       item_list_name: "Search Results",
       item_list_id: "SR123",
       index: 2,
       quantity: 1
     }]
  }
});

我建议是一次发送多个产品,这样能减少请求。

 

items参数解析

items里有很多的参数,详细如下:

名称 类型    是否必须提供 示例值 说明
item_id string 是* SKU_12345 商品的 ID。
*必须提供 item_id 或 item_name 中的一个。
item_name string 是* Stan 和 Friends Tee 商品的名称。
*必须提供 item_id 或 item_name 中的一个。
affiliation string Google 商店 用于指定供应公司或实体店位置的商品关联商户。
事件级和商品级 affiliation 参数彼此独立。
coupon string SUMMER_FUN 与商品相关的优惠券名称/代码。
事件级和商品级 coupon 参数彼此独立。
currency string USD 币种(采用由 3 个字母表示的 ISO 4217 格式)。
如果设置此参数,系统会忽略事件级 currency
不支持为每个事件设置多种币种。应为每件商品设置同一币种。
creative_name string summer_banner2 促销广告素材的名称。
如果设置此参数,系统会忽略事件级 creative_name
如果未设置此参数,系统会使用事件级 creative_name(如果存在)。
creative_slot string featured_app_1 与商品相关的促销广告素材投放到的广告位的名称。
如果设置此参数,系统会忽略事件级 creative_slot
如果未设置此参数,系统会使用事件级 creative_slot(如果存在)。
discount number 2.22 与商品相关的折扣货币价值。
index number 5 列表中商品的索引/商品在列表中的位置。
item_brand string Google 商品所属品牌。
item_category string 服饰 商品所属类别。如果将其用作类别层次结构或类目的一部分,则为第一个类别。
item_category2 string 成人 商品的第二类层次结构或其他类目。
item_category3 string 衬衫 商品的第三类层次结构或其他类目。
item_category4 string 圆领 商品的第四类层次结构或其他类目。
item_category5 string 短袖 商品的第五类层次结构或其他类目。
item_list_id string related_products 商品向用户展示时所在列表的 ID。
如果设置此参数,系统会忽略事件级 item_list_id
如果未设置此参数,系统会使用事件级 item_list_id(如果存在)。
item_list_name string 相关商品 商品向用户展示时所在列表的名称。
如果设置此参数,系统会忽略事件级 item_list_name
如果未设置此参数,系统会使用事件级 item_list_name(如果存在)。
item_variant string 绿色 用于提供其他商品详情/选项的商品款式/规格、唯一代码或说明。
location_id string L_12345 与商品相关的地理位置。建议使用与相关商品对应的 Google 地点 ID,也可使用自定义地理位置 ID。</span
如果设置此参数,系统会忽略事件级 location_id
如果未设置此参数,系统会使用事件级 location_id(如果存在)。
price number 9.99 商品的货币价格(以指定的 currency 参数为单位)。
promotion_id string P_12345 与商品相关的促销活动的 ID。
如果设置此参数,系统会忽略事件级 promotion_id
如果未设置此参数,系统会使用事件级 promotion_id(如果存在)。
promotion_name string 夏季促销 与商品相关的促销活动的名称。
如果设置此参数,系统会忽略事件级 promotion_name
如果未设置此参数,系统会使用事件级 promotion_name(如果存在)。
quantity number 1 商品数量。

这一步有几个注意点:

  • dataLayer.push({ ecommerce: null })是用于清除对象,清除该对象有助于防止网页上的多个电子商务事件相互影响,如果你的电商数据发送很多很频繁,建议使用,如果是普通,可以不要这行代码。
  • GA4里的items里是产品数组,所有的产品信息都在里面(UA里是products)
  • item里面的item_id和item_name是必须字段,其他都是可选。
  • 不同位置是通过item_list_id和item_list_name去区分,这个会影响后面的产品的归因

示例:view_item_list布署

接下来讲解GTM里面如何配置,首先看触发器:

触发器

将dataLayer里面的event设置为触发器,在GTM中点击「触发器」——「新建」——「选择一个触发器类型以开始设置…」——「自定义事件」,命名为view_item_list,然后做如下配置:

通过Google Tag Manager布署GA4电子商务

 

dataLayer里event的值是什么,这里的事件名称就填设么。

 

变量

将dataLayer里面的items用变量存储,在GTM中点击「变量」——「新建」——「选择一个变量类型以开始设置…」——「数据层变量」,命名为items,然后做如下配置:

通过Google Tag Manager布署GA4电子商务

 

和items同一层级的都可以通过这种方式将其存储到变量中。

 

代码

最后就是在GTM中配置代码,在GTM中点击「代码」——「新建」——「选择一个代码类型以开始设置…」——「Google Analytics(分析):GA4 事件」,命名为view_item_list,然后做如下配置:

通过Google Tag Manager布署GA4电子商务

其中参数名称是电子商务固定的,具体有哪些,可以看各电商步骤中dataLayer的结构。

整站布署电商示例配置

产品展示与点击

view_item_list :产品展示

通过Google Tag Manager布署GA4电子商务

注意item_list_name 或 item_list_id 的值必须保持稳定。对于给定列表,这些值应始终相同,它是用于产品归因,它也可以位于item外面。

在Google Analytics 4电商里item_id和item_name是必要字段,其他是可选字段。

view_item:查看产品

通过Google Tag Manager布署GA4电子商务

 

select_item:点击产品

通过Google Tag Manager布署GA4电子商务

促销产品展示

  • view_promotion:展示促销产品
  • select_promotion:点击促销产品

可以用于跟踪站内活动归因,可以知道加车,结算,订单来自哪个站内活动,但GA4报告上该功能在还没完全实现。

view_promotion:展示促销产品

通过Google Tag Manager布署GA4电子商务

 

select_promotion:点击促销产品

通过Google Tag Manager布署GA4电子商务

购物车

  • add_to_cart:将产品添加到购物车
  • remove_from_cart:将产品从购物车移除

购物车中currency和value是必须字段。

 

add_to_cart:将产品添加到购物车

通过Google Tag Manager布署GA4电子商务

 

remove_from_cart:将产品从购物车移除

通过Google Tag Manager布署GA4电子商务

结算流程

  • begin_checkout:开始结算
  • add_payment_info:添加支付信息
  • add_shipping_info:添加地址信息
  • purchase:购买成功
  • refund:退款

currency和value是必须字段,就value的时候一定要设置currency,购买成功和退款中transaction_id是必须字段。

begin_checkout:开始结算

通过Google Tag Manager布署GA4电子商务

add_payment_info:添加支付信息

通过Google Tag Manager布署GA4电子商务

add_shipping_info:添加地址信息

通过Google Tag Manager布署GA4电子商务

purchase:购买成功

通过Google Tag Manager布署GA4电子商务

refund:退款

退款分为全额退款和部分退款

全额退款

通过Google Tag Manager布署GA4电子商务

部分退款

通过Google Tag Manager布署GA4电子商务

 

注意点

  1. 同个页面有多个电商事件类型的时候,尽量同一次发送出去,也就是一个发送多个产品,如一个页面有5个产品展示,在一个dataLayer.push就发送出去
  2. 数据层数据代码中每一个都有dataLayer.push({ ecommerce: null }),这个的作用是清除对象,确保数据不会混乱。
  3. GA4目前还不支持类似UA的站内(产品)归因,会导致checkout和purchase划分为no set。
  4. 金额不同,如price发送的是35,但报告显示的是35.04,这是因为货币会先换算为美元,再换算为你设置的币种。
  5. DebugView里的价格显示错误:如果你用DebugView去调试电商跟踪,那么你可能会看到价格显示一样,实际是250,但显示250000000,这不是bug,这是为了提升数据存储效率与计算性能,GA4在内部会将部分浮点数(如价格、金额)转换为整数形式进行存储与处理,不影响GA4里的数据
  6. 事件有数据,但电商里没数据,一般是是数据结构不对导致,如revenue是0,通常是货币类型为空导致,view_item是0,通常是items里的数据结构不对导致

 

下载GTM电商配置文件

点击下载电商配置文件

 

具体用法如下:

  1. 下载后将其加压,可以看到配置文件是JSON格式,导入方式请看:容器的导出和导入:将GTM配置复制到另一个容器
  2. 将变量Measurement ID替换为你实际的

 

参考资料


有疑问可以在底部留言
喜欢 (14)
发表我的评论
取消评论

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(26)个小伙伴在吐槽
  1. 如果没有IT设置datalayer,就没办法用GTM设置电子商务追踪了吗
    Leo2023-05-23 18:24 回复 Windows 10 | Chrome 113.0.0.0
    • Haran
      网页有订单和产品信息,可以在GTM写JS去获取,然后组装成要求的结构发送
      Haran2023-05-23 19:19 回复 Mac OS X | Safari浏览器 604.1
  2. 如果电子商务代码第一次加载时,交易数据有推送到GA;然后用户会二次刷新支付成功页面,但电子商务代码页面上程序不做加载(即页面里面电商代码没有了),这种情况下支付成功页里面也带着交易ID,这样会不会将第一次加载的交易数据覆盖掉,且覆盖的结果只有交易ID,后面的交易数据都变为0。
    bruce2021-12-09 10:53 回复 Windows 7 | Chrome 96.0.4664.93
    • Haran
      不做加载就不会发送电商是数据,那没影响。
      Haran2021-12-09 15:20 回复 Mac OS X | Chrome 96.0.4664.93
  3. GTM电子商务代码跟踪的交易数据是否准确,跟跨子域跟踪设置是否正确有关系吗? 我们11月初从gtag电商代码换成gtm电商代码后,跟踪到的交易数据少了许多。
    bruce2021-11-25 09:52 回复 Windows 7 | Chrome 95.0.4638.69
    • Haran
      布署正确,没有遗漏丢失就准确。与跨子域跟踪无关。
      Haran2021-11-25 10:35 回复 Mac OS X | Chrome 96.0.4664.55
  4. 谷歌帮助中心是这样的格式:dataLayer.push https://support.google.com/tagmanager/answer/6107169 用你这样的dataLayer = [{ 格式会不会有问题
    Bruce2021-11-04 12:01 回复 Windows 7 | Chrome 95.0.4638.69
    • Haran
      dataLayer.push这样才是将数据发送出去,dataLayer = [{ 这种是数据初始化
      Haran2021-11-05 16:22 回复 Mac OS X | Chrome 95.0.4638.69
      • 那我直接用谷歌帮助中心https://support.google.com/tagmanager/answer/6107169这个gtm标准的电商代码就好了吧? window.dataLayer = window.dataLayer || []; dataLayer.push({ 'transactionId': '1234', 'transactionAffiliation': 'Acme Clothing', 'transactionTotal': 38.26, 'transactionTax': 1.29, 'transactionShipping': 5, 'transactionProducts': [{ 'sku': 'DD44', 'name': 'T-Shirt', 'category': 'Apparel', 'price': 11.99, 'quantity': 1 },{ 'sku': 'AA1243544', 'name': 'Hat', 'category': 'Apparel', 'price': 9.99, 'quantity': 2 }] });
        Bruce2021-11-07 18:27 回复 Windows 7 | Chrome 86.0.4240.198
  5. 您好,我的网站里面有好多商品,是不是要在各个商品页面都放上“根据各个商品的参数编写的电子商务数据层代码”?即如果我的网站里面有100个SKU,那是不是要设置100个独立的电子商务数据层代码?谢谢
    Zhe2017-12-03 23:40 回复 Windows 7 | Chrome 55.0.2883.87
    • Haran
      可以合并成同一个
      GA小站2017-12-04 08:43 回复 Windows 10 | Chrome 61.0.3163.100
      • 也就是说“transactionProduct”下面是可以同时放置多个SKU?如上面例子中的DD44AA1234544
        Zhe2017-12-04 20:08 回复 Windows 7 | Chrome 57.0.2987.133
        • Haran
          是的
          GA小站2017-12-05 08:54 回复 Windows 10 | Chrome 61.0.3163.100
          • 嗯,如果代码段非常长,会不会对网站加载速度产生影响?
            Zhe2017-12-05 08:56 Windows 7 | Chrome 57.0.2987.133
          • Haran
            最多8K,超过会丢失
            GA小站2017-12-05 10:46 Windows 10 | Chrome 61.0.3163.100
  6. 电子商务可以追踪单个订单的来源吗?比如订单来自的国家和设备
    lbw2017-09-27 12:55 回复 Windows 10 | Chrome 61.0.3163.100
    • Haran
      可以
      GA小站2017-09-27 13:03 回复 Windows 10 | Chrome 61.0.3163.100
      • 单个订单的设备也可以追踪的到吗? 我找的数据好像是订单级别的只能追踪这些: 订单号(必填项) 连署机构 订单金额(必填项) 订单税款 订单运费 订单来源的城市 订单来源的省/直辖市/自治区等 订单来源国家
        lbw2017-09-27 13:08 回复 Windows 10 | Chrome 61.0.3163.100
        • Haran
          这些信息是默认自带的,但有些会获取不到,所以数据是不全的
          GA小站2017-09-27 13:47 回复 Windows 10 | Chrome 61.0.3163.100
  7. 网站上付款成功的转化目标和后台订单数一致,但电子商务缺失20%,这一般是什么情况导致的?
    小明2017-04-15 09:51 回复 Windows 7 | Chrome 55.0.2883.87
    • Haran
      电子商务中的哪部分缺失?
      GA小站2017-04-15 13:04 回复 Mac OS X | Chrome 56.0.2924.87
      • 电子商务的交易次数整体缺失。
        小明2017-04-15 15:41 回复 Windows 7 | Chrome 50.0.2661.102
      • 用的是opencart系统,用mangento的站没啥问题。
        小明2017-04-15 15:43 回复 Windows 7 | Chrome 50.0.2661.102
        • Haran
          第三方模块的,可能是部分触发条件限制太强了,导致部分没能触发
          GA小站2017-04-15 15:55 回复 Mac OS X | Chrome 56.0.2924.87
          • 大神,还有个问题 :mrgreen: 。我用GTM跟踪按钮的点击,同样的设置方法,有个别按钮没有被触发。是因为按钮的class属性问题还是网站代码的问题?
            小明2017-04-15 16:03 Windows 7 | Chrome 50.0.2661.102
          • Haran
            Trigger设置不够准
            GA小站2017-04-15 16:10 Mac OS X | Chrome 56.0.2924.87