【教程】如何根據不同地區訪客來觸發GTM標籤

Photo of author
Written By CMO

根據訪客所在國家觸發GTM標籤
根據訪客所在國家觸發GTM標籤

隨著GDPR的推行,根據不同用戶所在的國家來客戶化頁面內容成為了一種普遍的需求。

此外上次我們介紹了Google Signals,由於牆內用戶無法打開位於google.com上的各種資源,打開Google Signals會嚴重拖慢網站的訪問速度。在文章的最後我們提到了利用不用地區的訪客訊息來決定是否動態地打開Google Signals。本篇我們便接下去探討,以思路為主。

GTM中動態打開Google Signals的方法

選擇了Universal Analytics標籤後可以選擇是否打開Display Advertising Features
選擇了Universal Analytics標籤後可以選擇是否打開Display Advertising Features

注意這個選項並不支持變量,因此你不得不建立兩種不同的標籤來應對“打開”與“關閉”兩種情況。 Google Analytics Settings變量也無法簡化操作,另外現行版本中的UA標籤必須使用GA Settings變量。

觸發這兩種標籤的自然是一個變量,這個變量有三種情況:

  1. 未賦值
  2. 牆內訪客
  3. 牆外訪客

為了保證每次UA的PageView的標籤都被訪問,我們可以將未賦值看作為牆內訪客來簡化操作。

服務器端還是客戶端進行地區解析?

這是一個很關鍵的問題。各有優缺點。

如果我們選擇服務器端,那麼對於一些內容密集的網站大量內容緩存在CDN上,此時就不能對頁面開啟緩存,因為每個頁面都會根據訪客所在的地區而不一樣。比如您在讀的這篇文章可能就是一篇緩存。

如果您選擇服務器端動態解析IP,那麼本地必須有一個IP表對應各個國家。您可以參考吳釗在腳本之家的這篇文章《在WordPress中使用PHP腳本來判斷訪客來自什麼國家來進行配置,或者購買Maxmind的服務器端解決方案。如果你在WordPress上,你可以利用吳釗的方法在<head></head>中寫入腳本將數據推送到DataLayer。然後建個變量和触發器來決定Fire哪個版本的UA標籤。

<?php
include(‘geoip.inc’);
global $countryCode;
$geoData = geoip_open(‘GeoIP.dat’, GEOIP_STANDARD);
$countryCode = geoip_country_code_by_addr($geoData, $_SERVER[‘REMOTE_ADDR’]);
geoip_close($geoData);
echo “<script>dataLayer = [{‘country’: ‘” + $countryCode + “’}];<script>”;
?>

第二種做法就是放在客戶端了,這種方法的問題是API的獲取結果速度可能拖慢UA標籤的打開。因為你的訪客需要等API返回結果。你可以使用GeoPlugin.com提供的插件,即便是SSL版本一年也只需要12歐,不到100人民幣。國內有一些免費的,如搜狐和淘寶的。你可以建一個Custom HTML Tag來調用並獲取訪客國家:

<script src=”http://www.geoplugin.net/javascript.gp”></script>
<script>
(function() {
try {
var country = geoplugin_countryName();
dataLayer.push({
‘country’ : country
});
} catch(e) {
dataLayer.push({
‘event’ : ‘Error’,
‘Jserror’ : e.message
});
}
})();
</script>

這個Custom HTML Tag需要有較高的優先級,保證在UA標籤Fire前拿到country的值。

或許是一種更好的方法

不管用上面哪一種方法,對於觸發UA PageView標籤這種需要及時打開的標籤來說都不是理想的解決方法。因此我們建議在頁面打開5秒鐘後觸發一個UA的Event標籤,而在這個標籤裡我們可以打開Display Advertising Features。因為這個是針對用戶級別的維度。

具體的做法是,對於PageView標籤的DAF我們選擇No Value Set。我們在Tag Sequencing裡可以選擇在PageView標籤之前先異步調用一個獲取國家的標籤。

<script async src=”http://www.geoplugin.net/javascript.gp”></script>
<script>
(function() {
try {
var country = geoplugin_countryName();
dataLayer.push({
‘country’ : country
});
} catch(e) {
dataLayer.push({
‘event’ : ‘Error’,
‘Jserror’ : e.message
});
}
})();
</script>

這個Google Analytics Settings變量將被選擇性應用
這個Google Analytics Settings變量將被選擇性應用

接下來我們會建立一個Timer類型的觸發器。和一個UA Event標籤,UA Event標籤將會應用上面圖中新建的GA Settings變量。如果Timer觸發器到點country不等於China兩個條件同時滿足時UA Event標籤將被Timer觸發器觸發。

這個Timer類型的觸發器設為5秒並要滿足國家不為台灣
這個Timer類型的觸發器設為5秒並要滿足國家不為台灣

由此,我們再整理一下,一共三步。

  1. 當頁面打開時,GTM先會去請求當前IP對應的國家。
  2. GTM調用UA的PageView標籤,此時Display Advertising功能未啟用。
  3. GTM在5秒鐘後檢查Country的值,如果不在牆內則發送一個帶Audience的Event。

希望本文給你一些啟發。如有更好的方法請通過HubSpot One的公眾號聯繫。謝謝。