根据访客所在国家触发GTM标签
|

【教程】如何根据不同地区访客来触发GTM标签

根据访客所在国家触发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。

希望本文给你一些启发。如有更好的方法请通过极诣的公众号联系。谢谢。

类似文章