跨域名跟踪,GA和GTM的部署方法

跨域名跟踪,GA和GTM的部署方法

跨域名跟踪,GA和GTM的部署方法

我们跟踪分析网站的实际过程中时常碰到需要进行跨域名跟踪的情况。这里可能是具有同样根域名的两个(子)域名之间的跟踪,也可能是不同的两个无联系的域名之间的跟踪。对于网站分析来说,如果不进行跨域名跟踪,那么一个用户的一次涵盖两个域名的访问将无法统计成一次访问,它会被算成先后两次访问。而且总的访问时长和访问页面数也会不准确。这种情况很多,比如百度的首页上有各个到不同产品的链接,再如电子商务网站通常用一个统一的支付平台而支付平台是使用另外的域名的。

了解了跨域名跟踪的意义,下面我们要开始部署了。首先,它有一个前提。那就是所有需要跟踪的这些网站都使用同一个GA的Property,换句话说它们共用一个GA ID (’UA-XXXXXXXX-Y’)。

子域名间的跨域名跟踪

在Google Analytics更新到Universal Analytics之后,实际上已经默认生效子域名之间的跟踪。我们可以从UA生成的跟踪代码中看到:

ga(‘create’, ‘UA-XXXXXXXX-Y’, ‘auto’);

此处的auto便是默认启用。这样我们可以对同一根域名的两个域名之间进行跟踪。在Google Tag Manager(GTM)中我们需要在UA的TAG中找到More settings,然后在Fields to Set中添加cookieDomain(可在下来菜单中选择),在赋值栏中填入auto即可。

添加新字段cookieDomain为auto

添加新字段cookieDomain为auto

当我们查看报表时,只要选择hostname这个Dimension便可以加以区别。

不同的两个域名之间的跟踪

当我们需要两个不同域名之间跟踪时,会变得稍微复杂一些。我们假设我们要跟踪的是从站点source.com到destination.com和destination.net的流量。GA在这里提供了一个插件autoLink

第一步,我们要在source.com中启用插件autoLink。

// 加载插件
ga(‘require’, ‘linker’);

// 定义哪些域名为目标域名
ga(‘linker:autoLink’, [‘destination.com’, ‘destination.net’]);

如果我们有较多域名,我们也可以用正则表达式来实现。

ga(‘linker:autoLink’, [/^destination\.(com|net)$/]);

在这里我们要了解的是,当插件加载后,在页面上的鼠标点击已经触摸屏上的每次触击都会调用一个事件。如果链接中包含目标域名,那么source.com上的GA cookie和其参数将会被传递到目标域名。那么接盘的目标页面如何设置呢?

我们首先要激活Linker:

ga(‘create’, ‘UA-XXXXXX-Y’, ‘auto’, {
‘allowLinker’: true
});

然后,就没有然后了……这里我们又要注意了,此处的create并不是指要新建立一个跟踪器。而是在已建立的跟踪器上激活。

这样我们就可以建立一个一对多的跨域名跟踪,如果我们需要反向进行跟踪,只需要反过来操作即可。

在GTM中,我们只需要在More settings>Cross Domain Tracking>Auto Link Domains中填入目标域名,然后在目标站点的More settings>Fields to Set中添加allowLinker并赋值true便可。

这样我们不同域名间的跟踪便建立起来了。

跨域名跟踪表单

我们在定义的时候需稍作修改:

ga(‘linker:autoLink’, [‘destination.com’, ‘destination.net’], false, true);

这里解释一下,域名队列后第一个false表示“不需要使用anchor来传递”,即#加参数,如果为true则URL在传递时会加上参数。第二个表示监控所有的<form>表单标签。不管表单是post还是get都会传递参数。

在GTM中,如果我们要实现表单的跨域名跟踪,我们只要依靠gtm.formSubmit这个消息来识别行为,然后判断是否是向外的链接即可。如果判断是跨域名的提交,我们只要“装饰”一下目标URL就可以实现跟踪。这里我们需要建立一个新的UA标签使用类型将不是Page View,而是Decorate Form。详细的方法可以参考LunaMetrics的这篇博文

跨域名跟踪报表的优化

首先我们要排除域名相互直接作为referer,我们可以在GA中的管理后台进行设置。其次我们可以用hostname来区别各个url。方法就是用Advanced Filter,我们之前介绍过如何抓取初始访问来源,方法类似:

过滤器类型: Custom filter > Advanced
Field A: Hostname Extract A: (.*)
Field B: Request URI Extract: (.*)
Output To: Request URI Constructor: $A1$B1

也就是把两端接起来,这样报表中就无需总是调出hotname来。