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

什么是GTM的Data Layer?一篇讲清数据层机制

GTM教程 Haran 10年前 (2016-11-19) 20589次浏览 5个评论

 更新时间:2026年8月19号

这一篇介绍GTM里的数据层(Data Layer)。

什么是数据层(Data Layer)

dataLayer是一个JavaScript对象,主要作用是作为网站和GTM之间的数据传递桥梁。

通过dataLayer,你可以将网站上的页面信息、用户行为、业务属性等数据统一存放,然后由GTM读取并分发给不同的第三方平台(如 GA4、Google Ads、Floodlight 等),从而实现 前端与分析工具解耦。

它主要有三个作用:
  • 统一数据定义:页面类型、商品、订单等信息使用一致的字段。
  • 减少对页面结构的依赖:避免按钮样式或 HTML 调整后,跟踪失效。
  • 便于多平台复用:同一份业务数据可供 GA4、Google Ads 等标签使用。

 

初始化与推送数据

初始化数据层

通常在GTM容器代码之前初始化::

window.dataLayer = window.dataLayer || [];

如果数据层不存在,就创建空数组;如果已经存在,则保留原有内容。这段代码不会清空数据,也不需要在每次 push 前重复执行。

 

推送数据

 当页面加载或用户触发某个行为时,可以通过 dataLayer.push() 将数据发送到数据层中,例如:

dataLayer.push({
  event: 'test',
  pageType: 'product'
});

其中:

  • event 是一个常用的键,用于触发特定的事件或操作
  • pageType是数据层变量,就是你要传递的数据,可以有多个数据层变量,也可以嵌套
数据层变量 dataLayer.push代码示例
一个数据层变量
dataLayer.push = ({
	'event': 'test',
	'pageType': 'product'
});
多个数据层变量
dataLayer.push = ({
	'event': 'test',
	'pageType': 'product',
        'pageTitle': 'GA小站'
});
数据层变量嵌套
dataLayer.push = ({
	'event': 'test',
	'pageType': 'product',
        'pageInfo':{
              pageURl:"https://www.ichaa.com"
         }
});

如果是连续发送dataLayer.push,一定要加上window.dataLayer = window.dataLayer || [];,它还起到清空之前一次发送的数据层变量的作用,避免上一次push的数据层变量错误出现在这次push里,完整代码如:

window.dataLayer = window.dataLayer || [];
 dataLayer.push = ({
    'event': 'test',
    'pageType': 'product'
});

dataLayer和dataLayer.push的区别:

  • dataLayer:初始化数据层
  • dataLayer.push: 推送数据到数据层,就是发送数据

 

GTM发送GA4事件

假设对这个位置做dataLayer.push跟踪:

什么是GTM的Data Layer?一篇讲清数据层机制

 

Step 1 : 在网站中推送事件

在需要跟踪的行为发生时执行:

dataLayer.push=({
    'event': 'test',
    'pageType': 'product'
});

将其添加到需要跟位置为止后的效果为:

什么是GTM的Data Layer?一篇讲清数据层机制

Step 2 : 设置数据层变量

GTM中点击「变量」—「新建」—「选择一个变量类型以开始设置」——「数据层变量」,命名为“Page Type”,做如下设置

什么是GTM的Data Layer?一篇讲清数据层机制

Step 3 : 设置触发器

在GTM中点击「触发器」——「新建」——「选择一个触发器类型以开始设置… 」——「自定义事件」,然后做如下设置:

什么是GTM的Data Layer?一篇讲清数据层机制

这里填写的名称必须与 dataLayer.push() 中的 event 值一致。

 

Step 4 : 设置GA4事件代码

接下来就是设置GA4事件代码,在GTM中点击「代码」——「新建」——「选择一个代码类型以开始设置… 」——「Google Analytics:GA4 事件」,然后做如下设置:

什么是GTM的Data Layer?一篇讲清数据层机制

 

 

Step 5 : 预览测试

GTM直接点击右上角的「预览」去测试:什么是GTM的Data Layer?一篇讲清数据层机制

可以看到设置的代码是触发成功,点击查看事件参数page_type:

什么是GTM的Data Layer?一篇讲清数据层机制

事件参数的值准确,可以发布。

 

Step 6 : 自定义设置

如果需要在 GA4 报告或探索中按页面类型分析,在GA4中点击「管理」——「自定义设置」——「创建自定义维度」,然后做如下设置:什么是GTM的Data Layer?一篇讲清数据层机制

自定义维度不会负责采集数据。创建维度并开始发送参数后,通常需要24—48小时才能用于报告分析。

 

Step 7 : 数据验证

一般是24小时后,可以在GA4中看到数据,可以在事件报告中找到“dataLayer demo”事件:

什么是GTM的Data Layer?一篇讲清数据层机制

 

 

验证数据层

在使用数据层时,测试需要看组装的数据格式是否正确、传递的数据是否是对的,特别是在电商测试时。这里介绍两种查看数据层信息的方法

Tag Assistant

在GTM中可以进入预览模式,可以看「数据层」里:

什么是GTM的Data Layer?一篇讲清数据层机制

或API调用:

什么是GTM的Data Layer?一篇讲清数据层机制

都可以找到数据层信息。

 

浏览器控制台(Console)

在浏览器控制台输入dataLayer:

什么是GTM的Data Layer?一篇讲清数据层机制

会看到一个数组,包含所有推送到数据层的信息,根据 event 名称可以找到对应数据。

常见应用场景

  • 电子商务跟踪:记录购物车操作、订单确认、产品展示等
  • 高阶自订事件跟踪:比较复杂的事件跟踪
  • 用户数据:比如用户登录后,可以推送用户的ID、名字等信息。

总结

dataLayer 是网站与 GTM 之间的数据桥梁。通过 dataLayer.push(),你可以把事件、页面类型、电商数据等传给 GTM,再由 GTM 分发给 GA4、Google Ads 等平台。正确使用数据层,可以让跟踪更稳定、更易维护,也能减少前端与分析工具之间的耦合。

参考资料


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

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

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(5)个小伙伴在吐槽
  1. transactionTotal这个是GTM电子商务代码的变量,然后Google Ads 转化跟踪用到这个变量的交易额,我直接用同样的名称自定义类型是数据层变量这个变量,然后在GTM Google Ads 转化跟踪的转化价值那里填上transactionTotal,这样操作应该ok的吧
    Bruce2021-11-17 10:38 回复 Windows 7 | Chrome 95.0.4638.69
    • Haran
      可以的
      Haran2021-11-17 10:46 回复 Mac OS X | Safari浏览器 604.1
  2. 用dataLayer.push定义event的时候,是不是必须要容器代码上方先添加一个空的dataLayer?
    Oscar2020-03-20 14:36 回复 Mac OS X | Chrome 80.0.3987.132
    • Haran
      不需要
      GA小站2020-03-20 16:19 回复 Mac OS X | Chrome 80.0.3987.149
  3. 群主,多谢你的分享,很给力喔!
    Robin2019-11-20 15:07 回复 Windows 7 | Chrome 73.0.3683.103