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

Photo of author
Written By CMO

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

我們跟踪分析網站的實際過程中時常碰到需要進行跨域名跟踪的情況。這裡可能是具有同樣根域名的兩個(子)域名之間的跟踪,也可能是不同的兩個無聯繫的域名之間的跟踪。對於網站分析來說,如果不進行跨域名跟踪,那麼一個用戶的一次涵蓋兩個域名的訪問將無法統計成一次訪問,它會被算成先後兩次訪問。而且總的訪問時長和訪問頁面數也會不准確。這種情況很多,比如Google的首頁上有各個到不同產品的鏈接,再如電子商務網站通常用一個統一的支付平台而支付平台是使用另外的域名的。

了解了跨域名跟踪的意義,下面我們要開始部署了。首先,它有一個前提。那就是所有需要跟踪的這些網站都使用同一個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來。