N年前做过一次GA集成,当时用的是原始手段进行埋点。最近有项目需求,进行GA集成,咨询了一下公司的专家。我擦,原来之前了解的GA集成都是原始社会的工具。GA太TM强大了,那分析,看都看不懂,官网有个视频教学,还不错, 介绍了很多概念(前几天看还是旧的,最新的已经更新了)https://analytics.google.com/analytics/academy/
废话不说,GA很牛逼,学习难度也不小,但是GA集成很简单。
我们这里不再说原始社会的集成方式,还是说一下现代手段吧。GTM(不要说我土啊,以前真的没注意过这玩意,当然DTM也可以,可惜Adobe要收费)
GTM的集成,方式确实很多,条条大路通GA,这里只描述一下一种经过讨论的可行的方式。GTM是google一个Tag管理工具,所谓tag 我们可以简单粗暴的认为他可以动态管理你的前台代码(JS,HTML),适时的将代码插入到你的前台。因此你可以想像GTM不是专门为GA服务的,GA集成只是一个他的很重要功能。举个例子,将基本的GTM代码插入到你的HTML Header以后,你可以用GTM添加一个Alert到所有的页面而不需要修改你的源代码。如何创建GTM这里不多说,请自行google。
下面该是介绍几个概念。
GA Code:The application code come from GA, format like 'UA-XXXXXX-X'
GTM Container ID: The container id of GTM, format like 'GTM-XXXX', find it in ACCOUNT menu.
Workspace(GTM): Any changes for Container will save in workspace, you can publish them to production or preview
Container(GTM): very similar with GA application.
Variable(GTM): GTM中变量,种类很多,定义以后可以在Trigger和Tags中使用。例如OOTB的Page URL,在后面就可以用这个变量做相关的判定。自定义变量很重要,后面会详细介绍
Triggers(GTM): 触发器,举个例子,你可以定义Page URL包含“checkout”的Trigger,OOTB的Trigger 有“All Pages”。 主要为Tags服务。
Tags(GTM): 个人认为这里理解为一个Code Injector比较好,定义好行为(或者code),GTM翻译成code,会在运行时刻注入到你的页面中。例如,这里写一段JS脚本,进行alert,同时在Triggering的选项里选择刚才提到的自定义的的checkout的trigger。 整体就连成了一个完整的案例:url中包含checkout的页面,注入alert语句,在页面渲染的时候,浏览器会弹出alert信息。
dataLayer: DTM 中一个重要的JS对象, 这东西需要你在站点code中定义, DTM会根据dataLayer的定义和数据来处理相关的Tags,Trigger和Variable
接下来,我们看看我们完整的集成方案,其中用到了一个重要的自定义Variable 类型“JavaScript Variable”。关键思路就是: xxx是项目名缩写
Key Point 1: Site端开发人员只负责两件事,构造数据和处理特殊复杂事件。1)定义一个自定义的Global的big JSON对象,例如 xxxDataLayer={}(和GTM中OOTB的dataLayer不一样哦), 将相关的数据信息在这里组装完成。2)处理一些复杂的回调逻辑,然后发送一个自定义事件(大多数情况下不需要,GTM可以监控到JS事件,但是有些复杂场景还是需要开发人员做特殊的处理后再交给GTM处理)。
Key Point 2: 大部分digital marketing 的逻辑在GTM中完成。
详细case:
1. 在页面上组装big JSON对象,例如:
2. GTM 中定义 Variable:
2.1 大部分变量是JavaScript Variable,目的是从xxxDataLayer 取数据,当然也可以是从dtaLayer中去。(可能行很多,经过思考讨论,默认就是从自定义的xxxDataLayer取就行了,后面会解释)
2.2 重要变量:
“Google Analytics” 用来与GA集成用
3. 与GA集成的Tag
创建一个Tag,这里起名我就叫了“GA Inegration”
4. 点击GTM中的workspace中的发布,访问site的首页,便在GA中看到访问记录了。
再来一个复杂的Case:用户在点击注册按钮的时候(用户在注册一个show展会),我们需要将这个时间传给GA,然而注册过程很复杂,需求是将成功注册的信息发给GA。让我们看这个是怎么完成的。
1. 页面Code完成注册回调等复杂验证处理后。将show_id和user_id 更新到xxxDataLayer对象,并发送一个jquery(还是在Jquery?没办法啊,反正这里弄个事件调用就行了)例如触发JS事件“xxx.event.registration”.
2.创建一个trigger
event name: gtm.event.registration, 这里和上面的xxx.event.registration不是一回事哦。这里是GTM事件,后面会使用。即调用GTM事件的时候的trigger。gtm.event.registration也只是个名字而已,随便起。
3.创建一个Tag,注入xxx.event.registration这个JS事件的处理代码即调用GTM的 gtm.event.registration trigger(事件)。
4.创建tag,处理gtm.event.registration事件与GA的关联,即发送数据到GA。
注意这里的user id 和 show id (都是GTM的自定义variable)与GA 中的 自定义 dimension 通过index id 关联
总结, DTM会大量简化开发对于GA的集成。让我解释一下为啥这么做。我们是个外包公司,开发人员基本没有Digital Marketing的知识,而GA的想象空间又特别大,面对客户的大量需求为了更大程度的与现有site code解耦,开发人员只需要关心一个big JSON和一些特殊事件, 对于如何处理这些数据,怎么传给GA,市场人员/客户可以更简单的在GTM中玩,我们只需要告诉他们xxxDataLayer的schema和特殊事件就够了。