Код для формирования и передачи SessionID из браузера

by ROOM42
Код для формирования и передачи SessionID из браузера

Google Analytics по умолчанию предоставляет только агрегированные данные. Для того, чтобы можно было получать исходные “сырые” данные, используется несколько способов: установка отправки SessionID + UserID для каждого события, передаваемого счетчиком Google, и стриминг данных в базу данных. SessionID используется для построения моделей атрибуции, а также для удобства обработки сырых данных.


Мы столкнулись с проблемой, в которой имеющий большое распространение код для формирования SessionID перестал удовлетворять нашим требованиям. Сделали свой.

Почему возникли сложности с передачей session id в нашем случае?


Инструкцию по передаче session id и код для настройки предлагает и Симо Ахава, признанный эксперт по Google Analytics и Tag Manager. Однако его недостаток заключается в том, что код создает при каждом действии новый SessionID, не объединяя их в реальные сессии. При дальнейшем создании правил и объединении данных на их основе такая логика может оказаться подходящей. Тем не менее, мы сочли это неудобным. Наша цель была в том, чтобы SessionID присваивался корректно.


Была предпринята попытка взять данные о SessionID из файлов cookies, которые формирует Google. Оказалось, что cookie, доступные для пользователей, отдают только номера установленных счетчиков и пикселей.
Fail!

Но мы нашли решение


Мы решили написать код SessionID, который будет работать так же, как и в Google Analytics. Сессия начинается в тот момент, когда пользователь заходит на сайт, и заканчивается либо когда он закрывает браузер, либо, когда проходит 30 минут с момента его последнего действия. Ограничение в 30 минут выставляется в самом коде, и его можно менять.


Подробнее о структуре кода


Код разделен на две части: readCookie и writeCookie. При первой его активации, когда происходит загрузка сайта, код пытается “считать” SessionID из cookie-файлов. Однако мы не можем получить доступ к куки Google. Поэтому проверяем наличие записи уже своей куки. Когда код не видит SessionID, он его создает.

Здесь начинается второй этап — writeCookie. SessionID создается кодом на основе правила, указанного в предыдущем разделе. При последующих активациях кода, когда происходят любые действия пользователя на сайте, процесс повторяется. В этом случае SessionID уже создан, а значит, код просто обновляет время действия, а не создает новую сессию.


Код и инструкция к нему лежат в публичной части нашего репозитория.

Пользуйтесь и вспоминайте нас добрым словом!

(с) ROOM42

November 28, 2019
by Диана Казакова