쿠키 및 사용자 ID

Google 애널리틱스에서 두 개의 개별 조회가 동일한 사용자에게 속해 있는지 파악하려면 조회가 발생할 때마다 해당 사용자와 연결된 고유 식별자를 전송해야 합니다.

analytics.js 라이브러리는 브라우저 쿠키에 저장되며 무작위로 생성되는 고유의 Client ID 필드를 통해 이 작업을 수행합니다. 이를 통해 동일한 사이트에 대한 후속 방문이 동일한 사용자와 연결됩니다.

기본적으로 analytics.js에서는 _ga라는 단일 퍼스트 파티 쿠키를 사용하여 Client ID를 저장하지만 쿠키의 이름, 도메인, 만료 시간은 모두 맞춤설정될 수 있습니다. analytics.js가 생성하는 다른 쿠키에는 _gid, AMP_TOKEN, _gac_<property-id>가 있습니다. 이러한 쿠키는 무작위로 생성된 다른 ID 및 사용자에 대한 캠페인 정보를 저장합니다.

analytics.js는 쿠키를 사용하여 브라우징 세션 전반에서 순 사용자를 식별할 수 있지만, 여러 브라우저 또는 기기에서 순 사용자를 식별할 수는 없습니다. 사이트에 자체 인증 시스템이 있는 경우, Client ID 외에 User ID 기능을 사용하여 사용자가 사이트에 액세스하기 위해 사용하는 모든 기기에서 사용자를 더 정확하게 식별할 수 있습니다.

이 가이드에서는 쿠키 설정을 맞춤설정하는 방법과 여러 세션에서 사용자 활동을 보다 정확하게 측정하기 위해 사용자 ID 필드를 설정하는 방법을 설명합니다.

다음 표는 analytics.js에서 사용하는 기본 쿠키 필드 값을 보여줍니다.

필드 이름 값 유형 기본값
cookieName 문자 _ga
cookieDomain 문자 다음 자바스크립트 표현식의 결과:
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 명령어는 편의상 cookieDomain 필드를 세 번째 매개변수(선택사항)로 허용합니다.

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

권장 Google 애널리틱스 태그로 cookieDomain 필드에 'auto' 문자열을 설정할 수 있습니다.

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

'auto'cookieDomain으로 지정하면 analytics.js가 사용할 최적의 쿠키 도메인을 자동으로 결정하도록 자동 쿠키 도메인 구성이 사용 설정됩니다.

자동 쿠키 도메인 구성은 가능한 가장 높은 수준의 도메인에 _ga 쿠키를 설정합니다. 예를 들어 웹사이트 주소가 blog.example.co.uk이면 analytics.js에서 쿠키 도메인을 .example.co.uk로 설정합니다. 또한 서버가 로컬에서 실행 중(예: localhost)임을 analytics.js가 감지하면 cookieDomain'none'으로 자동 설정합니다.

조회가 Google 애널리틱스로 전송될 때마다 쿠키 만료 시간이 현재 시간 + cookieExpires 필드 값으로 업데이트됩니다. 즉, 기본 cookieExpires 시간인 2년을 사용하고 사용자가 매월 사이트를 방문하는 경우, 쿠키가 만료되지 않습니다.

cookieExpires 시간을 0(영)초로 설정하면 쿠키가 세션 기반 쿠키로 전환되며, 현재 브라우저 세션이 종료되면 만료됩니다.

cookieUpdatetrue(기본값)로 설정하면 페이지를 로드할 때마다 analytics.js가 쿠키를 업데이트합니다. 이렇게 하면 가장 최근의 사이트 방문을 기준으로 쿠키 만료가 업데이트됩니다. 예를 들어 쿠키 만료 기간이 1주일로 설정되어 있고 사용자가 5일마다 동일한 브라우저를 사용하는 경우, 쿠키 만료 기간이 방문할 때마다 업데이트되므로 실질적으로는 만료되지 않습니다.

false로 설정할 경우 페이지 로드 시 쿠키가 업데이트되지 않습니다. 이는 사용자가 사이트를 처음 방문했을 때의 시점을 기준으로 쿠키가 만료되는 것과 같은 효과를 갖습니다.

설정되면 쿠키에 추가적인 플래그가 추가됩니다. 플래그는 세미콜론으로 구분해야 합니다.

쿠키 형식은 향후에 변경될 수 있으므로 쿠키 analytics.js 집합에 직접 액세스해서는 안 됩니다. 대신 개발자는 readyCallback을 사용하여 analytics.js가 로드될 때까지 기다린 다음, 추적기에 저장된 clientId 값을 가져와야 합니다.

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

쿠키 사용 중지

경우에 따라 자체 저장 메커니즘(예: localStorage 또는 서비스 워커)을 이용하여 쿠키를 사용하지 않고도 여러 세션에서 Client ID를 유지할 수 있습니다. storage 필드를 'none'으로 설정하여 analytics.js에서 쿠키를 설정하지 않도록 설정할 수 있습니다.

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> 쿠키를 사용 중지하려면 create 명령어에서 storeGac 필드를 false로 설정합니다.

ga('create', 'UA-XXXXX-Y', {
  storeGac: false,
});

localStorage 사용하여 Client ID 저장

다음 코드 샘플은 localStorage를 사용하여 쿠키가 아닌 Client ID를 저장하도록 JavaScript 태그를 수정하는 방법을 보여줍니다.

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');

페이지 로드 후 인증 처리

최초 페이지 로드 후 사용자 로그인을 처리하는 단일 페이지 애플리케이션 또는 기타 동적 웹사이트를 빌드하는 경우, 추적기에서 사용자 ID 값을 설정하는 프로세스는 생성 시점에 일어날 수 없습니다.

이러한 경우 set 명령어를 사용하여 값을 아는 즉시 추적기에 값을 설정할 수 있습니다.

// 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 필드가 설정되기 전에 전송된 조회에는 사용자 ID 값이 포함되지 않습니다. 하지만 Google 애널리틱스는 세션 통합이라는 프로세스를 통해 처리 시점에 이러한 조회를 올바른 사용자와 연결할 수 있습니다.