作者
Uliana Lesiv
Google Tag Manager(GTM)是提升网站分析和跟踪能力的绝佳工具。而数据层正是有助于将跟踪提升到新水平的功能之一。
GTM数据层是一个JavaScript对象,用于收集有关网站上用户交互的详细信息。借助它,您几乎可以收集任何数据,从产品浏览到用户的操作系统都不在话下。在GTM中使用数据层,能让您配置更具针对性的跟踪标记和触发器,从而更深入地洞察用户行为,并为稳健的客户数据分析奠定坚实的基础。
因此,我们创建了一份关于数据层的全面指南,涵盖其在Google Tag Manager中实施和使用的诸多方面。我们将解释数据层是什么、其使用场景、在网站上实施数据层的方法、如何在Tag Manager中创建数据层、测试该设置,以及设置过程中常见的错误。
让我们开始吧!
GTM数据层是一个用于向标记传递数据的JavaScript对象。它允许您传输事件或变量,并根据特定变量值设置触发器。数据层同时用于Google Tag Manager和gtag.js。
数据层是您的网站与Google Tag Manager之间的中介,作为枢纽,为您的容器存储结构化数据。
如果您想要实现以下目标,就需要创建数据层:
使用数据层,您不会遇到这种问题,因为GTM容器从页面的数据层中提取数据,而数据层比HTML DOM要稳定得多。只有当有人破坏了页面的数据层时,数据记录才会停止。
您可以指定具体想在该层中存储哪些数据。创建数据层并为其填充所需跟踪参数的方法有两种,我们将在下一节中进行介绍。
GTM会从数据层中读取并提取所需的值,然后将其发送给Google Analytics、Google Ads、Facebook Pixel等分析工具。

在Google Tag Manager中,dataLayer是一个数组,如"[]"所示,它包含一个对象,如下方脚本中以"{}"表示:
dataLayer = [{}];数据层中的元素被称为变量,格式为"键":"值"对(置于"{}"中)。
GTM使用一个名为"event"的数据层变量,该变量同样被JavaScript事件监听器用来在用户与网站元素交互时触发标记。因此,根据下面的示例,"event"是"键","register"是"值"。
dataLayer = [{'event' : 'register' }];对于变量,语法与事件相同。在下面的示例中,我们获取用于跟踪的目标国家——"country"("variable_name")是"键","united states"是"值"("variable_value")。
dataLayer = [{'country' : 'united states' }];实施数据层有两种方法:声明和推送数据层。我们将介绍这两种方法的使用方式,不过您也可以直接跳转到最适合您的方法。
简而言之,我们建议使用dataLayer.push,因为它更受欢迎,能满足大多数需求。此外,这种方法使用起来更安全,因为它不会干扰Google Tag Manager中的事件,而数据层声明的不当设置则很容易引发问题。
| 数据层声明 | dataLayer.push | |
| 最适用于 | 页面加载之前所需的值 | 为非页面加载事件向dataLayer推送信息 |
| 数据层变量的推送时间 | 运行时之前 | 运行时期间 |
| 代码中的位置 | Google Tag Manager容器代码片段之上 | 代码中的任意位置 |
| 跳转至数据层声明 | 跳转至dataLayer.push |
要使用此方法,数据层代码片段应放置在Google Tag Manager容器代码片段之上。在这种情况下,数据层会在Tag Manager初始化之前完成初始化。
总体而言,这并非创建数据层的流行或推荐方式,但如果您想在GTM容器加载之前创建数据点,并将这些数据点用于标记管理,这种方法是可行的。
将variable_name:variable_value更改为所需的参数,并将代码粘贴到网站页面中GTM代码片段之前的位置。
dataLayer = [{
'variable_name': 'variable_value'
}];
...
注意: 使用"="运算符将对象的值赋给dataLayer数组。
推送方法可动态地将对象元素添加到数据层中。与数据层声明方法不同,使用推送数据时,您可以将数据层代码片段放置在代码中的任何位置。
这可能有点令人困惑,但dataLayer同样也是一个JavaScript变量,任何与window对象交互的函数都可以访问它。因此,为了避免与任何其他名为dataLayer的本地JavaScript数组发生冲突,最好的方法是使用window.dataLayer前缀。
因此,您需要使用以下代码来实现dataLayer.push方法。将所需参数添加进去,替代variable_name:variable_value。
window.datalayer = window.dataLayer || [];
window.dataLayer.push({
'variable_name' : 'variable_value'
});在上面的代码块中,如果已存在dataLayer,则将其设置为现有的dataLayer;否则,将创建一个新的dataLayer作为空数组。||(OR)运算符确保只要满足这些条件中的任意一个,赋值就会发生。
通过这种方式,您可以避免创建多个声明,因为多个声明可能会覆盖dataLayer。
对于许多电子商务CMS,都有相应的插件(包括Stape的插件)可以为您创建标准电子商务事件的数据层。在某些情况下,这可能还不够。例如,如果您在数据层事件中需要额外的事件或额外的数据,或者您使用的是完全定制的平台。
在这种情况下,您需要联系您的开发人员,根据您所需的payload创建数据层事件。对于开发人员来说,这通常是一项相当简单的任务,不会花费太长时间,不过具体情况取决于您网站或平台的架构。
一些实用的指南:
1. 产品/商品数据
2. 交易数据
3. 用户数据
4. 事件特定参数
| 事件 | 触发时机 |
| view_item_list | 产品列表页或类别页 |
| view_item | 产品详情页 |
| add_to_cart | 商品被加入购物车 |
| begin_checkout | 结账流程启动 |
| add_payment_info | 支付方式已选定 |
| purchase | 订单已确认 |
您可以通过不同方式访问Google Tag Manager中数据层数组里的元素。要在Google Tag Manager中利用这些数据,请将其赋值给一个变量,或将其用作事件触发器。随后,这些变量或事件便可被纳入您的标记、触发器或其他变量中。
下面,我们提供数据层的三种使用场景及其在GTM中的设置方法:
举例来说,我们以橙色T恤的购买金额为例。
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
‘product_name’ : ‘orange t-shirt’,
'purchase_value' : '5',
‘purchase_currency’ : ‘EUR’
});1. 要配置变量,请在GTM容器中进入Variables→在用户定义变量中点击"New"。

2. 选择"Data Layer Variable"作为变量类型。

3. 添加数据层变量名称,然后点击"Save"。
请注意: 该字段区分大小写,因此请确保名称与您添加到页面的代码中的值名称一致。在我们的示例中,该值为purchase_value。

作为代码示例,我们采用了这样一个dataLayer变量:当某人填写了注册所需的数据并点击"Register"后,该变量会触发"register"事件。
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
'event' : 'register'
});1. 进入Google Tag Manager的Triggers→点击"New"。

2. 选择"Custom Event"触发器类型。

3. 在"Event name"中,按照代码中值名称的相同方式添加名称,因为该字段区分大小写。点击"Save"。

下面的数据层变量示例会触发购买事件并生成购买信息。
dataLayer = [{
'event': 'purchase',
'purchase_info': {
'purchase_amount': 5,
'purchase_curency': 'EUR'
}
}];您可以在Google Tag Manager中,将代码中的变量既用作变量,也用作事件触发器。请参照前面步骤中变量和事件的设置流程。
数据层在服务器端Google Tag Manager中并不像在客户端GTM中那样存在。
不过,sGTM有一个名为Client的对象,用于检查来自网页GTM的HTTP请求。如果请求中包含特定数据,Client会将该请求数据转换为事件数据。标记同样被用于将数据从网页GTM容器发送到GTM服务器。
要为服务器GTM容器填充数据点,您需要选择一种方法,用于将数据从网页端发送到服务器端GTM;常见的方法包括:
如果您正在为Google Ads或Floodlight设置服务器端跟踪,这种方法尤其有效,因为两者都完全依赖GA4标记。
1. 在网页GTM中创建一个配置为"Google Analytics: GA4 Event"的标记。

2. 您会找到针对这些数据的预定义字段,并可以为每个参数单独分配数据层变量。

使用Data Tag/Data Client的主要优势在于,它能自动将数据层和其他常见数据从网页端发送到GTM服务器。
1. 在网页GTM容器中创建一个新标记,并选择"Data Tag"作为标记配置。
请注意: 您需要将Data Client添加到GTM图库中。

2. 在标记配置中,启用"Send common data"和"Send all from DataLayer"这两个复选框。
系统将自动解析网页GTM中的数据,并将所有可用信息转发到服务器GTM。

| 请查看我们关于为服务器端Google Tag Manager创建数据层的博客文章,了解更多关于设置流程的信息。 |
注意:下面,我们将介绍如何设置Google标记以发送数据;如果您已经配置好了Google标记,则无需创建新标记。只需跳过以下步骤,直接前往创建自定义维度部分即可。
在这种情况下,您只需在"Shared event settings"部分添加与数据层代码中相同的参数即可。
1. 在GTM的"Tags"部分,点击"New",并选择"Google Tag"作为标记类型。

2. 添加您的GA4测量ID,并在"Shared event settings"部分列出您在代码中添加的参数。

3. 选择"Page View – All Pages"作为触发器。

这里有一份标准参数列表。如果您想借助数据层跟踪的数据,并未出现在Google Analytics推荐事件列表中,那么您需要在GA4账户中以自定义维度的形式手动添加该数据。添加后,它将出现在GA4报告中。
1. 在Google Analytics账户中,点击"Admin"→"Custom definitions"。

2. 点击"Create custom dimension",并填写所需参数:
点击"Save"。

| 借助Stape GTM Helper,为您的客户或您自己规模庞大的GTM容器获取更优的GTM预览以及格式化的服务器请求,以便更轻松地进行检查。 |
要检查Google Tag Manager是否捕获到了该变量,您需要执行几个简单的步骤,这与GTM中的常规调试类似。
1. 点击"Preview",并添加您正在调试的网站URL。

2. 切换到"Variable"部分的标签页,如果一切正常,您将在此标签页中看到所需的数据。

如果您在GTM的调试模式中遇到问题,请查看我们的指南:
要检查Google Analytics是否正在捕获数据,请前往"Admin"→DebugView。

如果您发现变量或事件未能成功推送,很可能是对象名称的大小写使用不正确,或者遗漏了引号。
正确示例:
dataLayer.push({'variable_name': 'variable_value'});错误示例:
datalayer.push({'variable_name': 'variable_value'});正确示例:
dataLayer.push({'variable_name': 'variable_value'});错误示例:
dataLayer.push({variable_name': 'variable_value'});如果您无法在网站上所有需要的位置触发标记,请检查不同页面上的变量名称。
最常见的错误是不同页面上变量名称的大小写不一致,因此您需要检查这些名称。
正确示例:
// Homepage:
dataLayer.push({'variable_name': 'variable_value'});
// Product page:
dataLayer.push({'variable_name': 'variable_value'});错误示例:
// Homepage:
dataLayer.push({'variable_name': 'variable_value'});
// Product page:
dataLayer.push({'variable Name': 'variable_value'});GTM datalayer是GTM的一个关键组成部分。它使我们能够捕获用户与您网站的交互,同时还提供有关该交互或其上下文的额外数据。如果您想创建更优的数据结构,使用数据层是必不可少的。
数据层这一概念的实施颇具挑战性,而且构建复杂的跟踪基础设施很可能需要开发人员的参与。
以下是一个简要总结:
想从服务器端开始吗?
免费试用
评论