Cookie とユーザーの識別

Google アナリティクスで 2 つの異なるヒットが同じユーザーに由来することを確認するには、そのユーザーに関連付けられた固有の ID を各ヒットと合わせて送信する必要があります。

analytics.js ライブラリでは、クライアント ID フィールド(ランダムに生成され、ブラウザの Cookie に保存される固有の ID)を使用して、ユーザーを確認しています。これによって、2 度目以降のサイトへの訪問を同じユーザーに関連付けることができます。

analytics.js は、デフォルトで _ga という名前の単一のファーストパーティ Cookie を使用してクライアント ID を保存します。この Cookie の名前、ドメイン、有効期限はすべてカスタマイズできます。

Cookie を使用することで、analytics.js はブラウジング セッションをまたがってユニーク ユーザーを特定できます。ただし、ブラウザや端末をまたがって特定することはできません。サイトに独自の認証システムを導入している場合は、クライアント ID に加えて、User ID 機能を使用することで、サイトへのアクセスに使用されるすべての端末をまたがって、より正確にユーザーを特定できます。

このガイドでは、セッションをまたがるユーザーをより正確にトラッキングできるように、Cookie 設定をカスタマイズする方法と User ID フィールドを設定する方法を説明します。

次の表に、analytics.js で使用される Cookie のデフォルトのフィールド値を示します。

フィールド名 値の型 デフォルト値
cookieName テキスト _ga
cookieDomain テキスト 次の JavaScript 表現の結果:
document.location.hostname
cookieExpires 整数 63072000(2 年間(秒単位))

これらの値を変更するには、create コマンドで渡す fieldObject で別の値を指定します。例:

ga('create', 'UA-XXXXX-Y', {
  'cookieName': 'gaCookie',
  'cookieDomain': 'blog.example.co.uk',
  'cookieExpires': 60 * 60 * 24 * 28  // Time in seconds.
});

最も一般的に設定されるフィールドは cookieDomain です。利便性を高めるため、次のように create コマンドではオプションの 3 つ目のパラメータとして cookieDomain フィールドを指定できます。

ga('create', 'UA-XXXXX-Y', 'blog.example.co.uk');

次の推奨の JavaScript トラッキング スニペットでは、cookieDomain フィールドに「auto」を指定しています。

ga('create', 'UA-XXXXX-Y', 'auto');

cookieDomain として「auto」を指定すると、Cookie ドメインの自動設定が有効になり、最適な Cookie ドメインを使用するよう自動的に analytics.js に通知されます。

Cookie ドメインの自動設定では、_ga Cookie ができる限り上位のドメインに設定されます。たとえば、ウェブサイト アドレスが blog.example.co.uk の場合、Cookie ドメインは analytics.js によって .example.co.uk に設定されます。なお、ローカル環境(localhost)でサーバーが実行されていることを検出すると、cookieDomain は自動的に「none」に設定されます。

ヒットが Google アナリティクスに送信されるたびに、Cookie の有効期限はその時点の時刻と cookieExpires フィールドの値を足した値に更新されます。したがって、デフォルトの cookieExpires の時間である 2 年間を使用している状況で、ユーザーが毎月サイトを訪問する場合、Cookie が期限切れになることはありません。

cookieExpires0(ゼロ)秒に設定すると、Cookie はセッション ベースの Cookie になり、現在のブラウザ セッションの終了とともに有効期間が切れます。

Cookie の形式は将来変更される場合があるため、analytics.js で設定される Cookie に直接アクセスすることは避けてください。代わりに、readyCallback を使用して、analytics.js の読み込みを待ってから、トラッカーに保存された clientId の値を取得してください。

ga(function(tracker) {
  var clientId = tracker.get('clientId');
});

Cookie を無効にする

独自のストレージ メカニズム(localStorageService Worker など)を使用する場合は、Cookie を使用することなくセッションをまたいでクライアント ID を保持できます。analytics.js による Cookie の設定を無効にするには、storage フィールドを「none」に設定します。

ga('create', 'UA-XXXXX-Y', {
  'storage': 'none'
});

clientId フィールドを独自の方法で保存する場合は、トラッカーの作成時に必ず cliendId フィールドを設定してください。

ga('create', 'UA-XXXXX-Y', {
  'storage': 'none',
  'clientId': '76c24efd-ec42-492a-92df-c62cfd4540a3'
});

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 を実装する方法は次のとおりです。

  1. 個々のログイン済みユーザーを表す、個人を特定できない一意の永続的な文字列 ID を指定します。ほとんどの場合、この ID は認証システムから提供されます。
  2. 次のように、トラッカーに 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);

この方法を使用する場合、userId フィールドが設定される前に送信されたヒットには User ID 値が含まれません。 ただし、セッション統合と呼ばれるプロセスを使用すれば、データ処理の際に Google アナリティクスでこれらのヒットに正しいユーザーを関連付けることができます。