Дней с последнего сеанса в Google Analytics 4 с помощью Google Tag Manager
В этом материале мы с вами разберем настройку, позволяющую воспроизвести логику определения дней с последнего сеанса в Google Analytics 4, как это было в раньше в Universal Analytics.
Этот материал является адаптацией руководства, опубликованного на medium.com. Его автор и создатель - Anatolii Shulhat.
Наверняка вы знаете, что в Google Analytics 4 нет встроенного измерения, позволяющего узнать, какое количество времени прошло с предыдущего сеанса пользователя. В Universal Analytics (GA3) такой отчет существовал. Он назывался Периодичность и давность (Frequency & Recency) и показывал не только общее количество сеансов, но и количество дней, которое прошло с предыдущего сеанса.
Чтобы воспроизвести похожее в GA4, Google предлагает использовать нам Google BigQuery. Однако большинство владельцев счетчиков не работают в облачном хранилище данных, а весь анализ проводят в интерфейсе Google Analytics 4. Да и сам SQL-запрос построить в BigQuery не так просто...
Анатолий разработал решение на базе Google Tag Manager, которое позволит дополнить статистику в нашем ресурсе GA4 новыми данными о сеансах пользователей. Об этом и пойдет речь далее.
Дополнительные материалы по сеансам Google Analytics 4:
- Сеансы (Sessions)
- Число сеансов в Google Analytics 4
- "Темная сторона" сеансов в Google Analytics 4
- Расчет сеансов Google Analytics 4 в Google BigQuery
Итак, решение, которое позволит осуществить желаемое, основано на шаблоне тега GTM и переносе времени с момента последнего сеанса на уровень данных (dataLayer). Оно называется Time Since Last Session for GA4. Для его установки перейдите в свой контейнер Google Tag Manager, а затем откройте Шаблоны - Поиск в галерее:
В поиске введите Time Since Last Session for GA4:
Добавьте шаблон тега в свою рабочую область:
Примечание: скачать шаблон можно и в GitHub.
Напоминаю, что все созданные сторонними разработчиками шаблоны в галерее сообщества являются их собственными решениями. Google не несет никакой ответственности за их использование. Для Time Since Last Session for GA4 требуются разрешения на доступ к глобальным переменным, настройкам и чтению файлов cookie, а также вывод данных в консоли разработчика и режиме предварительного просмотра Google Tag Manager. Если вы согласны с этим, нажмите кнопку Добавить.
Данный шаблон станет доступен в вашем контейнере GTM. После этого перейдите в раздел Теги и выберите из пользовательских тегов Time Since Last Session for GA4:
В открывшемся окне вы увидите следующие настройки тега:
Ключевые настройки - это поля, которые передаются на уровень данных в момент совершения определенного события (. Когда пользователь просматривает страницу, в dataLayer передаются данные о текущем и предыдущем сеансе - их идентификаторы и порядковые номера:
- current_session_id (текущий идентификатор сеанса);
- previous_session_id (предыдущий идентификатор сеанса);
- current_session_number (текущий номер сеанса);
- previous_session_number (предыдущий номер сеанса);
Еще нам нужен ряд показателей в разных единицах времени, показывающих, сколько времени прошло между началом сеансов.
- mins_since_last_session (количество минут с последнего сеанса);
- days_since_last_session (количество дней с последнего сеанса);
- weeks_since_last_session (количество недель с последнего сеанса);
- monthes_since_last_session (количество месяцев с последнего сеанса);
Поскольку Анатолий работал ранее с Adobe Analytics и разрабатывал это решение по причине перехода на Google Analytics 4, в его шаблоне заложена еще одна настройка - adobe_recency_buckets. Она позволяет получить аналогичные группы периодичности/давности сеансов из этой аналитической системы. Мы в дальнейшем использовать ее не будем, поэтому в настройках тега ее можно деактивировать. Просто знайте, что в это поле будут записаны следующие значения:
- менее 1 дня
- 1–3 дня
- от 3 до 7 дней
- от 7 до 14 дней
- от 14 дней до 1 месяца
- более 1 месяца
Для тех, кто ностальгирует по Universal Analytics, автор добавил похожие дни с момента последней сессии для Google Analytics 4. За это отвечает поле universal_recency_buckets. Для него Анатолий добавил следующие интервалы (согласно функционалу предыдущей версии Google Analytics):
- 0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8–14
- 15–30
- 31–60
- 61–120
- 121–364
- 365+
В сам тег заложены дополнительные
- No empty string in the main event (включив эту опцию, все пустые переменные будут заполнены значением Нет данных предыдущего сеанса / No previous session data);
- Disable QA dataLayer events (выключив эту настройку, на шкале событий в режиме отладки GTM будут отображаться дополнительные события, позволяющие осуществить контроль качества передаваемых данных в dataLayer).
Возможно до 6 дополнительных событий:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
1. dataLayer.push({ 'event': 'get_cookies_with_session_data_qa', 'storedPreviousSessionID': savedPreviousSessionID, 'storedCurrentSessionID': savedCurrentSessionID, 'liveCurrentSessionID': liveCurrentSessionID }); 2. dataLayer.push({ 'event': 'store_cookies_with_session_data_qa', 'store_type': 'no_previous_session_id_stored', 'storedPreviousSessionID': savedPreviousSessionID, 'storedCurrentSessionID': savedCurrentSessionID, 'liveCurrentSessionID': liveCurrentSessionID }); 3. dataLayer.push({ 'event': 'store_cookies_with_session_data_qa', 'store_type': 'change_previously_stored_session_ids', 'storedPreviousSessionID': savedPreviousSessionID, 'storedCurrentSessionID': savedCurrentSessionID, 'currentSessionId': liveCurrentSessionID }); 4. dataLayer.push({ 'event': 'no_cookies_storing_qa', 'store_type': 'the_same_session_is_running', 'storedPreviousSessionID': savedPreviousSessionID, 'storedCurrentSessionID': savedCurrentSessionID, 'currentSessionId': liveCurrentSessionID }); 5. dataLayer.push({ event: 'live_current_session_id_gtag_qa', gtagApiQA: liveCurrentSessionDataGtagObject }); 6. dataLayer.push({ 'event': 'seconds_since_last_session_qa', 'timeDiff': secondsSinceLastSession, 'currentSessionID': currentSessionID, 'previousSessionID': previousSessionID }); |
В Google Tag Manager это будет выглядеть так:
Самое главное, что вам нужно для генерации всех описанных выше полей, это всего две переменные - идентификаторы предыдущей и текущей сессии. По сути, идентификатор сеанса в Google Analytics 4 - это временная метка начала сеанса. А разница между двумя временными метками (текущей сессии и предыдущей сессии) - то, что нам нужно для создания требуемого измерения.
Google позволяет использовать gtag.js API для получения текущей сессии, но предыдущую сессию, если у вас нет BigQuery и серверного контейнера Google Tag Manager, просто так получить нельзя. Поэтому нам необходимо создать логику, которая будет сохранять текущий сеанс пользователя в файле cookie и при запуске его нового сеанса сохранять как новый, так и предыдущий сеансы.
Вот краткое описание работы пользовательского тега Time Since Last Session for GA4:
- он извлекает идентификатор и номер текущего сеанса через API gtag;
- он считывает пользовательский файл cookie, который должен хранить как предыдущие, так и текущие сеансы;
- если не записан ни предыдущий, ни текущий сеансы -> записывается текущий сеанс;
- если сессия, сохраненная как текущая, не совпадает с текущей сессией, возвращаемой API gtag - мы переопределяем сессии. Та, которая была сохранена как текущая, становится предыдущей, а новая сессия пользователя сохраняется как текущая;
- после того, как скрипт обработал значения в файлах cookie, он вычисляет разницу между двумя временными метками сеанса и преобразует секунды в необходимые значения времени, или сегменты, которые знакомы по другим аналитическим системам. Эти данные записываются в переменные уровня данных mins_since_last_session, days_since_last_session, weeks_since_last_session и monthes_since_last_session соответственно;
- последним шагом должно сработать событие since_last_session_data со всеми вышеописанными параметрами на уровне данных.
Результатом этого пользовательского шаблона является событие since_last_session_data и заполненный dataLayer (когда нет предыдущих данных):
Шаблон работает через файлы cookie. Это означает, что если пользователь новый, то о нем нет никакой информации. Поэтому в большинстве переменных будет значение No previous session data или оставить поля пустыми (см. настройку выше).
И аналогичное событие с тем же уровнем данных, когда данные о предыдущем сеанса пользователя есть:
В переменной уровня данных days_since_last_session будет отображаться дней с последнего сеанса. Именно это значение мы и будем передавать в Google Analytics 4.
Таким образом, итоговые настройки тега, которые вы можете задать для корректного отслеживания дней с последнего сеанса, будут такими:
- current_session_id, previous_session_id, current_session_number, previous_session_number и days_since_last_session - активные поля на уровне данных;
- No empty string in the main event и Disable QA dataLayer events - активные дополнительные настройки.
Задайте название тегу и сохраните его. Триггер можно не указывать. Затем перейдите в раздел Переменные и создайте пользовательскую переменную типа Переменная уровня данных.
Сохраните ее. Теперь создайте триггер типа Специальное событие с названием события since_last_session_data. Именно оно отображается на шкале события после активации шаблона тега. И именно этот триггер будет являться условием активации тега события Google Analytics 4, отправляя page_view с дополнительным параметром события.
Как вы уже догадались, вам необходимо скорректировать свой тег Google, задав в нем параметр конфигурации send_page_view - false.
Это нужно для того, чтобы событие page_view не отправлялось в Google Analytics 4 два раза и данные в счетчике по просмотрам страницы не дублировались. Еще необходимо в расширенных настройках тега Google задать последовательность активации тегов, чтобы шаблон тега загружался после тега Google:
Сохраните настройки в теге Google. Теперь создайте тег типа Google Аналитика: событие GA4 и задайте следующие настройки:
- ваш идентификатор ресурса Google Analytics 4;
- название события - page_view;
- параметр события - days_since_last_session (например);
- значение параметра события - переменная уровня данных, созданная на предыдущем шаге (в моем примере - это days_since_last_session).
Это позволяет фиксировать событие просмотра страницы с новым параметром уровня данных сеанса days_since_last_session, в котором как раз и передается количество дней с последнего сеанса пользователя.
Таким образом, в самой простейшей настройке вам необходимо добавить/обновить следующие теги:
Сохраните изменения и опубликуйте контейнер Google Tag Manager. Все, что вам осталось сделать - это создать в Google Analytics 4 специальный параметр для отображения данных о количестве дней с последней сессии в интерфейсе.
Задайте ему следующие настройки:
- Название параметра - Дней с последнего сеанса (произвольное)
- Область действия - Событие
- Параметр события - days_since_last_session
Сохраните специальный параметр. После этого может пройти до 24 часов прежде, чем данные появятся в отчетах Google Analytics 4. Как только статистика начнет собираться и поступать в GA4, вы можете построить Исследование в свободной форме, выбрав нужные вам параметры и показатели. Если вы желаете сформировать схожий с Universal Analytics отчет, тогда выберите:
- Параметр - Дней с последнего сеанса
- Показатели - Сеансы и Просмотры
- Фильтр на событие page_view, поскольку вы передаете дополнительный параметр именно в этом событии
Со временем, когда данных будет становиться все больше и больше, вы будете видеть и другие интервалы по дням.
Автор шаблона тега изначально заложил логику интервалов дней с последнего сеанса именно такую, как это было ранее в Google Analytics 3 (0, 1, 2, 3, .... 8–14, 15–30, 31–60, 61–120, 121–364, 365+). Однако если вам нужно реализовать собственные интервалы по количеству дней, вы можете воспользоваться пользовательской переменной типа Таблица регулярных выражений, а в качестве входной переменной задать переменную уровня данных days_since_last_session: