Google アナリティクスで 2 つの異なるヒットが同じユーザーに由来することを確認するには、そのユーザーに関連付けられた固有の ID を各ヒットと合わせて送信する必要があります。
analytics.js ライブラリでは、クライアント ID フィールド(ランダムに生成され、ブラウザの Cookie に保存される固有の ID)を使用して、ユーザーを確認しています。これによって、2 度目以降のサイトへの訪問を同じユーザーに関連付けることができます。
analytics.js は、デフォルトで _ga
という名前の単一のファーストパーティ Cookie を使用してクライアント ID を保存します。この Cookie の名前、ドメイン、有効期限はすべてカスタマイズできます。analytics.js で作成されたその他の Cookie には、_gid
、AMP_TOKEN
、_gac_<property-id>
が含まれます。これらの Cookie には、ユーザーについてランダムに生成されたその他の ID とキャンペーン情報が保存されます。
Cookie を使うと、analytics.js はブラウジング セッションをまたがってユニーク ユーザーを特定できます。ただし、ブラウザまたはデバイスをまたがって特定することはできません。サイトに独自の認証システムを導入している場合は、クライアント ID に加えて、User ID 機能を使うと、サイトへのアクセスに使用されるすべてのデバイスをまたがって、より正確にユーザーを特定できます。
このガイドでは、セッションをまたがるユーザー アクションをより正確に測定できるように、Cookie 設定をカスタマイズする方法と User ID フィールドを設定する方法を説明します。
Cookie のフィールドを設定する
次の表に、analytics.js で使用される Cookie のデフォルトのフィールド値を示します。
フィールド名 | 値の型 | デフォルト値 |
---|---|---|
cookieName |
テキスト | _ga |
cookieDomain |
テキスト |
次の JavaScript 表現の結果:document.location.hostname
|
cookieExpires |
整数 | 63072000 (2 年間(秒単位)) |
cookieUpdate |
ブール値 |
true
|
cookieFlags |
テキスト |
|
これらの値を変更するには、create
コマンドで渡す fieldObject
で別の値を指定します。たとえば、以下のようになります。
ga('create', 'UA-XXXXX-Y', {
'cookieName': 'gaCookie',
'cookieDomain': 'blog.example.co.uk',
'cookieExpires': 60 * 60 * 24 * 28 // Time in seconds.
'cookieUpdate': 'false',
'cookieFlags': 'SameSite=None; Secure',
});
最も一般的に設定されるフィールドは cookieDomain
です。利便性を高めるため、次のように create
コマンドではオプションの 3 つ目のパラメータとして cookieDomain
フィールドを指定できます。
ga('create', 'UA-XXXXX-Y', 'blog.example.co.uk');
Cookie ドメインの自動設定
次の推奨 Google アナリティクス タグでは、cookieDomain
フィールドに文字列 'auto'
を指定しています。
ga('create', 'UA-XXXXX-Y', 'auto');
cookieDomain
として 'auto'
を指定すると、Cookie ドメインの自動設定が有効になり、最適な Cookie ドメインが自動的に使用されます。
Cookie ドメインの自動設定では、_ga
Cookie ができる限り上位のドメインに設定されます。たとえば、ウェブサイト アドレスが blog.example.co.uk
の場合、Cookie ドメインは analytics.js によって .example.co.uk
に設定されます。なお、サーバーがローカル環境(localhost
など)で実行されていることを検出すると、cookieDomain
は自動的に 'none'
に設定されます。
Cookie の有効期限
ヒットが Google アナリティクスに送信されるたびに、Cookie の有効期限はその時点の時刻と cookieExpires
フィールドの値を足した値に更新されます。したがって、デフォルトの cookieExpires
の時間である 2 年間を使用している状況で、ユーザーが毎月サイトを訪問する場合、Cookie が期限切れになることはありません。
cookieExpires
を 0
(ゼロ)秒に設定すると Cookie がセッション ベースになり、現在のブラウザ セッションが終了した時点で期限切れとなります。
Cookie の更新
cookieUpdate
が true
(デフォルト値)に設定されていると、ページが読み込まれるたびに Cookie が更新されます。つまり、サイトへの最新の訪問に基づいて Cookie の有効期限が更新されます。たとえば、Cookie の有効期限が 1 週間に設定されていて、ユーザーが 5 日ごとに同じブラウザを使用して訪問した場合、Cookie の有効期限は訪問ごとに更新されるため、有効期限が切れることはありません。
false
に設定すると、Cookie はページの読み込みごとには更新されません。つまり、ユーザーが最初にサイトにアクセスしたときに基づいて Cookie の有効期限が決まります。
Cookie フラグ
設定時に Cookie に追加のフラグを追加します。フラグはセミコロンで区切る必要があります。
Cookie からクライアント ID を取得する
Cookie の形式は将来変更される場合があるため、analytics.js で設定される Cookie に直接アクセスすることは避けてください。代わりに readyCallback
を使用し、analytics.js が読み込まれるのを待ってから、トラッカーに保存された clientId
値を取得してください。
ga(function(tracker) { var clientId = tracker.get('clientId'); });
Cookie を無効にする
セッションをまたいでクライアント ID を保持するため、Cookie 以外のストレージ方法(localStorage
や Service Worker など)を使用する場合、storage
フィールドを 'none'
に設定すると、analytics.js による Cookie の設定が無効になります。
ga('create', 'UA-XXXXX-Y', { 'storage': 'none' });
clientId
フィールドを独自の方法で保存する場合は、トラッカーの作成時に必ず cliendId
フィールドを設定してください。
ga('create', 'UA-XXXXX-Y', { 'storage': 'none', 'clientId': '76c24efd-ec42-492a-92df-c62cfd4540a3' });
_gac_<property-id>
Cookie を無効にするには、create
コマンドで storeGac
フィールドを false
に設定します。
ga('create', 'UA-XXXXX-Y', {
storeGac: false,
});
localStorage を使用してクライアント ID を保存する
次のコードサンプルでは、JavaScript タグを変更して、Cookie の代わりに localStorage
を使用してクライアント ID を保存する方法を示しています。
var GA_LOCAL_STORAGE_KEY = 'ga:clientId';
if (window.localStorage) {
ga('create', 'UA-XXXXX-Y', {
'storage': 'none',
'clientId': localStorage.getItem(GA_LOCAL_STORAGE_KEY)
});
ga(function(tracker) {
localStorage.setItem(GA_LOCAL_STORAGE_KEY, tracker.get('clientId'));
});
}
else {
ga('create', 'UA-XXXXX-Y', 'auto');
}
ga('send', 'pageview');
User-ID
User ID を使用すると、個人を特定できない永続的な固有の文字列 ID でユーザーを表すことにより、複数のデバイスをまたいでセッションのグループを解析できます。User ID の実装をおすすめする理由については、User ID 機能を使用するメリットをご覧ください。
analytics.js を使用して User ID を実装する方法は次のとおりです。
- 個々のログイン済みユーザーを表す、個人を特定できない一意の永続的な文字列 ID を指定します。ほとんどの場合、この ID は認証システムから提供されます。
- 次のように、トラッカーに User ID を設定します。
ga('create', 'UA-XXXXX-Y', 'auto', { userId: USER_ID }); ga('send', 'pageview');
ページ読み込み後の認証を処理する
最初のページ読み込み後にユーザーのログインを処理するシングルページ アプリケーションまたは他の動的ウェブサイトを作成する場合、トラッカーに User ID 値を設定するプロセスは作成時には発生しません。
このような場合、set
コマンドを使用すると、User ID 値が通知された時点でトラッカーに User ID 値を設定できます。
// Creates the tracker and sends a pageview as normal // since the `userId` value is not yet known. ga('create', 'UA-XXXXX-Y', 'auto'); ga('send', 'pageview'); // At a later time, once the `userId` value is known, // sets the value on the tracker. ga('set', 'userId', USER_ID); // Setting the userId doesn't send data to Google Analytics. // You must also use a pageview or event to send the data. ga('send', 'event', 'authentication', 'user-id available');
この方法を使用する場合、userId
フィールドが設定される前に送信されたヒットには User ID 値が含まれません。ただし、セッション統合と呼ばれるプロセスを使用すれば、データ処理の際に Google アナリティクスでこれらのヒットに正しいユーザーを関連付けることができます。