"Темная сторона" сеансов в Google Analytics 4

05 мая, 2021

Изучая более детально метрики, связанные с сессиями в Google Analytics 4, я начал встречать любопытные, а иногда даже не совсем очевидные и не вполне логичные варианты расчета сеансов и их отображения для конкретных пользователей. А затем я наткнулся на материалы Майка Салливана (Mike Sullivan) из analyticsedge.com и его примеры сеансов в Google Analytics 4, которые на многое пролили свет. Эта публикация будет основана на переводе нескольких его статей и моих дополнительных комментариях по сеансам в GA4.

Другие материалы, посвященные сеансам в Google Analytics 4:

Сеансы, продолжающиеся в полночь

Одна из особенностей в Universal Analytics заключалась в том, что сеансы, продолжающиеся в полночь, перезапускались при первом обращении после полуночи, даже несмотря на то, что идентификатор сеанса и количество сеансов не менялись. То есть если вы загрузили страницу в 23:50, а на следующую перешли в 00:02, то в UA создавалось два сеанса. Один зафиксируется с 23:50 до 23:59, а второй с 00:00 следующего дня).

Два сеанса в Universal Analytics (до и после полуночи)

На скриншоте выше желтым отмечены две записи для одного пользователя с одинаковым Client ID 15817315..., где один сеанс имеет час 23 и дату 16 марта 2021 года, то есть совершен до полуночи, а другой сеанс зарегистрирован после - в 00 часов и 17 марта 2021 года. Поэтому в столбце Sessions (Сеансы) отображается 1 для каждого сеанса.

Другим метрики в таблице:

  • Count of Sessions - количество сеансов;
  • Pageviews - количество просмотров страниц;
  • Entrances - входы;
  • Exits - выходы.

Вот как это выглядело в Universal Analytics в отчете Статистика пользователей для сеанса конкретного пользователя, который начинался в полночь в один день, и заканчивался в другой:

Отчет "Статистика пользователей" (Universal Analytics)

Перезапуск сеанса после полуночи, вероятно, исторически использовался в Urchin (самой первой версии Google Analytics), чтобы упростить подсчет количества сеансов за каждый день. Хотя такой расчет может быть правильным, он влияет на многие другие показатели Google Analytics, такие как: входы (entrances), выходы (exits), страницы/сеансы (pages/session) и отказы (bounces).

Таким образом, при составлении отчетов за несколько дней сеансы учитывались дважды, а другие показатели объединялись. Если вы использовали пользовательские (специальные) события, то могли видеть сеансы без просмотров страниц (только события после полуночи), что могло ввести в заблуждение. Как раз на скриншоте выше сеанс в 23:59 начался с просмотра страницы, а в 00:00 с пользовательского события онлайн-чата TalkMe.

Если ваш сайт посещают пользователи из разных стран и часовых поясов, в особенности, в полночь, то эта проблема может стать для вас слишком заметной.

Google Analytics 4 не начинает новый сеанс после полуночи

В отличие от Universal Analytics, в Google Analytics 4 сеансы могут длиться несколько дней и при этом считаться одним и тем же сеансом, они не будут перезапускаться в полночь. Другими словами, сеансы, продолжающиеся в полночь, не вызывают второе событие session_start. Но "за кулисами" могут происходить и другие события, которые в равной степени будут искажать статистику в ваших отчетах.

Событие начала сеанса session_start

Давайте рассмотрим такой пример от Майка:

Сравнение данных по сеансам и времени взаимодействия

Он заметил, что в его счетчике Universal Analytics для источника трафика google / organic было зафиксировано 2 сеанса за два дня. Эти же 2 сеанса отображались и в Google Analytics 4. Почему? И откуда взялось 3 минуты 44 секунды для показателя Среднее время взаимодействия за сеанс (Average engagement time per session)? И еще общее время взаимодействия отличалось от показанного значения (3 минуты 51 секунда против 3 минут 44 секунды)? И строка с источником (not set) без сеансов и без взаимодействий? Как такое произошло?

Погрузившись глубже в анализ данных своего счетчика Google Analytics 4, Майк заметил, что пользователь вернулся к открытым вкладкам браузера и взаимодействовал с двумя страницами через 8 часов после своего первого сеанса, поэтому событие session_start было зарегистрировано вновь. Остальные данные распределились следующим образом:

Анализ данных отдельно взятого пользователя

На скриншоте выше желтым отмечено начало первого сеанса с session_start (16 марта 2021 года в 23 часа) и несколько событий page_view и user_engagement, а светло-серой заливкой - начало второго сеанса с session_start на следующий день (17 марта 2021 года в 8 часов).

Взаимодействие (User engagement) в 448 секунд - это 7 минут 28 секунд, что как раз составляет половину от 3 минут 44 секунд. Если добавить еще 14 секунд из события user_engagement первого сеанса, то получится 7 минут 42 секунды. И если поделить это число на 2 сеанса, чтобы получить среднее время взаимодействия за сеанс, то получится 3 минуты 51 секунда. Еще одно загадочное число...

И обратите внимание, что первый сеанс начинается с источника google, но после полуночи он переопределяется до (not set):

Переопределение источника трафика с google на not set после полуночи

Это объясняет существование строки (not set) в отчетах Google Analytics 4.

Почему так происходит? Куда пропали 14 секунд взаимодействия со страницей? И почему после полуночи источник изменился на (not set)? Майк решил взять экспортированные данные из Google BigQuery, и внезапно результаты в Universal Analytics и Google Analytics 4 стали выглядеть более похожими.

Данные из Google BigQuery

На скриншоте оранжевой заливкой выделена первая сессия (с идентификатором сеанса ga_session_id 1615953471), а красным шрифтом - первый день (16 марта 2021 года).

Первый просмотр страницы (page_view) после полуночи помечается как вход/entrance, а параметр ignore_referrer имеет значение true. Домены, с которыми связаны такие события, не будут считаться источниками трафика. Вероятно, именно из-за этого даже в рамках своего собственного сайта в отчетах по источникам для таких просмотров страниц трафик будет помечен как (not set).

И похоже, что вход/entrance не становится отдельным сеансом в отчетах (у обоих сеансов был источник google). Просто имейте в виду, что вход/entrance не всегда устанавливает целевую страницу сеанса. А поскольку второй сеанс (белая заливка на скриншоте) не включал никаких событий page_view, входов/entrances зарегистрировано не было.

Майк предполагает, что единственная причина, по которой для этой сессии назначен источник google, заключается в том, что событие user_engagement было записано на странице, появившейся в первый день:

Источник google для второй сессии без просмотров страниц был взят из первого сеанса

Он также заметил, что в сеансе, который длится до полуночи, не регистрируется значение для параметра engaged_session_event, связанного с взаимодействием второго дня, хотя время взаимодействия было записано.

Смелое предположение от Майка: Google откладывает событие session_start до завершения сеанса и регистрируют его со значением session_engaged. Когда сессия переходит за полночь, GA4 записывает то, что у него есть на данный момент, и начинает новый буфер (область памяти, используемая для временного хранения данных). Поскольку сеанс не начинается во второй день, в буфере нет записи и нет способа указать, что сеанс был с взаимодействием, поэтому он просто отбрасывается. Результат: нет сеанса с взаимодействием на 2-й день, и нет возможности сообщить 1-му дню, что записанная им сессия на самом деле была активным (с взаимодействием).

Различия в отчетах на уровне страниц

Если посмотреть на отчеты на уровне страниц и экранов, ситуация выглядит гораздо лучше, и цифры можно легко объяснить, при условии, что вы знаете о взаимодействиях со страницами через 8 часов, о которых шла речь в примере Майка ранее.

Отчет по страницам и сравнение данных UA и GA4

Стоит отметить, что обе системы (и Universal Analytics, и Google Analytics 4) теряют данные о времени на странице (time on page) и время взаимодействия (engagement time) в полночь. И это неприятно.

Еще одна особенность заключается в том, что Среднее время взаимодействия (Average engagement time) в строке итоговых и средних значений отчета Google Analytics 4 не является средним арифметическим по показателям вовлеченности для отдельных страниц в отчете. По сути, это значение отражает Среднее время взаимодействия на сеанс (Average engagement time per session). На одной странице в первом сеансе оно как раз составляло 14 секунд, а во второй сессии - 7 минут 28 секунд.

Сеансы без просмотров страниц

Universal Analytics был разработан еще в те времена, когда люди открывали браузер, переходили на сайт, просматривали n-ое количество страниц, а затем закрывали его. Сегодня люди просматривают страницы иначе - у них постоянно открыт браузер, много вкладок различных сайтов, разных страниц, к которым они могут в любой момент вернуться, чтобы прочитать их позже, и в конечном счете закрыть.

Одна из самых больших жалоб на Universal Analytics заключалась в том, что он не измерял взаимодействие пользователей со страницей - если они не переходили на другую страницу, время на странице (time on page) равнялось нулю. Google Analytics 4 решает эту проблему, измеряя различные события взаимодействия с пользователем - время (также известное как user_engagement), клик (click) и прокрутка (scroll) являются наиболее распространенными.

Пользователь может открыть страницу на отдельной вкладке браузера и вернуться к ней через несколько часов, прочитать содержимое и закрыть вкладку. Universal Analytics воспринял бы это как сеанс с просмотром страницы и не заметил бы взаимодействия позже в тот же день. Google Analytics 4, напротив, рассматривает это как сеанс с просмотром страницы, за которым через несколько часов следует сеанс с взаимодействием пользователя - он записывает второй сеанс, в котором нет события page_view .

Обратите внимание, что такое поведение также приводит к снижению всех показателей, основанных на сеансах, таких как Количество просмотров страниц за сеанс (Pages Per Session) или Среднее время взаимодействия на сеанс (Average engagement time per session). Если пользователь читает контент позже в тот же день, все эти показатели снижаются на 50%.

В официальной документации Google есть небольшая информация на эту тему, как раз касающаяся значения (not set) в отчетах по целевым страницам:

Параметр "Целевая страница" может иметь значение "(not set)" в том случае, если у сеанса нет события page_view

А такое, как вы уже знаете, в GA4 бывает достаточно часто.

Важнее понимать поведение пользователей, вовлеченных в ваш контент на сайте. Именно поэтому Майк рекомендует перестать смотреть на сеансы в Google Analytics 4 и сосредоточиться на пользователях и событиях.

Сеансы без события session_start

Подобно Universal Analytics, Google Analytics 4 приходится иметь дело с сеансами, которые начинаются незадолго до полуночи, но заканчиваются после полуночи. Событие session_start должно произойти в пятницу вечером, но некоторые просмотры страниц и user_engagement происходят рано утром в субботу. Если вы предоставляете отчет только по субботам, вы увидите взаимодействие пользователей в сеансе, в котором нет события session_start.

Сеансы без события session_start

На скриншоте Майка выделено "одинокое" событие user_engagement через 15 минут после полуночи по местному времени.

Как это повлияет на отчетность? Google Analytics 4 рассчитывает сеансы, подсчитывая события session_start. Таким образом, вы можете получить просмотры или взаимодействие с пользователем без сеансов. Насколько это повлияет на показатели вашего сайта, зависит от того, насколько загружен ваш сайт в полночь. Это может увеличить взаимодействие пользователей за сеанс… но есть и обратная проблема...

Сеансы с несколькими событиями session_start

Из-за особенностей сбора данных Google Analytics 4 может фактически записывать более одного события session_start для одного события. Это случается не очень часто, но может вызвать некоторые необъяснимые различия при детальном анализе, основанном на предположении, что в сеансе всегда есть одно событие session_start.

Несколько событий session_start в одном сеансе

На скриншоте показано два события session_start, которые записаны для сеанса одного и того же пользователя.

Один сеанс из нескольких источников

Еще одним отличием расчета сеансов Google Analytics 4 от Universal Analytics является то, что новые сеансы в Universal Analytics создавались всегда, когда изменялся источник трафика. Например, один из ваших клиентов на сайте совершил покупку следующим образом:

  • в 13:50 он ввел в поиске Google запрос "футболка Under Armour". Увидев ваше рекламное объявление в Google Ads, пользователь перешел к вам на сайт (совершен переход на сайт через платный источник трафика);
  • в 13:55, просмотрев некоторое время ассортимент вашего сайта, пользователь вернулся в органическую выдачу и продолжил изучать предложения других брендов и магазинов;
  • в 14:02, не найдя ничего лучше, пользователь остановился на вашем предложении. Он вернулся в поиск Google, ввел название вашего сайта и через органический поиск вновь перешел на ваш сайт (совершен переход на сайт через органический источник трафика);
  • в 14:08 пользователь добавляет товар в корзину и начинает оформлять заказ;
  • в 14:10 у него появляется идея поискать промокод на скидку в Интернете;
  • в 14:15 он находит такой промокод на сайте promo.code, и нажав на ссылку, возвращается на ваш сайт в корзину и вводит его при оформлении (совершен переход на сайт через реферальный источник трафика);
  • в 14:19 пользователь совершает покупку на вашем сайте.

Несмотря на то, что все действия были выполнены в течение 30 минут, в Universal Analytics будут зафиксированы три разных сеанса:

  1. в 13:50 совершен переход на сайт через платный источник трафика, Google Рекламу (google / cpc);
  2. в 14:02 совершен переход на сайт через органический источник трафика, SEO Google (google / organic);
  3. в 14:15 переход на сайт через реферальный источник трафика, Referral (promo.code / referral).

Но в Google Analytics 4 эти три сеанса будут отображаться только как один сеанс, инициированный кликом по одному из ваших рекламных объявлений в 13:50, поскольку другие переходы на ваш сайт происходили без активности между ними в течение 30 минут. GA4 не будет разбивать путь на отдельные сеансы.

Если в Universal Analytics вы вернетесь на сайт в течение 30-минутного сеанса из другого (непрямого) источника, начнется совершенно новый сеанс. В Google Analytics 4 текущий сеанс продолжается. Это может привести к тому, что GA4 сообщит о меньшем количестве сеансов, чем вы увидите по сравнению с UA. Как часто это происходит, зависит от поведения ваших пользователей.

Например, пользователи Майка обычно загружают установщик приложения Analytics Edge, а затем возвращаются на сайт из установщика. В UA это будет два сеанса, но в GA4 это один сеанс.

Пример данных Майка

Как видите, сеанс у пользователя один (имеет одинаковый ga_session_id), а вот источников несколько - google и installer. Исходя из этого, можно сделать вывод, что Google Analytics 4 можно переопределять источник трафика на уровне события. Об этом подробнее я рассказываю в лекции, посвященной utm_меткам. Обязательно посмотрите ее!

Идентификатор сеанса не уникален

Если предполагать, что GA4 рассчитывает сеансы на основе событий session_start, то и параметр события ga_session_id для каждого нового сеанса должен быть уникальным. Но это не всегда так. Один и тот же идентификатор сеанса может быть назначен двум сеансам разных пользователей.

Сеансы двух пользователей с одним и тем же номером ga_session_id

Хорошей новостью является то, что GA4 разделяет их и не считает как один сеанс. Однако, если вы планируете провести детальный анализ, я предлагаю вам использовать комбинацию user_pseudo_id и ga_session_id для расчета количества сеансов. Пример такого SQL-запроса есть в этом руководстве.

Выводы

Несмотря на изменение подсчета сеансов и продолжения их в полночь, а также отсутствия переопределения источника трафика, в новом счетчике Google Analytics все же есть свои особенности. Для большинства пользователей GA4 это может быть незначительной проблемой. Но для тех, кто детально работает с данными своего счетчика и пытается докопаться до сути, должен понимать, что единственный способ объяснить вышеописанные несоответствия как к сессиями в полночь, так и с отслеживанием событий на основе session_start и параметра ga_session_id - это вдаваться в подробности, используя необработанные данные в Google BigQuery.

Задубливание данных, отсутствие какой-то информации до ее обработки, значения (not set) в отчетах, несколько источников для разных событий - все это может ввести в заблуждение и привести к неверному анализу и результату. Сегодня гораздо важнее понимать поведение пользователей, вовлеченных в ваш контент на сайте, а не считать сеансы и отслеживать их динамику прироста или спада во времени (как это мы делали в Universal Analytics, говоря о масштабировании, стагнации или упадке трафика).

Именно поэтому я солидарен с Майком и рекомендую перестать смотреть на сеансы в Google Analytics 4 и сосредоточиться на пользователях и событиях.

Источники информации:

Получайте бесплатные уроки и фишки

По контекстной, таргетированной рекламе и аналитике