需求描述:Google Analytics 開出來的 API 中,缺少一些辨識用的 ID 們,例如訪客 ID 以及工作階段 ID,而要取得這些 ID 必須先做一些設定,以下介紹詳細的設定步驟。
接下來要設定的自定義指標(Custom Dimension)包含:
- Client ID
- Session ID
- Hit Timestamp
- User ID
其中 Client ID 為每個網站辨識不同訪客用的 ID,GA 也主要是藉由這個來判斷是否為相同訪客。而 Session ID 則用於辨識不同的工作階段,讓每一個工作階段擁有唯一的 ID。Hit Timestamp 則是因為 API 沒有開到這麼細的時間指標,所以自己設定一個。最後的 User ID 又稱 GID,可以說是最高階能辨識訪客的 ID,意即同一個 User ID 進入不同的網站,會有不同的 Client ID,而同一個 Client ID 進去同一個網站多次時,會有多個 Session ID。
接下來就來一一介紹設定的步驟,主要都是 Simo Ahava 大大的文章《Improve Data Collection With Four Custom Dimensions》內容:
Client ID
- Google Analytics > Admin > Property > Custom Definitions > Custom Dimensions > + NEW CUSTOM DIMENSION
這邊改用 User Scope 也是 OK 的。
2. Google Tag Manager > Variable > NEW 一個 Get Client ID for current Tracker 變數,選擇 Custom JavaScript :
function() {
try {
var trackers = ga.getAll();
var i, len;
for (i = 0, len = trackers.length; i < len; i += 1) {
if (trackers[i].get('trackingId') === {{GA Tracking Code}}) {
return trackers[i].get('clientId');
}
}
} catch(e) {}
return 'false';
}
設定如果無法順利取得 clientId 的話,就回傳 false。
3. Google Tag Manager > Trigger > NEW 一個 Get Client ID 觸發條件:
這樣設定能確保每次觸發都是有順利取得 clientId 的狀況。
4. Google Tag Manager > Tag > NEW 一個 Get Client ID,這邊主要要設定的是將 Non-Interaction 設定為 True,這樣能避免讓 Event 計算到一些非互動性的維度,像是工作階段停留時間、跳出率。
Google Analytics Settings 改成我們統一設定的 GA 設定,存在 GAID 變數中,並勾選 Enable overriding settings in this tag。接著在 More Settings > Custom Dimensions > +ADD CUSTOM DIMENSION。最後加上 Trigger:
Session ID
- Google Analytics > Admin > Property > Custom Definitions > Custom Dimensions > + NEW CUSTOM DIMENSION
2. Google Tag Manager > Variable > NEW 一個 Random Session ID 變數,選擇 Custom JavaScript :
function() {
return new Date().getTime()
+ '.'
+ Math.random().toString(36).substring(5);
}
3. Google Tag Manager > Variable > 編輯 GAID,新增:
Hit Timestamp
- Google Analytics > Admin > Property > Custom Definitions > Custom Dimensions > + NEW CUSTOM DIMENSION
2. Google Tag Manager > Variable > NEW 一個 Hit Timestamp Local Time With Offset 變數,選擇 Custom JavaScript :
function() {
// Get local time as ISO string with offset at the end
var now = new Date();
var tzo = -now.getTimezoneOffset();
var dif = tzo >= 0 ? '+' : '-';
var pad = function(num) {
var norm = Math.abs(Math.floor(num));
return (norm < 10 ? '0' : '') + norm;
}; return now.getFullYear()
+ '-' + pad(now.getMonth()+1)
+ '-' + pad(now.getDate())
+ 'T' + pad(now.getHours())
+ ':' + pad(now.getMinutes())
+ ':' + pad(now.getSeconds())
+ '.' + pad(now.getMilliseconds())
+ dif + pad(tzo / 60)
+ ':' + pad(tzo % 60);
}
3. Google Tag Manager > Variable > 編輯 GAID,新增:
User ID
- Google Analytics > Admin > Property > Custom Definitions > Custom Dimensions > + NEW CUSTOM DIMENSION
2. Google Tag Manager > Variable > NEW
3. Google Tag Manager > Variable > 編輯 GAID,新增:
GAID 主掌 GA 相關的設定,這邊主要是加入 userId 進去 Field 跟 Custom Dimensions。會將 GA 相關設定統一放在變數 GAID 中,主要是為了讓所有相關 Tag 能夠共用同一環境變數。
以上埋設完成後,就可以來 Query Explorer 檢查看看是否有取得資料了。