Кинетическая ракета
Москва, ул. Бауманская, 7+7 (495) 792-29-50
Барнаул, ул. Балтийская, 248 800 700-02-07
Оставить заявку
Нажимая на кнопку, вы соглашаетесь с условиями политики конфиденциальности
или напишите нам:

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

Здравствуйте!

Хотим узнать, сколько времени пользователи проводят на нашей странице. Можно ли доверять этой цифре в ГА? Подозреваю, что нет: ГА показывает, что пользователи находятся на сайте больше получаса, а в отчетах вебвизора видно, что активно читают вкладку меньше минуты.

Егор

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

Лучше посчитать данные самим — сегодня расскажем, как сделать это при помощи 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 страницы он отправляет ивент.

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

  1. Откройте страницу сайта.

  2. Побудьте на ней несколько секунд.

  3. Переключитесь на другую вкладку, а сайт оставьте открытым.

  4. Вернитесь на вкладку со страницей своего сайта, нажмите F12.

  5. Введите active_page_time в консоли и нажмите Enter.

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

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

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

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

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

В Гугл Аналитике

фильтруя по Event Action

В Query Explorer

фильтруя по ga:eventAction==active;ga:eventCategory==time;

и сортируя по количеству сессий или пользователей.

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

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

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

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

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

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

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

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

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

Brand / Icon / Simple / SimpleIcon@3x Created with Sketch.