Стань экспертом digital маркетинга
Детальный разбор cookie файлов, которые создаёт Google Universal Analytics или что такое _ga cookie?
В этой статье детально описаны все принципы работы с cookie файлами Google Universal Analytics - библиотеки analytics.js, самой современной версии Google Analytics. Принцип работы старого Google Classic Analytics отличается от Universal Analytics, но его нет смысла рассматривать, так как он устарел.

Если вы хотите полностью понимать как Google Analytics собирает информацию, определяет пользователей, сессии и другие показатели, а так же как происходит отслеживание сессий с разных устройств(cross device tracking) и по уровням домена(cross domain tracking) вам необходимо знать, что такое _ga cookie файл и как Google Analytics его использует.
Что такое cookie файл и для чего он используется?
Cookie файл или как выражаются аналитики ''кука'' – это обычный текстовый файл, который используется чтобы:

- хранить информацию о предпочтениях пользователей, местоположении и других деталях.

- защищать данные пользователей от несанкционированного доступа.

- поддерживать работоспособность веб-сайтов.

- персонализировать рекламу под запросы пользователя, тем самым делать более эффективный ре-маркетинг.

- собирать данные в Google Analytics и в другие системы веб аналитики.

По умолчанию файлы cookie хранятся на жестком диске компьютера пользователя, при условии, что это разрешено настройками браузера.
Cookie файлы бывают двух типов First-Party и Third-Party.

First-Party – создаются/устанавливаются сайтом, который вы посетили. Только это сайт их может прочитать, тем самым определить, что посещаете его не в первый раз, если вы уже заходили на него до этого момента.

Third-Party – создаются партнёрами сайта, который вы посетили.

Любой куки файл имеет свой срок хранения, который может быть задан, а может и нет.

Cookie файлы, которые создаются/устанавливаются без ограничения срока действия называются временными - temporary cookies, срок хранения которых, заканчивается после завершения веб-сессии или после закрытия окна браузера.

Файлы cookie, которые создаются с определённым сроком хранения, называются постоянными - persistent cookies и они не исчезают, если вы завершаете веб-сессию или закрываете окно браузера.


Какие cookie файлы, создаёт и использует JavaScript библиотека analytics.js?
Java Script библиотека analytics.js создаёт/использует First-Party cookie, которые являются постоянными и хранятся по умолчанию 2 года на вашем компьютере, срок действия которых, обновляется при любом взаимодействии с сайтом. Основной cookie файл имеет название _ga.

Есть исключения: DoubleClick cookies, типа Third-Party, которые используются сайтом для показа рекламы и ремаркетинга.

Google Universal Analytics работает через библиотеку Javascript под названием analytics.js, которая создаёт Cookie файлы, сразу же, как вы посетили страницу, на которой установлен код счетчика.
Google Universal Analytics, использует cookie файлы чтобы:

- определять/различать уникальных посетителей

- определять/различать уникальные сессии

- хранить информацию о сессиях пользователя и рекламных кампаниях, с которых он пришел.

По правилам конфиденциальности Гугл, запрещается собирать/хранить в cookie файлах любую личную информацию о посетителях.
JavaScript библиотека analytics.js создаёт следующие first-party cookie:

_ga cookie – главный cookie файл, который используется для идентификации посетителя, со сроком жизни 2 года, и обновляется при каждом новом взаимодействии с сайтом.

_gat cookie – используется для ограничения частоты запросов, срок жизни которого 10 минут.

Эти cookie файлы создаются на домене верхнего уровня, для того чтобы на поддоменах сайта, посетители могли отслеживаться без каких либо дополнительных настроек.
Что такое домен верхнего уровня или высший уровень домена?
Домен верхнего уровня(top level domain) - это высший уровень домена(the highest domain level).

Например, у нас есть домен, у которого есть поддомены:
- www.ruanalytics.ru
- blog.ruanalytics.ru
- eng.blog.ruanalytics.ru

Высший уровень домена – ruanalytics.ru, это и есть верхний уровень домена.
Вторые уровни - www.ruanalytics.ru и blog.ruanalytics.ru
Третий уровень - eng.blog.ruanalytics.ru
Вообще, высший уровень домена это .ru , но Google Analytics не может установить cookie файл на такой уровень.
Вот пример стандартного кода счетчика Google Universal Analytics:
Код счетчика обращается к java script библиотеке Analytics.js
<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','https://www.google-analytics.com/analytics.js','ga');
  
  ga('create', 'UA-1234567-1', 'auto'); //с помощью этой строки analytics.js создаёт идентификатор отслеживания, тем самым создавая cookie файл. 
//'UA-1234567-1' - номер счетчика
//'auto' – значит, что cookie файл создан на самом верхнем уровне и вам не над дополнительно настраивать междоменное отслеживание.
ga('send', 'pageview' );
</script>
Какие атрибуты есть у _ga cookie?
_ga cookie имеет следующий набор атрибутов:
1
Название - cookieName
2
Домен - cookieDomain
3
Путь к директории на сервере - cookiePath
4
Срок хранения - cookieExpires
1. Название

По умолчанию сookie файл, который использует Google Analytics , имеет название _ga. Чтобы изменить это имя на какое либо другое, нужно использовать команду 'cookieName'. Например:

Так меняется имя по умолчанию. Значение 'cookieName' должно соответсвовать типу - текст
ga('create', 'UA-987654-1', {'cookieName': 'ruanalytics'});
2. Домен

Домен cookie, это домен куда Google Analytics установиливает _ga cookie.
По умолчанию, cookie фаил устанавливается на домен верхнего уровня. Так что, если вы установили куки в домене верхнего уровня, например www.ruanalytics.net то домен куки будет 'ruanalytics.net', без приставки "WWW".
Если установить _ga cookie на уровне поддомена(либо на любом другом уровне), например blog.ruanalytics.net, необходимо использовать команду 'cookieDomain':

Значение 'cookieDomain' должно соответсвовать типу – текст(text).
ga('create', 'UA-1234567-2', {'cookieDomain': 'blog.ruanalytics.net' });
Важно: В случае междоменного отслеживания, домен, где установлен cookie файл, должен быть предком текущего домена.
Например, если текущий домен www.xyz.com, то вы можете установить куки на xyz.com, так как xyz.com является предком www.xyz.com. Но вы не можете установить куки на files.xyz.com, потому что это не является предком www.xyz.com
Кроме того, вы не можете установить куки на какой-то другой сайт, как "rua.com", потому что он не является предком www.xyz.com
Если задать неверное значение для cookieDomain, то _ga cookie не установится.
3. Путь к файлу

Если нужно хотите изменить путь к файлу _ga cookie, который установлен по умолчанию '/', допустим на /abc, тогда надо воспользоваться командой cookiePath, чтобы поменять значение пути:

ga('create', 'UA-1234567-1', {'cookiePath': '/abc/'});
Обратите внимание, что Google, крайне не рекомендует менять это значение.
4. Срок хранения _ga cookie

Срок жизни cookie измеряется в секундах и по умолчанию имеет значение два года с последнего обновления, каждый раз когда новое взаимодействие(hit) отправляется в Google Analytics, срок жизни обновляется до двух лет.
Срок жизни можно поменять с помощью команды 'cookieExpires':

Значение 'cookieExpires' должно соответсвовать типу – целое число(integer).
Пример ниже показывает как поменять срок хранения cookie файла, в данном случае, он изменён на 2 минуты (120 сек)
ga('create', 'UA-1234567-1', {'cookieExpires': 120});
Знание и понимание атрибутов _ga cookie значительно упростит настройку междоменного отслеживания(cross domain tracking)
Как посмотреть, где
находятся cookie файлы, созданные analytics.js?
Cookie файлы analytics.js создаются, как только пользователь загружает веб-страницу в своем браузере (при условии, что на веб-странице установлен код счетчика google universal analytics). Существует несколько способов их посмотреть:
1 способ

Открыть веб страницу с помощью браузера Google Chrome, где обязательно должен быть установлен код счетчика Google Universal Analytics. В любом месте на странице нажать на правую кнопку мышки и выбрать строку "Просмотреть код"
- нажать на правую кнопку мышки и выбрать строку "Просмотреть код"
У вас откроется окно инструментов разработчика браузера
- открыть раздел Application и найти вкладку Cookies в левом углу:
Если раздел "Application" не видно, просто растяните окно инструментов разработчика
Другой способ
Открыть веб страницу с помощью Google Chrome:
Для пользователей Windows нажать кнопку F12
Если у вас Mac зажать клавиши command+option+J
И как в описанном выше способе, перейти в раздел Application и нажать Cookies в левом углу.
Вы можете подробно посмотреть все cookie файлы созданные для всех веб страниц, которые вы когда либо посещали в настройках браузера Google Chrome, а так же посмотреть как выглядет _ga cookie файл:
- в верхнем правом углу нажать на значок и перейти в ''Настройки'':

- прокрутить до конца и нажать ''Показать дополнительные настройки'':
- выбрать пункт ''Настройки контента'':
- перейти в раздел ''Все файлы cookiе и данные сайтов'':
- указать название вашего или любого другого сайта, на котором установлен код Google Universal Analytics.
Analytics.js создаёт два cookie файла под названием _ga и _gat:


_ga и _gat cookie
_gat cookie это временный файл срок жизни которого, по умолчанию, составляет не больше 10 минут
Вот так выглядет основной cookie файл, который используется для сбора данных Google Universal Analytics - _ga cookie:

_ga cookie файл
Зайдя в _ga cookie можно посмотреть из чего он состоит, а так же увидеть, что по умолчанию, его срок хранения составляет 2 года
Структура _ga cookie.
_ga cookie cостоит из 4 полей:
Структура _ga cookie
1
Поле 1, содержит номер версии - (GA1) , сейчас это стандартная версия, но если формат cookie в будущем поменяется, номер может измениться.
2
Поле 2, это число компонентов в домене, разделенных точкой. По умолчанию _ga cookie устанавливается на домен верхнего уровня в корень (/).
3
Поле 3 - это уникальный ID (unique id) - случайно сгенерированое число.
4
Поле 4 - это первый штамп времени - дата первого посещения пользователем сайта в Unix формате (количество секунд, прошедших с первого января 1970-ого года).
Что такое идентификатор клиента/посетителя или что такое Client ID?
clientID
Третье и четвертое поле вместе образуют идентификатор клиента, это и есть client ID.
Вот как Google Analytics различает уникальных пользователей/посетителей во время сеанса - использует cookie файл, в котором содержится client Id.

Analytics.js создаёт Cookie файл с уникальным номером на устройстве в конкретном браузере, с которого человек в первый раз посещает сайт . В дальнейшем, все сессии и взаимодействия привязываются к этому пользователю и к его браузеру и устройству как раз за счет уникального client id.
Сookie файл Google Analytics может находиться только на устройстве и браузере, где он был создан/установлен. Так как идентификатор клиента(client Id) хранится в _ga cookie, то он тоже существует только на устройстве и браузере, где установлен данный cookie файл.
По этой причине, по умолчанию, Google Analytics не может идентифицировать уникальных пользователей совершающие визиты/сессии с разных веб-браузеров или устройств, потому что для каждого визита пользователя с нового устройства или браузера, создаётся новый cookie файл, то есть новый client id и Google Analytics считает этого пользователя за нового.
Как отслеживать пользователя с разных браузеров и устройств?
С помощью USER ID. Идентификация уникальных пользователей заходящих с различных веб-браузеров и устройств называется "cross device tracking". Если на сайте есть регистрация и пользователь заходит под своей учетной записью, ему можно присвоить USER ID, с помощью которого, можно идентифицировать пользователя, даже если он заходит с разных браузеров или устройств.
USER ID - это уникальное случайное число, которое используется для идентификации пользователей, заходящих с различных веб-браузеров или с разных устройств. С помощью него можно привязать все сессии с разных устройств и браузеров к одному пользователю зарегистрированному на сайте, который имеет свою учетную запись.
USER ID отличается от CLIENT ID , так как идентификатор клиента(client ID) создается Google Analytics, а идентификатор пользователя(user ID), генерируется на сайте системой аутентификации пользователей с помощь логина, под которым он заходит.
Передать user ID в Google Аnalytics, можно несколькими способами:
Способ передачи через команду ga('set')
На сайте должна быть реализована функция, которая генерирует и подставляет значение типа строка(string) в 'USER_ID'
ga('set', 'userId', 'USER_ID'); 
 
ga('set', 'userId', 'RDV11121323'}); //Пример с подставленным значением:
Способ передачи путём подстановки 'user id' в строку 'create' в коде счетчика Google Analytics:
ga('create', 'UA-1234567-1', 'auto',{ 'userId': 'USER_ID' });
//например:
ga('create', 'UA-1234567-1', 'auto',{ 'userId': 'RDV11121323'});

Две важные вещи, которые стоить запомнить при отправке User ID данными способами:
1. Строка с командой set должна быть размещена после строки с командой create. В противном случае идентификаторы пользователей не будут ассоциироваться с вашим веб-ресурсом.
ga('create', 'UA-1234567-1', 'auto'); 
ga('set', 'userId', 'USER_ID');

//или

ga('create', 'UA-1234567-1', 'auto', {'userId': 'USER_ID'});

2. User Id должен оправляться, прежде чем данные в Google Analytics. То есть строка с командой 'set' или 'create' должна находиться перед строкой с командой 'send'. В противном случае идентификатор пользователя 'USER ID' не будет отправляться для всех последующих взаимодействий(hits/хитов) на странице.
ga('set', 'userId', 'USER_ID');  
ga('send', 'pageview');

или 

ga('create', 'UA-1234567-1', 'auto',{'userId': 'USER_ID'});
ga('send', 'pageview');
Чтобы User ID отображался в отчетах Google Analytics, следует создать новый пользовательский параметр уровня пользователь
ga('set', 'dimension1', userId); //dimension1 используется как пример 
//номер вашего пользовательского параметра может быть другой.
Как отключить cookie файлы в analytics.js?
Можно использовать свой собственный механизм хранения и отправки данных Google Analytics не используя cookie файлы вообще, для этого надо поставить параметр хранилища "storage" на "none" и создать самописный скрипт для отправки и генерации идентификатора клиента. Вот как примерно это будет выглядеть:
ga('create', 'UA-1234567-1', { 'storage': 'none', 'clientId': '87998c79-0d88-95e-d654-3f5g345b' });
// client id генерируется самописным скриптом. 
Как удалить cookies?
Зайти в настройки браузера и перейти в раздел "Файлы cookie и данные сайтов". В верхнем правом углу найти кнопку "Удалить все показанные файлы cookie". Подробнее ознакомиться можно здесь.
Если удалить _ga cookie в браузере, а потом вернуться обратно на этот же сайт, analytics.js заново создаст _ga cookie файл и Google Analytics посчитает вас уже как нового пользователя.
Однако не факт, что все вернувшиеся пользователи будут считаться как новые, так как analytics.js, не всегда берёт данные только из _ga cookie, учитывая, что загрузка данных могла быть совершена при использовании measurement protocol.
Какие основные проблемы использования cookie файлов в веб аналитике?
1
Основная проблематика заключается в том, что все файлы cookie создаются для конкретного браузера и устройства, то есть если вы зашли на тот же сайт с другого браузера либо устройства, для вас создаётся новый _ga cookie файл, который никак не будет связан с тем, который создавался при посещений сайта с другого браузера или устройства до этого. То есть для Google Analytics это будут два разных пользователя.
2
Вторая проблема, если пользователь, по каким либо причинам удалит уже имеющийся _ga cookie файл, и зайдёт на сайт используя тот же браузер/устройство с которого заходил раньше, Google Analytics не распознает его и создаст новый уникальный _ga cookie файл, тем самым определит его как нового пользователя, что соответственно, как и в первом случае влияет на статистику посещений.
3
Третья проблема, более редкая, когда Google Analytics не может определить пользователя из за того что в браузере отключена поддержка cookie или JavaScript.
4
И ещё один недостаток _ga cookie в том, что вы не можете взять из файла конкретные данные по сессиям и рекламным кампаниям, так как все расчеты производятся непосредственно на серверах Google Analytics.
По сути, чтобы собирать иформацию, Google Universal Analytics, может и не использовать cookie вообще. Все данные можно отправлять через measurement protocol, но реализация такой системы сложна и неудобна (measurment protocol обычно используется для импорта данных, например, расходов по рекламным кампаниям, или для передачи данных с электронных терминалов, кассовых аппаратов, вендинговых аппаратов и прочих устройств подключенных к интернету, которые не используют веб браузер).