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

如何使用 GTM 部署 GA4 增强型电子商务

电商跟踪 Haran 4年前 (2022-02-12) 16797次浏览 24个评论
文章目录[隐藏]

更新时间:2025年2月11号

本文介绍如何通过 Google Tag Manager(GTM) 布署GA4电商跟踪,覆盖产品展示、点击、购物车、结算和支付全生命周期。

GA4电商布署方式

根据网站类型和安装方式,GA4电商布署主要有三种:

  • SAAS系统插件:适合无源码权限的建站平台,只能通过系统插件实现
  • gtag方式布署:如果没有使用GTM安装GA4,采用gtag的方式部署GA4,那么所有的电商事件都需要通过gtag发送给GA4 
  • GTM布署方式(推荐):如果使用GTM安装GA4,本篇重点介绍此方法

如果你的情形是前两者,那么这篇文章不适合你。

 

GA4电商事件概览

GA4电商事件覆盖了产品展示 →用户浏览 →点击→查看→ 选择 → 加入购物车 → 结账 → 支付 → 退款 的整个生命周期。如何使用 GTM 部署 GA4 增强型电子商务

每一步(也称为事件),都需要前端通过dataLayer去发送特定结构的数据,然后再GTM里配置将数据发送到GA4。

下面以为view_item_list作为例子讲解前端的发送时机,数据结构和GTM配置过程。

 

示例:view_item_list布署

view_item_list是产品展示的意思,页面打开,产品展示出来,前端就发送。

dataLayer 页面发送示例

前端通过dataLayer发送如下数据结构

// 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参数解析

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里是产品数组,所有的产品信息都在里面
  • item里面的item_id和item_name是必须字段,其他都是可选。
  • 产品不同位置是通过item_list_id和item_list_name去区分,一般是必须参数,才可以知道展示的位置

GTM配置流程

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

设置触发器

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

如何使用 GTM 部署 GA4 增强型电子商务

 

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

 

设置代码

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

如何使用 GTM 部署 GA4 增强型电子商务

 

整站布署电商示例配置

产品展示与点击

view_item_list :产品展示

如何使用 GTM 部署 GA4 增强型电子商务

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

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

view_item:查看产品

如何使用 GTM 部署 GA4 增强型电子商务

 

select_item:点击产品

如何使用 GTM 部署 GA4 增强型电子商务

促销产品展示

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

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

view_promotion:展示促销产品

如何使用 GTM 部署 GA4 增强型电子商务

 

select_promotion:点击促销产品

如何使用 GTM 部署 GA4 增强型电子商务

购物车

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

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

 

add_to_cart:将产品添加到购物车

如何使用 GTM 部署 GA4 增强型电子商务

 

remove_from_cart:将产品从购物车移除

如何使用 GTM 部署 GA4 增强型电子商务

结算流程

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

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

begin_checkout:开始结算

如何使用 GTM 部署 GA4 增强型电子商务

add_payment_info:添加支付信息

如何使用 GTM 部署 GA4 增强型电子商务

add_shipping_info:添加地址信息

如何使用 GTM 部署 GA4 增强型电子商务

purchase:购买成功

如何使用 GTM 部署 GA4 增强型电子商务

refund:退款

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

全额退款

如何使用 GTM 部署 GA4 增强型电子商务

部分退款

如何使用 GTM 部署 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替换为你实际的

 

参考资料


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

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

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(24)个小伙伴在吐槽
  1. 站长 这些事不用设置参数么?
    Alkaid2024-03-14 11:46 回复 Windows 10 | Chrome 122.0.0.0
    • Haran
      选择数据层,就可以不用设置参数
      Haran2024-03-17 10:09 回复 Mac OS X | Chrome 122.0.0.0
  2. 您好,shiopify网站我用google&YouTube APP关联了GA4,但是事件栏并未显示add_cart、purchase等事件,是因为才安装所以没有吗,还是需要自己手动创建这些事件。
    LPSY。2023-10-26 14:44 回复 Windows 10 | Chrome 118.0.0.0
  3. 你好,shiopify网站如果用google&YouTube APP关联了GA4,会自动生成电子商务追踪事件吗,还需要用GTM去安装电子商务事件不
    leo2023-09-20 15:27 回复 Windows 10 | Chrome 113.0.0.0
    • Haran
      不需要
      Haran2023-09-20 16:56 回复 Mac OS X | Chrome 117.0.0.0
  4. 站长您好,我把GA4的数据导入google datastudio,为什么加入购物车的数量会比shopify店铺后台显示的多很多,这是什么原因,?
    红枫+2022-11-17 16:20 回复 Windows 10 | Chrome 106.0.0.0
    • Haran
      如果时间范围一直,考虑指标定义不同
      Haran2022-11-18 10:36 回复 Mac OS X | Chrome 107.0.0.0
  5. 站长您好!产品展示的代码部署好后总是重复发送事件是怎么回事,GA4事件那个代码重复发送了12次,这是怎么回事?其他的代码都没事
    红枫+2022-08-01 14:33 回复 Windows 10 | Chrome 103.0.0.0
    • Haran
      没看明白具体情况
      Haran2022-08-02 21:38 回复 Mac OS X | Chrome 103.0.0.0
  6. 站长您好!如果我想统计产品在列表页的点击率的话,需要用到列表展示的事件的数据和产品点击的数据,UA里面可以做到的,请问GA4里面怎么做,需要使用自定义指标和维度吗?
    红枫+2022-07-25 16:47 回复 Windows 10 | Chrome 103.0.0.0
    • Haran
      部署电商模块,里面默认就有展示和点击,目前还没有点击率,有展示和点击,点击率可以自己计算一下。
      Haran2022-07-25 17:12 回复 Mac OS X | Chrome 103.0.0.0
      • 您好,我在“报告》生命周期》创收》电子商务购买”里面看到了相关报告,但是没有展示的数据,只有详情页,加购和购买数据,是需要自定义添加吗?
        红枫+2022-07-26 09:31 回复 Windows 10 | Chrome 103.0.0.0
        • Haran
          估计没有做展示跟踪
          Haran2022-07-26 11:30 回复 Mac OS X | Chrome 103.0.0.0
  7. 请问这些代码是加在网页中的header部分吗?如果使用的是SAAS网站,加在主题文件的head中吗
    Yasir2022-07-06 18:35 回复 Windows 10 | Chrome 103.0.0.0
    • Haran
      不是加到header,触发就发送。 文章里的是示例代码,需要前端将电商数据组装成示例代码的结构,触发就发送。 SAAS类的,由于并没有完整的代码修改权限,建议看所使用的产品,官方是否有提供插件实现GA,电商跟踪
      Haran2022-07-06 18:50 回复 Mac OS X | Safari浏览器 604.1
      • window.dataLayer = window.dataLayer || []; dataLayer.push({ ecommerce: null }); {% if first_time_accessed %} dataLayer.push({ event: "purchase", ecommerce: { transaction_id: "{{ order.order_number }}", value: {{ total_price | times: 0.01 }}, tax: {{ tax_price | times: 0.01 }}, shipping: {{ shipping_price | times: 0.01 }}, currency: "{{ order.currency }}", items: [ {% for line_item in line_items %}{ item_id: "{{ line_item.product_id }}", item_name: "{{ line_item.title | remove: "'" | remove: '"' }}", currency: "{{ order.currency }}", price: {{ line_item.final_price | times: 0.01 }}, quantity: {{ line_item.quantity }} },{% endfor %} ] } }); {% endif %} 这是我的订单页面添加的购买代码,可以正常工作。如果我要添加浏览产品代码,也是按照类似格式,然后添加全局代码在头部即可对吧
        Yasir2022-07-07 09:28 回复 Windows 10 | Chrome 103.0.0.0
        • Haran
          如果产品页面也有电商相关的产品字段,可以获取都,就可以。如果没有,加上去也获取不到数据。
          Haran2022-07-07 10:39 回复 Mac OS X | Chrome 103.0.0.0
  8. datalayer的代码只能直接加在页面代码里吗?是否可以通过GTM设置呢,比如设置特定页面加载特定的datalayer代码
    七号2022-04-24 18:06 回复 Windows 10 | Chrome 100.0.4896.127
    • Haran
      可以,要控制好代码触发顺序,但这种方式一定比例的丢数据,所以建议使用。
      Haran2022-04-24 18:09 回复 Mac OS X | Chrome 100.0.4896.127
  9. 自定义事件怎么配?触发器:event 为 gtm.dom ,我加了这个自定义事件但是没有生效
    v132022-03-31 10:59 回复 Windows 10 | Chrome 99.0.4844.84
    • Haran
      数据层中的event是什么,触发器中的自定义事件就设置为什么
      Haran2022-03-31 11:11 回复 Mac OS X | Chrome 100.0.4896.60
      • 能贴一下view_item_list触发器的截图吗?我参考一下,麻烦啦
        v132022-03-31 11:49 回复 Windows 10 | Chrome 99.0.4844.84
        • Haran
          view_item_list
          Haran2022-03-31 14:43 回复 Mac OS X | Chrome 100.0.4896.60