
Триггер скроллинга в Google Tag Manager
Глубина скроллинга и время, проведенное пользователем на странице, часто применяются при анализе контентных ресурсов и позволяют сформировать выводы о том, нравятся ли посетителям сайта ваши статьи, читают ли их пользователи, просто просматривают по диагонали или вовсе сразу уходят на другие страницы сайта.
Помимо блогов и новостных порталов метрика скроллинга также является важным элементом анализа эффективности сайта-одностраничника.
Три года назад я уже писала статью на тему отслеживания скроллинга в Google Analytics. Тогда я создавала собственный скрипт для Google Tag Manager, который отправлял данные о максимальной глубине прокрутки страницы, а также точное время пребывания на текущей странице перед ее закрытием, обновлением или переходом на другую страницу. С тех пор в функционале диспетчера тегов произошли большие изменения, добавилось больше встроенных триггеров и переменных. Поэтому теперь настроить отслеживание скроллинга в GTM можно без использования сторонних скриптов. Сегодня мы разберемся, как это сделать.
Scroll-переменные
Первым делом в интерфейсе Google Tag Manager нам необходимо активировать переменные из блока “Прокрутка”:
- Scroll Depth Threshold — это число, которое показывает глубину прокрутки. При выборе процентов может принимать значение от 0 до 100%. При выборе пикселей это количество пикселей, установленное в качестве пороговой величины.
- Scroll Depth Units — единицы измерения глубины скроллинга (проценты или пиксели).
- Scroll Direction — направление прокрутки (может быть вертикальная или горизонтальная).
Далее мы создаем новый триггер типа “Глубина прокрутки”:
В настройках триггера мы выбираем направление прокрутки (вертикальная или горизонтальная). В одном и том же триггере можно задавать условие и для вертикального, и для горизонтального скроллинга.
Далее указываем глубину скроллинга (в пикселях или в процентах), при достижении которой должно отправляться событие. Нужно указать одно или несколько чисел, разделив их запятыми. Если указанная глубина скроллинга входит в область просмотра при загрузке страницы, триггер сработает без скрола. Также важно учитывать, что триггер срабатывает единожды для каждого порогового значения на странице. То есть, если в текстовом поле для указания глубины скроллинга вы написали значения 70% и 90%, то триггер в этом случае активирует тег два раза — при скроллинге страницы до отметки 70% и при достижении отметки 90%. Если после этого пользователь прокрутит страницу снизу вверх, триггер второй раз не активируется.
Далее нужно создать тег отправки данных в Google Analytics. Добавляем новый тег типа “Universal Analytics”, выбираем тип отслеживания “Событие”. В атрибутах события (категория, действие, ярлык) мы можем указать переменные прокрутки, которые мы активировали в самом начале.
Обращаю внимание на опцию “Не взаимодействие”. Если вам нужно, чтобы отправка ивента влияла на показатель отказов, то установите “false”. В ином случае — “true”.
Выбираем триггер, созданный раньше, в качестве условия активации.
Далее включаем отладчик GTM, переходим на сайт и проверяем правильность работы тега:
Таблица регулярных выражений
Бывают случаи, когда нужно реализовать отслеживание скроллинга на сайте, который имеет разные типы страниц. Например, на сайте есть страницы услуг, для которых мы хотим отправлять событие прокрутки при достижении, например, отметки в 50% и есть страницы статей, для которых мы считаем оптимальным фиксировать событие скроллинга только при значении 90%. В зависимости от структуры сайта, таких вариантов передачи данных может быть много. Чтобы не создавать под каждую группу страниц отдельный тег/триггер, мы можем воспользоваться таблицей регулярных выражений. Если вдруг вы еще не знаете, что такое регулярные выражения, и какую пользу они несут для аналитика, рекомендую прочитать эту статью.
Таблица регулярных выражений принимает на вход переменную и сопоставляет ее значение с шаблонами в таблице в порядке следования шаблонов. Если найдено соответствие, то в качестве результата возвращается значение из поля “Результат” соответствующей строки. Для скроллинга в качестве входной переменной можно указать Page URL, в текстовых полях шаблонов вводим регулярные выражения для нужных страниц. А в результирующих текстовых полях — значения скроллинга, которые должны передаваться для каждого типа страниц. Например, для страниц блога (при условии, что все они содержат слово “blog” в URL) пороговое значение прокрутки, при котором отправится событие, будет 90%. Для страниц услуг, контактных данных и портфолио (страницы, содержащие “service”, “kontakty”, “portfolio” в URL) — 40%, 60%, 80%, 100%. Для страниц, которые не соответствуют ни одному из шаблонов — 70% и 90%.
Теперь, чтобы использовать эту переменную в триггере скроллинга, нам нужно в его настройках вместо статичных чисел указать только что созданную переменную:
Ключевое отличие нового триггера в диспетчере тегов от решения, которое я описывала в прошлой статье, в том, что в новом триггере отправка события происходит по мере прокрутки, то есть событие фиксируется каждый раз при достижении определенного значения, а не при отправке максимального значения. Скрипт же из этой статьи позволяет фиксировать максимальное значение глубины прокрутки страницы перед ее закрытием, обновлением или переходом на другую страницу. Выбирайте то, что точнее отвечает вашим целям. От себя добавлю, что проще, конечно же, воспользоваться встроенной возможностью GTM. В таком случае нет необходимости вникать в код скрипта, и настройка занимает всего несколько шагов. Приятно видеть, что функционал Google Tag Manager постоянно расширяется и позволяет делать крутые и полезные для аналитики штуки в несколько кликов.
Удачных настроек! Если у вас есть вопросы по статье, с нетерпением жду их в комментариях-)










Добрый день.
Спасибо большое за статью!
Подскажите, где в Аналитике можно смотреть глубину прокрутки?
Добрый день!
Рада, что информация полезна=)
В отчете по событиям (в категории или действии, в зависимости от того, в какие атрибуты события вы передаете данные) — https://prnt.sc/10gyssg
Здравствуйте! Данный триггер работает только 1 раз (на первой странице, после перехода на сайт) и после ухода, например, с главной страницы на другую — событие перестает отправляться. Как можно отследить глубину по каждой странице на пути 1го пользователя по сайту?
Добрый день!
Сделайте, пожалуйста, скриншот настроек своего тега и триггера.
Подскажите, как эту цель можно связать с событием в Facebook ads в event manager?
Добрый день, Григорий!
Я рассматривала пример передачи скроллинга в Facebook в этой статье https://odesseo.com.ua/piksel-facebook-s-pomoshchyu-google-tag-manager/ пункт: Как настроить пользовательские события Facebook в Google Tag Manager
добрый день, а как настройить в аналитиксе тогда, при настройке цели как правильно действие указать, чтоб события начали регистрироваться и можно было их в отчеты добавить?
Добрый день, Марина!
При настройке целей в аналитике вам нужно указать те параметры, которые вы задали в атрибутах события в GTM: http://prntscr.com/ujn0u3
А можно ли такой тригер установить на свое эл. письмо, и отслеживать насколько прокрутили письмо.
В письмо можно установить аналитикс, отслеживать событие(открытие письма), а что со скорллом?
Добрый день! Не подскажу, не в курсе таких возможностей.
Здравствуйте! А как отследить скролл, если на странице реализован поблочный скролл. При обычной настройке через GTM, триггер «глубина прокрутки» работает не корректно либо не загружается, либо загружается сразу при загрузке страницы.
Здравствуйте, как выполнить настройки GTM, что бы в аналитику передавались данные только о максимальной глубине скролла?
Здравствуйте!
Укажите в настройках триггера только 100%, без промежуточных величин.
Добрый день!
Можно ли при помощи интерфейса GTM добиться максимально похожего на ваше решение результата?
У меня возникла проблема со скриптом, так как почти все мои проекты — это сайты на JS, где страницы фактически не обновляются (происходит только изменение в истории). Поэтому вопрос
//назначаем объекту window событие, действие которого выполнится в момент завершения работы пользователя со страницей (закрытие, обновление, переход на другую страницу)
jQuery(window).bind(‘beforeunload’, function(){
current_max_string = current_max.toString() + ‘%’;
var endLiveDoc = jQuery.fixTime();
var timeLiveDoc = jQuery.timeFormat(endLiveDoc — startLiveDoc);
var percent_of_scrolling_int = getScrollingInterval(current_max);
var time_on_page_int = getTimeInterval(endLiveDoc — startLiveDoc);
dataLayer.push({‘event’: ‘Scroll to’, ‘percent_of_scrolling’: current_max_string, ‘time_on_page’: timeLiveDoc, ‘percent_of_scrolling_interval’ : percent_of_scrolling_int, ‘time_on_page_interval’ : time_on_page_int});
});
});
Вот этот кусок можно как-то поменять, чтобы он срабатывал при изменении истории? Спасибо