Динамическая фильтрация внутреннего трафика в Google Analytics 4
Из этого руководства вы узнаете, как можно динамически фильтровать внутренний трафик сотрудников без указания статического IP-адреса в Google Analytics 4 с помощью Google Tag Manager.
Предпосылки
Один из слушателей на моем онлайн-курсе по веб-аналитике задал очень интересный и вполне практический вопрос:
Как фильтровать трафик сотрудников компании в Google Analytics 4, если они находятся в разных местах (удаленно) и нет возможности указать общее условие по IP-адресу?
И это действительно так. Рост числа людей, работающих удаленно ("на дому"), привел к тому, что стало сложнее отслеживать переходы таких сотрудников, потому что у каждого из них свой собственный интернет-провайдер, сеть и IP-адрес. А если им в процессе работы нужно еще и взаимодействовать с нашим сайтом (оформлять заказ, консультировать по услугам, вносить изменения в ассортимент и т.д. и т.п.), то проблема становится совсем явной.
Сотрудники компании заходят на сайт из разных мест, создают новые сеансы, совершают события. Это, в свою очередь, приводит к ошибочным результатам, поскольку у нас нет никаких механизмов по исключению такого внутреннего трафика, и нам приходиться анализировать данные в Google Analytics 4 с учетом всей этой информации. Наши пользователи + наши сотрудники = все данные GA4.
Единственный способ, который мы можем использовать в Google Analytics 4 - это фильтрация внутреннего трафика (internal traffic). Внутренним трафиком в GA4 принято считать переходы, которые поступают на ваш сайт от вашей компании/сотрудников/вас. Например:
- команда разработчиков внедряет новый функционал, периодически заходит на сайт и осуществляют проверку изменений;
- операторы колл-центра в процессе общения с клиентом находятся на сайте и помогают потенциальному клиенту сориентироваться в оформлении заказа/выборе позиции товара;
- вы, как владелец бизнеса, в течение дня посещаете различные страницы сайта с целью проверки их работоспособности.
Во всех описанных выше примерах статистика в отчетах Google Analytics 4 искажается, и становится сложнее определить какие переходы поступили от обычных пользователей, а какие от вас и вашей команды.
По умолчанию GA4 определяет внутренний трафик как событие с именем параметра traffic_type и значением параметра internal. Значение internal можно изменить, а вот имя параметра traffic_type в настоящее время изменить нельзя. Для каждого ресурса Google Analytics 4 можно создать до 10 фильтров данных. Поэтому если у вас большое количество сотрудников находится на удаленке, то вы очень быстро упретесь в лимиты счетчика.
Одним из наиболее распространенных способов исключения трафика сотрудников является указание фиксированного внутреннего IP-фильтра:
Примечание: проверка внутреннего трафика выполняется по адресам IPv4 или IPv6. Диапазоны IP-адресов можно указать, используя нотацию бесклассовой адресации, например 192.0.2.0/24 или 2001:db8::/32. Подробнее читайте здесь.
Если кратко, то фильтрация по IP работает следующим образом:
- пользователь посещает ваш сайт;
- тег Google отправляет данные о нем в Google Analytics 4;
- GA4 проверяет, соответствует ли IP-адрес посетителя правилу исключения внутреннего трафика, которое вы настроили в интерфейсе;
- если да, трафик такого пользователя исключается, а если нет, то трафик сохраняется и остается доступным в отчетности в полном объеме.
А если IP-адрес у сотрудников динамически меняется, то процесс фильтрации становится очень сложной задачей. Ведь нужно не только правильно прописать условие и выбрать нужный тип соответствия, но и следить, чтобы сотрудники вовремя передавали вам информацию по изменению IP-адреса. А если сегодня человек работает дома, завтра в кафе, а послезавтра уже заходит на ваш сайт из другой страны (в отпуске, в командировке или другая причина)? Тогда фильтровать данные в Google Analytics 4 можно бесконечно. А в компаниях с большим количеством удаленных сотрудников это просто нереально.
Но решение все же есть. Оно не идеальное, но в некоторых ситуациях может сработать. Идея заключается в том, что мы можем в браузер сотрудника, который работает удаленно, поместить специальную метку (параметр) и сохранить ее до того момента, пока он не удалит ее самостоятельно. Она и будет являться отличительным знаком при фильтрации данных в Google Analytics 4. Если пользователь меняет компьютер или браузер, то ему просто необходимо зайти на сайт по определенной ссылке один раз. И тогда его трафик будет корректно фильтроваться внутри ресурса.
Таким образом, фильтрация внутреннего трафика без использования IP работает следующим образом:
- пользователь посещает ваш сайт;
- Google Tag Manager проверяет, соответствует ли этот пользователь набору правил, не связанных с IP, которые мы используем (настроим далее);
- если этот пользователь удовлетворяет правилам внутреннего трафика (это ваш сотрудник), то его взаимодействия будут помечены как внутренний трафик, а если не удовлетворяет, то на такого посетителя правила внутреннего трафика распространяться не будут (это обычный пользователь), и тогда его данные будут отправлены в ваш счетчик Google Analytics 4 как обычно.
Давайте перейдем к настройке!
Создание метки для внутреннего трафика
Чтобы поместить метку в браузера вашего сотрудника для фильтрации внутреннего трафика, можно пойти двумя путями:
- создать файл cookie;
- использовать локальное хранилище (localStorage);
В первом случае перейдите в Google Tag Manager и создайте тег типа Пользовательский HTML. Вставьте в него нижеприведенный код:
1 2 3 4 5 6 7 8 9 10 11 |
<script> function setCookie(name, value, expires) { var date = new Date(); date.setTime(date.getTime() + expires * 24 * 60 * 60 * 1000); var expiresStr = "expires=" + date.toUTCString(); document.cookie = name + "=" + value + ";" + expiresStr + ";path=/"; } setCookie("InternalTraffic", "internal", 365); </script> |
Этот код создает файл cookie InternalTraffic со значением internal, который будет действовать в течение одного года (365 дней).
А вот чтобы этот файл cookie был создан ТОЛЬКО в браузере сотрудника, нам необходимо в триггере задать дополнительное условие. Например, вы можете придумать какой-то уникальный параметр в URL-адресе вашего сайта, о котором будут знать только сотрудники вашей компании, а не пользователи, и прописать его в триггере в качестве условия активации тега. Например, https://osipenkov.ru/?internal_traffic=yes
Когда ваш сотрудник перейдет на сайт по ссылке, в которой содержится internal_traffic=yes, в его браузере будет создан файл cookie InternalTraffic со значением internal со сроком жизни 365 дней.
Просто попросите сотрудника добавить эту ссылку в закладки браузера и всегда заходить на сайт именно с нее. Как минимум, первое посещение с нового устройства. Тогда во всех его браузерах, будь то это домашний компьютер, офисный ПК или даже мобильный телефон, будет создаваться уникальная метка, которая позволит нам отличить внутренний трафик сотрудников от всех пользователей сайта.
Итоговый тег для создания файла cookie будет выглядеть так:
Если ваши сотрудники не удалят файлы cookie вручную, они будут доступны в их браузере в течение 365 дней:
Но 100% гарантии этому нет. Поэтому вы можете попробовать использовать другой вариант - localStorage. Он очень похож на создание файла cookie, только в теге типа Пользовательский HTML тег нужно использовать такую конструкцию:
1 2 3 |
<script> localStorage.setItem ("InternalTraffic", "internal"); // ключ "InternalTraffic", а значение "internal" </script> |
Триггер тот же самый (см. выше).
После выполнения этой строки кода, в локальном хранилище браузера сотрудника будет сохранена метка InternalTraffic со значение internal:
Таким образом, вы можете использовать файлы cookie с установленным сроком жизни, либо же создать уникальный ключ в локальном хранилище браузера сотрудника. От текущего выбора зависит дальнейшая ваша настройка.
Извлечение значения из метки
После того, как вы создали метку в браузере сотрудника, ее необходимо извлечь, чтобы в дальнейшем передать в Google Analytics 4, а там уже создать правило по исключению внутреннего трафика из отчетности.
Если вы использовали файлы cookie, то для извлечения значения internal создайте пользовательскую переменную типа Собственный файл cookie с именем InternalTraffic (ровно такое же значение, которое вы задали в пользовательском HTML-теге на предыдущем шаге):
Сохраните переменную.
Если вы использовали локальное хранилище, то для извлечения значения из localStorage создайте пользовательскую переменную типа Собственный код JavaScript со следующим кодом:
1 2 3 4 |
function() { var lStorage = localStorage.getItem('InternalTraffic'); return lStorage; } |
Когда эта функция будет вызвана, она вернет значение, которое хранится в локальном хранилище под ключом InternalTraffic (в нашем примере - это значение internal). Если по этому ключу ничего не сохранено, функция вернет null.
Сохраните переменную.
Активация переменной Debug Mode
Сотрудники в организации разные. Разработчики, менеджеры по продажам, консультанты, интернет-маркетологи, аналитики и т.д. - все они могут взаимодействовать с вашим сайтом в процессе работы. Например, маркетолог может использовать Google Tag Manager в своих ежедневных задачах. Он заходит в рабочую область GTM, что-то настраивает, а потом активирует режим предварительного просмотра и проверяет корректность отслеживаний. В этот момент его данные также будут отправляться в Google Analytics 4, но не будут учитываться как внутренний трафик.
Для исключения такого типа трафика в GA4 существует тип фильтра Трафик разработки (Developer traffic):
Активировав его, он будет исключать события со значениями debug_mode или debug_event. Это значение вы можете увидеть в инструменте DebugView:
Если вы посещаете свой веб-сайт через режим предварительного просмотра GTM (tagassistant.google.com), то такой трафик тоже можно учитывать как внутренний трафик. Для этого в Google Tag Manager активируйте встроенную переменную Debug Mode. Она нам понадобится далее для окончательной проверки условий.
Эта переменная возвращает значение true, если вы просматриваете веб-страницу в режиме предварительного просмотра, и false, если нет.
Общее правило определения внутреннего трафика
Теперь нам необходимо объединить логику двух условий (переменных Debug Mode и файла cookie/localStorage) для окончательного определения внутреннего трафика.
Если вы используете решение с файлом cookie, создайте пользовательскую переменную типа Собственный код JavaScript и вставьте в него нижеприведенный код:
1 2 3 4 5 6 7 8 9 10 11 12 |
function() { var cookie_internal = '{{Cookie - InternalTraffic}}'; var debug_mode = {{Debug Mode}}; if ((cookie_internal === 'internal' || debug_mode === true) || (cookie_internal == null && debug_mode === true) || (cookie_internal === 'internal' && debug_mode === false)) { return "internal"; } else { return "external"; } } |
В Google Tag Manager:
Это функция выполняет следующее:
- определяются две переменные - cookie_internal со значением нашей пользовательской переменной Cookie - InternalTraffic, которую мы создали на предыдущем шаге, и debug_mode со значением из встроенной переменной, которую мы активировали ранее;
- далее идет проверка:
- если cookie_internal = internal ИЛИ debug_mode = true - возвращается internal;
- если cookie_internal = undefined или null И debug_mode = true - возвращается internal;
- если cookie_internal = internal И debug_mode = false - возвращается internal;
- в противном случае возвращается значение external.
В этих условиях мы учитываем все возможные варианты, которые могут быть. Иногда сотрудники могут заходить на сайт, но маркетолог не запускает режим отладки. Или, наоборот, специалист использует режим предварительного просмотра с debug_mode = true, но при этом сотрудник с меткой на сайт не заходил и у него в браузере пока нет internal. Если вы считаете, что какое-то условие вам не подходит, или я привел неполную проверку, вы можете изменить данный код под себя.
Сохраните переменную. Если вы использовали локальное хранилище, то код будет точно таким же, за исключением переменной файла cookie:
Сохраните переменную.
Переопределение внутреннего трафика
Теперь нам необходимо внести изменения в тег Google, задав новое условие переопределения внутреннего трафика. Для этого откройте свой тег Google и в параметрах конфигурации добавьте поле traffic_type со значением вашей переменной:
Сохраните изменения в теге.
Проверка настроек
Поскольку режим предварительного просмотра GTM для нас будет всегда являться внутренним трафиком (потому что debug_mode = true), у нас не получится проверить все условия. В связи с этим я рекомендую на время опубликовать свой контейнер и воспользоваться расширением Analytics Debugger (или любым другим).
Примечание: если вы уже создали файл cookie или поместили значение internal в localStorage, удалите их из своего браузера, и только после этого переходите к проверке.
Сначала перейдите на сайте без метки internal_traffic=yes, чтобы не создавать дополнительного параметра в браузере. Traffic Type при этом должен иметь значение external (внешний):
А теперь перейдите по ссылке с меткой, чтобы в вашем браузере создалась кука или ключ в локальном хранилище (в зависимости от выбранного способа настройки выше). Вы должны увидеть другое значение - internal (внутренний):
Теперь ваш трафик и трафик всех сотрудников будет определяться как внутренний. При использовании режима отладки (debug_mode = true) трафик будет определяться как internal. Вы можете проверить свои настройки через DebugView или просто перейдя в отчет В реальном времени, провалившись в параметр события traffic_type:
С этого момента его будет легко отфильтровать в Google Analytics 4.
Создание фильтра в Google Analytics 4
Чтобы создать правило определения внутреннего трафика, необходимо перейти в раздел Администратор - на уровне ресурса Фильтры данных.
На открывшейся странице создайте новый фильтр:
Выберите вариант Внутренний трафик. Введите сведения о фильтре:
- Название фильтра данных - Трафик сотрудников (у вас может быть другое);
- Операция - Исключить;
- Значение параметра - internal (оставляете без изменений, если строго следовали моей инструкции);
- Состояние фильтра - Тестирование (перед внедрением убедитесь, что вы все сделали правильно).
Создайте фильтр с помощью кнопки Создать в правом верхнем углу экрана. На следующем шаге отобразится сообщение об успешно созданном фильтре с дополнительной информацией:
Как вы уже знаете, для тестирования фильтра мы можем воспользоваться отчетом В реальном времени. Перейдите на сайт с меткой (как сотрудник) и совершите несколько произвольных событий. После этого перейдите в отчет в реальном времени и добавьте сравнение:
Создайте новое сравнение, используя параметр Название тестового фильтра данных и названием вашего фильтра. В моем примере - это Трафик сотрудников:
Примените сравнение к отчету. Вы должны увидеть два среза данных, статистика по которым отличается цветом - по всем пользователям (синий) и отфильтрованные данные по внутреннему трафику (оранжевый):
После того, как вы проверили фильтр данных и убедились, что он работает как нужно, вы можете активировать его с помощью настройки Активировать фильтр: