Как передать в Гугл Аналитикс, сколько пользователь активно находился на странице?

Если вы хотите знать точные данные, доверять метрике в Гугл Аналитикс не стоит. Она сильно завышена, и это происходит по многим причинам: например, из-за своеобразного подсчета уникальных визитов в ГА или поведения пользователя, который может держать вкладку открытой, но активно ей не пользоваться.

Лучше посчитать данные самим — сегодня расскажем, как сделать это при помощи GTM.

1. Создайте переменную Event Category

Имя переменной уровня данных — eventCategory.

Как передать в Гугл Аналитикс, сколько пользователь активно находился на странице?

2. Создайте переменную Event Action

Имя переменной уровня данных — eventAction.

Как передать в Гугл Аналитикс, сколько пользователь активно находился на странице?

3. Создайте переменную Event Label

Имя переменной уровня данных — eventLabel.

Как передать в Гугл Аналитикс, сколько пользователь активно находился на странице?

4. Создайте триггер GAEvent

Тип — пользовательское событие, который будет отрабатывать при отправке событий с именем GAEvent.

Как передать в Гугл Аналитикс, сколько пользователь активно находился на странице?

5. Создайте тег, который будет пробрасывать кастомные события

Создаем тег, который пробросит кастомные события — категорию, действие и лейбл — в ГА через передачу в dataLayer события с именем GAEvent:

Как передать в Гугл Аналитикс, сколько пользователь активно находился на странице?
Как передать в Гугл Аналитикс, сколько пользователь активно находился на странице?

6. Добавьте тег с типом пользовательский HTML

Триггер — All Pages, в него добавляем следующий код:

<script type="text/javascript"> var page_time = Math.round(new Date().getTime()/1000); var active_page_time = 0; var active_page_last_time = Math.round(new Date().getTime()/1000); function onVisibilityChange() { var cur = Math.round(new Date().getTime()/1000); if(document.visibilityState) { if (document.visibilityState == 'hidden') active_page_time += cur - active_page_last_time; else active_page_last_time = cur; } } document.addEventListener('visibilitychange', onVisibilityChange, false); window.onbeforeunload = function(e) { onVisibilityChange(); if (typeof dataLayer != 'undefined') { dataLayer.push({'event': 'GAEvent', 'eventCategory' : 'time', 'eventAction' : 'active', 'eventLabel' : Math.round(active_page_time/60), 'eventNonInteraction': true }); dataLayer.push({'event': 'GAEvent', 'eventCategory' : 'time', 'eventAction' : 'all', 'eventLabel' : Math.round((new Date().getTime()/1000 - page_time)/60), 'eventNonInteraction': true }); } return false; } </script>

Этот код будет выполняться на всех страницах.

Как передать в Гугл Аналитикс, сколько пользователь активно находился на странице?

Он рассчитывает продолжительность времени открытой вкладки и нахождения на ней, когда она активна. В момент ее закрытия или смены URL страницы он отправляет ивент.

Чтобы проверить, все ли сделано правильно:

  • Откройте страницу сайта.
  • Побудьте на ней несколько секунд.
  • Переключитесь на другую вкладку, а сайт оставьте открытым.
  • Вернитесь на вкладку со страницей своего сайта, нажмите F12.
  • Введите active_page_time в консоли и нажмите Enter.

Вы увидите, сколько секунд эта вкладка активна. Если время не появилось, вы сделали что-то не так.

Так должен выглядеть ответ в консоли
Так должен выглядеть ответ в консоли

Теперь идем в «Отчет в реальном времени» Гугл Аналитикс и в разделе «События» видим:

Как передать в Гугл Аналитикс, сколько пользователь активно находился на странице?

После этого вы сможете собрать кастомные отчеты:

В Гугл Аналитикс, фильтруя по Event Action

В Query Explorer, фильтруя по ga: eventAction==active; ga: eventCategory==time; и сортируя по количеству сессий или пользователей.

Например, нашу статью про спам половина пользователей читала 1 минуту, а вторая половина от 2 до 7:

Как передать в Гугл Аналитикс, сколько пользователь активно находился на странице?

Но если посмотрим события, которые передавали время активной вкладки, все окажется по-другому. Почти все пользователи держали вкладку активной до 1 минуты, а после уходили на другие сайты, не закрывая ее:

Как передать в Гугл Аналитикс, сколько пользователь активно находился на странице?

То есть читатели блога открывали статью в фоновой вкладке, держали ее открытой, возвращались и быстро скроллили вниз.

Если трафика будет много, и вы будете строить сложные отчеты по событиям, придется столкнуться с сэмплированием данных в Гугл Аналитикс. Это приведет к тому, что данные в отчете будут неточными.

Если вы хотите видеть точные данные, а не просто тренды и динамику, собирайте их на стороне. Например, мы собираем сырые данные по всем хитам в Google BigQuery, чтобы получать отчеты любой сложности без искажения.

На наших проектах мы дополнительно передаем в события по мере скролла страницы, за сколько секунд читатель проскроллил статью на какой процент высоты страницы. С помощью этих данных мы понимаем, как именно ведет себя читатель в активной вкладке, учитывая время активного пребывания на странице. В GTM для этого есть специальный триггер.

33
2 комментария

Рабочий вариант для проектов с глубоким анализом страниц. Будет отлично работать в связке с картой скрола или вебвизором. Фильтруем страницы с низким временем нахождения, а дальше смотрим на каком элементе страницы происходит отвал, но для большинства проектов будет достаточно использовать стандартные отчеты GA, рассматривая пользователей с открытыми вкладками, как погрешность в статистике.

Полностью согласен, спасибо за комментарий. Как сказано в последнем абзаце, мы в дополнении к этому и карте скроллов ещё передаём эвенты, когда пользователь дошёл до 10%, 25%, 50%, 75%, 100% страницы, передавая время, за которое он дошёл до отсечки. Это позволяет нам глубоко анализировать лендинги, смотреть большими когортами. Потом менять блоки длинных лендингов местами, работать с CTA и формами, делать так, чтобы пользователи быстрее нашли ответ, и даже если зашли не надолго ухватили суть.

1