雖然說平常只需要裝一組 Google Analytics 追蹤碼,不過總是會有奇奇妙妙的需求讓我們必須裝不只一組 Google Analytics 追蹤碼。像優化宅待過的一家集團公司,因為公司各事業部有自己的網站跟管理網站的單位,我們有看總和數據跟個別數據管理的需求,當時公司決定要在網站上裝兩組以上的 Google Analytics 資源來做管理。

新版 Universal Google Analytics 追蹤碼,跟舊版不同,如果要埋不同的 Tracking ID ,必須要把個別 cookie 做命名,不然所有的流量資料都只會送到單一個 Google Analytics 資源當中,造成有一組報表上的 hit 全部多了一倍,如一次的頁面瀏覽(pageview)被算了 2 次,另一組報表上則完全沒有數字 –> 於是有報表的跳出率就會是完美的趨近於零。

這是真實發生過的故事。

如何解決?一般的 Universal GA tracking ID 是長這樣的:

<script>(function(i,s,o,g,r,a,m){i[‘GoogleAnalyticsObject’]=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,’script’,’//www.google-analytics.com/analytics.js’,’ga’);ga(‘create’, ‘UA-xxxxxxxx-x’, ‘auto’);
ga(‘send’, ‘pageview’);</script>

但如果要在網頁上放兩組的 GA code,方法如下:

<script>
(function(i,s,o,g,r,a,m){i[‘GoogleAnalyticsObject’]=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,’script’,’//www.google-analytics.com/analytics.js’,’ga’);

ga(‘create’, ‘UA-xxxxxxxx-x’, ‘auto’);  //建立第一組 cookie,並使用預設命名
ga(‘send’, ‘pageview’); //傳送 pageview

ga(‘create’, ‘UA-xxxxxxxx-x’, ‘auto’, {‘name’: ‘optimizationgeek’}); //建立第二組 cookie,並命名為 optimizationgeek
ga(‘optimizationgeek’, ‘pageview’); //傳送一個 pageview 到 optimizationgeek 中

</script>

當然,其他的 hit (像是事件追蹤)也需要命名,所以也可以事件主要送到一個資源當中,這樣會比較便利。