首先数据层变量是运用在谷歌 GTM 代码管理器里面的,也是更多的应用在电商网站里面,同时它需要配备好的开发人员去开发和维护,如果你对开发这块不是很懂的话,那么理解起来可能会比较吃力!当然从商业角度来看,跨境电商或者网站业务量很大的需求会更适用,它的高级功能更多的应用在增强型电子商务功能中,区别于标准型电子商务!
一、什么是数据层?
具体的名词解释可以看这篇:http://www.rrdaj.com/hzseo/2310.html,如果你不打算在标签管理器中使用任何自定义数据(例如,用户ID,产品ID等),则无需在网站上进行数据层的其他操作。只需要将GTM容器的JavaScript代码段放置在网站的源代码中,并且当访问者登陆网站后,Google跟踪代码管理器的代码段一般会自动启动数据层来采集数据。
当然这些只适合小网站,如果你的站点功能化比较多,还是建议用GTM 的数据层去布局,采集信息,这样有利于避免过多的JS第三方代码,阻碍网站的整体性能。比如,开发者可以使用它来自定义一些高级的代码信息,采集输出数据。
一般情况下,Google 跟踪代码管理器通过两种方式使用信息(存储在数据层中):
1、使用某些数据(以变量的形式)
2、触发标签(采用触发器的形式–可以将数据层事件用作触发器)
二、数据层可以存储哪些信息?
数据层应包含你的营销和分析标签所需要的所有关键信息,该信息可能是:
#1网站页面属性
- 页面标题
- 页面网址
- 页面类别等
#2 网页上列出的产品的属性,例如:
- 产品名称
- 产品编号
- 产品价格
- 产品分类
- 产品图片网址
- 产品的颜色,尺寸
- 产品数量
- 产品检视
- 产品点击(点击类别页面上的产品列表)
- 产品可用性(可用,缺货)
- 产品优惠券
- 使用的产品优惠券
#3用户属性
- 用户ID(登录ID)
- 客户ID
- 用户类型(登录用户,注销用户,VIP,非VIP,客户,非客户,回头客,大客户等)
- 用户的浏览行为
- 用户的偏好
- 用户的购买历史
- 用户的交互(单击按钮,提交表单,注册,购买,观看视频等)
- 用户的网络浏览器
- 用户操作系统
- 用户的设备(移动设备,台式机,平板电脑)
三、数据层实现形式一般也有两种:
1、数据层声明
但是这种方法是非常有限的,也是最早使用的,它更多的是适用于网站开发人员,加上它目前的稳定性个人感觉不是很好,,比如在Google跟踪代码管理器容器代码下方添加了dataLayer 代码段,然后你的整个GTM事件跟踪实施有可能都会中断,所以此方法不是很推荐大家去用,只需要做个了解就可以了。
大概是这样子的:
<script>
dataLayer = [{
'pageCategory': 'google-tag-manager-tips'
}];
</script>
上面的代码,在页面加载时,数据层代码将创建一个数据层,并将包含一个数据点 pageCategory。之后,将先加载Google 跟踪代码管理器容器代码,然后你就可以在代码管理中使用该 pageCategory 了,当然了是借助数据层变量来完成的。
而且这类方法,也更适用于那些使用GA标准电子商务追踪的办法,大部分是使用谷歌 EC 功能比较早的老网站,例如,网站的开发人员应在Google跟踪代码管理器容器上方添加一个dataLayer代码段,并使用以下参数:transactionID,transactionTotal等。作用就是将此信息添加到数据层后,Google跟踪代码管理器可以获取该信息并将其传输到Google Analytics(分析)。
2、dataLayer.push
第二种方法(dataLayer.push)是将数据添加到数据层的另一种方法,也是谷歌官方极力推广使用的方法。
例如:
第一种:
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
'event': 'new_subscriber'
});
第二种:
dataLayer.push({
"event":"EEtransaction",
"ecommerce": {
"purchase": {
"actionField": {
"id":"kut23e8r27",
"affiliation":"Online Store",
"revenue":68,
"tax":"12.60",
"shipping":5,
"coupon":"CANO25"
}
那么为什么这种方法比第一种更好呢?因为它可以将其放置在代码中的任何位置(Google跟踪代码管理器容器的上方和下方),并且不会中断GTM中的事件跟踪。这样就保证了代码触发的完整性,避免数据不全,或者跟踪不到的情况。此外,借助它,你还可以将事件推送到数据层,稍后将其用作触发条件来运作。例如,如果有人提交了表单,则开发人员可以激活以下代码:
dataLayer.push({
'event': 'formSubmission'
});
var index = 1
$('.pro-content-box').find('.pro-item').eq(index).data('pro-name');