Определение местного времени пользователя с помощью GTM

14 августа, 2021

Способ определения местного времени пользователя вашего сайта в Universal Analytics с помощью Google Tag Manager.

Этот материал вышел благодаря интересному вопросу одного из моих слушателей онлайн-курса по Google Tag Manager. Звучал он следующим образом:

Какое время показывается в отчетах Google Analytics?

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

Страна и регион часового пояса в Universal Analytics

Страна часового пояса - время, по которому будут определяться границы дней в отчетах. Если вы работаете в Москве, но поставите США (Тихоокеанское время), то начало и конец каждого дня, а также отчеты будут определяться по этому часовому поясу.

Напротив же, если вы зададите в качестве страны Россия и часовой пояс выберите GTM +03:00 Москва (как на скриншоте), а пользователь зайдет на ваш сайт из Лондона (Великобритания) и совершит действие (например, конверсию) в 15:00, Google Analytics в своих отчетах зафиксирует это событие в 17:00 (разница с Москвой +2 часа). Или когда пользователи из США и Австралии посещают сайт в одно и то же время, Universal Analytics покажет, что оба посещения были совершены в один и тот же час, даже если местное время для каждого пользователя разное.

Справедливо? Да, потому что так задано в настройках Google Analytics. Но даже такая, казалось бы, простая опция может привести к проблемам и искажению статистики в рекламных кабинетах Google Ads и Google Analytics, поскольку в обеих системах могут быть выставлены разные часовые пояса, и тогда данные при связанных аккаунтах не будут равны между собой.

Тогда слушатель задал еще один вполне резонный вопрос:

А как тогда быть, если сайт - международный или информационный с большим количеством контента, как у вас? На ваш блог заходят люди со всего мира, читают статьи, смотрят видео, и каждый из них может оставить заявку по своему местному времени. И тогда с помощью стандартных методов из Google Analytics не получится узнать наиболее конверсионное время, поскольку статистика рассчитывается исходя из выбранной страны и часового пояса в представлении. Что делать в случае, если сайт международный и пользователи заходят на него из разных стран и регионов?

Все верно. Самым простым вариантом я бы посоветовал для каждой страны/города в Universal Analytics создать отдельное представление и отфильтровать данные по конкретному региону. Но такой подход не очень удобный (придется переключаться между представлениями, что усложняет анализ) и более сложный в настройке, чем тот, который опишу ниже.

Если у вас международный сайт с посетителями со всего мира, то стандартный параметр Час, который присутствует в Universal Analytics, для оценки и анализа достигнутых целей или событий в зависимости от часа дня не поможет. Если мы построим отчет, то увидим, что пользователи из Великобритании (United Kingdom) по данным Google Analytics совершили 2 сеанса и 4 события в час ночи (настройка в Universal Analytics - Россия и часовой пояс GTM +03:00 Москва):

События по часу дня согласно данным Universal Analytics

Но стоит только добавить в аналитику местное время пользователя, о котором пойдет речь ниже, и оценивать данные по такому параметру, как отчет преобразуется в следующий вид:

События по часу дня с привязкой к местному времени пользователя

Теперь он имеет две строчки: 1 сеанс и 2 события были совершены в час ночи по местному времени, а другой сеанс, в котором также было совершено 2 события, состоялся уже в 3 часа ночи по местному времени. Но Google Analytics посчитал нам все это как один час - 01, и записал 2 сеанса и 4 события в одну строку. Теперь понимаете, какую важную, и в то же время базовую проблему озвучил мой слушатель.

Для выполнения этой задачи нам на помощь приходит диспетчер тегов Google и специальный параметр, который будет отображать местное время посетителя. В результаты вы получите отчет такого вида:

Сравнение данных по часу Google Analytics и местного времени пользователя

Осталось только разобраться как это сделать.

Перейдите в Google Tag Manger и создайте пользовательскую переменную типа Собственный код JavaScript. Вставьте в нее следующий код:

В GTM это будет выглядеть так:

Собственный код JavaScript

Метод new Date() создает объект Date с текущими датой и временем, а getHours() возвращает часы (число от 0 до 23) указанной даты по местному времени. Таким образом, на выходе мы получаем час пользователя по местному времени:

Проверка в режиме отладки Google Tag Manager

После этого в Universal Analytics на уровне ресурса (Пользовательские определения - Специальные параметры) создайте специальный параметр с областью действия Сеанс:

Создание специального параметра

Сохраните параметр и запомните его индекс:

Индекс специального параметра (в моем примере - 7)

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

Изменение настроек тега Universal Analytics с типом отслеживания "Просмотр страницы"

Сохраните изменения и опубликуйте контейнер.

Проверить корректность передачи данных можно с режима предварительного просмотра:

Проверка передачи данных в режиме отладки

Через некоторое время в Universal Analytics появится статистика. Вы можете создать специальный отчет, чтобы сравнить данные двух параметров - стандартного Час от Universal Analytics и вашего (пользовательского) с определением местного времени пользователя:

Сопоставление параметр "Час" от Google Analytics и нашего местного времени

Как видите, статистика отличается, но теперь она более корректная и позволяет оценить "конверсионность" часа дня, опираясь на местное время посетителей сайта. При желании вы можете передавать данные по времени суток, разделив день на отрезки, например: с 0 до 5 часов - ночь, с 6 до 11 часов - утро, с 12 до 17 часов - день, с 18 до 23 часов - вечер.

Для этого нужно создать еще одну пользовательскую переменную типа Собственный код JavaScript и вставить в нее такой код:

В диспетчере тегов Google это будет выглядеть так:

Собственный код JavaScript

Этот код записывает в переменную currentHour текущий час пользователя по местному времени, а далее проверяет на условие, постепенно проходя цикл if (если), то return (возврат), в противном случае идем дальше по коду. Если час равен 0, то возвращается Ночь (0-5), если меньше или равно 5, то тоже Ночь (0-5), если меньше или равно 11, то Утро (6-11), и т.д.

Для этой переменной тоже нужен отдельный специальный параметр Universal Analytics. Поэтому выполните повторно все вышеописанные шаги (создайте custom dimension, запомните его индекс), и добавьте еще одной строчкой в тег Universal Analytics с типом отслеживания Просмотр страницы специальный параметр, задав его индекс и значение в дополнительных настройках:

Специальный параметр с индексом для времени суток

Сохраните изменения и опубликуйте контейнер. Теперь при создании отчетов вы можете использовать новые параметры Местное время пользователя и Часть суток.

Специальный параметр "Часть суток"

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

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