Google AnalyticsのCookieについての覚書
Google Analytics(のgtag.js)のCookieの設定をいじる機会があったのですが、色々と学んだことがあったためメモしておきます。
なぜGoogle AnalyticsはCookieを使うのか
公式ドキュメントに明確に書かれています。
Google アナリティクス4 では、gtag.jsは、以下の目的でファーストパーティCookieを使用します。
- ユニーク ユーザーを区別する
- ユーザーのセッションを区別する
Cookieに保存しておいた値をトラッキング時にGoogleのサーバーに送ることで、GAは「このアクセスとこのアクセスは同じユーザーによるものだなー」と判断できるといったイメージです。
GAによりセットされたCookieを削除すると、次回サイトに訪問したときには新規ユーザーとしてみなされることになります。
なぜファーストパーティCookieなのか
https://example.com
というサイトにGAを導入した場合(デフォルトでは)GAのCookieのdomain属性はexample.com
となります。つまり、ファーストパーティCookieです。
このため、GAのCookieはhttps://example.com/*
への各リクエストの際に送られることになります。サーバー側でGAのCookieを扱うことはないと思いますが、ファーストパーティCookieなので一緒についていってしまうというわけです。
しかし、サードパーティCookieはブロックされてしまったり、期限が短かったりするためファーストパーティCookieとせざるを得ないのだと思います。
GAのCookieをサブドメインには送らないようにする
デフォルトではGAのCookieはサブドメインへのリクエスト時にも送られることになります。
gtag.jsでは、Cookieドメインの自動設定がデフォルトで有効になっています。有効にすると、できる限り上位のドメインにCookieが設定されます。
Cookie ドメインの設定 - gtag.js
example.com
へのリクエスト時に送られてしまうのは仕方がないとして、せめてサブドメインは除外したいというケースもあると思います。例えば、静的ファイルを配信するstatic.example.com
に余計なCookieを送りたくないというような感じです。
gtag.jsでこの設定を行うにはconfig
コマンドでcookie_domain
プロパティを'none'
に設定すれば良さそうです。
cookie_domainは自動的に
'none'
に設定されます。この場合は、ドキュメントの場所の完全なドメインを使ってCookieが設定されます。
Cookie ドメインの設定 - gtag.js
gtag('config', 'トラッキングID', {
'cookie_domain': 'none'
})
cookie_domain
の値を'none'
にするとサブドメインにCookieが送られなくなる理由は、Cookieにdomain属性を設定しなかったときと同じ理屈だと思います。
Set-Cookieの際のDomain属性は、指定しない方が安全です。その理由は以下の通りです。
- Domain属性を指定しないCookieは、Cookieを発行したホストのみに送信される
- Domain属性を指定したCookieは、指定のホストおよびそのサブドメインのホストに送信される
GAのCookieの有効期限を短くする
デフォルトではGAのユーザーを区別するためのCookie(_ga
)の有効期限は2年間です(参考)。
gtag.jsでこの期間を短くするにはconfig
コマンドでcookie_expires
プロパティを指定します。例えば7日間にするには以下のような書き方になります。
gtag('config', 'トラッキングID', {
'cookie_expires': 7 * 24 * 60 * 60 // 7日間
});
ここでcookie_expires
の値を0
とすると、Cookieの有効期限はSession
となります。
Session Cookieがブラウザを閉じても消えないことがあるので注意
ブラウザの設定によっては、ブラウザを閉じてもSession Cookieが消えないことがあります。
例えばChromeでは[起動時]の設定で[前回開いていたページを開く]にチェックが入っていると、Chromeを起動し直してもSession Cookieが残ってしまいます。
つまり、gtagの設定ではcookie_expires: 86400
とするよりもcookie_expires: 0
としたときの方がCookieが長く残る可能性があるので注意が必要です。
他にGAのCookie周りで何か気づいたことがあったら追記します。
Discussion