Передача IP-адреса в Яндекс.Метрику
Два способа передачи IP-адреса посетителя вашего сайта в Яндекс.Метрику в качестве параметра визита - напрямую через код сайта и с помощью Google Tag Manager.
Как вы уже знаете, IP-адрес для инструментов веб-аналитики и рекламных сервисов часто трактуют неоднозначно. То он считается метрикой, которая позволяет идентифицировать пользователя, то Google и Яндекс дают возможность исключать в настройках рекламных кампаний нежелательные IP-адреса (например, тех, кто скликивает рекламу, роботов, сотрудников компании и т.д.).
А в сообществе интернет-маркетологов по-прежнему идут дискуссии на тему: стоит ли отслеживать IP-адреса пользователей и передавать их в инструменты аналитики? Ответ простой: каждый владелец сайта решает для себя сам.
Для выполнения требований по защите личных данных пользователей, включая политику конфиденциальности сторонних ресурсов и государственные законы, в Яндекс.Метрике и Google Analytics предусмотрен функционал обработки и хранения IP-адресов. В Яндексе это называется маскировкой, в Google - анонимизацией. Подробнее читайте по ссылкам ниже:
- Маскировка IP-адреса в Яндекс.Метрике
- Анонимизация IP-адресов в Аналитике
- Как анонимизировать IP-адрес с помощью gtag.js?
- Как анонимизировать IP-адрес с помощью analytics.js?
Ранее в своем блоге я писал о том, как передавать IP-адреса в Google Analytics напрямую (программно) и через GTM:
По умолчанию, в отчетах можно добавить группировку, которая будет содержать неполный IP-адрес пользователя:
В результате вы увидите зашифрованную последнюю часть:
Этого нам недостаточно. Взяв за основу информацию из этих двух материалов, давайте передадим данные по IP-адресу в Яндекс.Метрику. Сделать это можно с помощью параметров визитов.
Параметры визитов – это данные, которые могут быть привязаны к визиту пользователя. Например, IP-адрес, информация, которую человек отправил с оформленной заявкой, данные по звонку, № промокода, который был показан посетителю когда он зашел на сайт и т.д. В одном визите в Яндекс.Метрику можно передавать до 1000 параметров.
Параметры визитов можно передавать при инициализации счетчика или в любой момент времени. При инициализации счетчика параметры визита указываются в параметре params в самом счетчики Метрики и передаются в виде JavaScript-объекта или массива.
Рассмотрим 2 способа передачи IP-адреса в Яндекс.Метрику:
- напрямую (через код сайта);
- с помощью Google Tag Manager.
Передача IP-адреса в Яндекс.Метрику через код сайта
Чтобы реализовать такой способ, добавьте две строчки кода в счетчик Метрики. Одну до самого счетчика, а вторую перед закрывающимися скобками, как показано на скриншоте:
1 2 |
var ip = {ip_address: "<? echo $_SERVER['REMOTE_ADDR']; ?>"}; // Определение IP-адреса посетителя params:window.ip // Добавление параметра визита |
Если после двоеточия вы видите IP-адрес, то это значит, что конструкция написана верно. Чтобы удостовериться в правильности определения IP вы можете перейти на любой из сервисов, например whoer.net/ru, и сравнить с теми данными, которые поступят в Яндекс.Метрику.
Через минут 15-20 в отчете Параметры визитов отобразиться статистика по нашему IP-адресу:
Если сопоставить со стандартной группировкой в отчете Метрики, то тоже все корректно:
Теперь мы можем исключать недоброжелательные IP-адреса из статистики своего счетчика, заблокировать показ рекламных объявлений для тех, кто ее скликивает, а также получить более точную информацию о месторасположении пользователя и характеристиках его интернет-соединения.
Мы рассмотрели способ, когда параметр визита в Метрику передается при инициализации счетчика. Но его также можно передавать в произвольный момент времени с помощью специальной конструкции:
1 |
ym(XXXXXX, 'params', parameters); |
где
- XXXXXX - номер счетчика Яндекс.Метрики;
- parameters – обязательный параметр, можно передавать в виде объекта или массива.
Передадим его в таком в виде с помощью второго способа.
Передача IP-адреса в Яндекс.Метрику с помощью Google Tag Manager
Для этого воспользуемся конструкцией из статьи про определения IP-адреса для Google Analytics. Вставляем код ниже в Пользовательский тег HTML:
1 2 3 4 5 6 |
<script type="application/javascript"> function getIP(json) { dataLayer.push({"event":"ipEvent","ipAddress" : json.ip}); } </script> <script type="application/javascript" src="https://api.ipify.org?format=jsonp&callback=getIP"></script> |
Данный фрагмент JS-кода определяет IP-адрес каждого пользователя через ipify.org (является бесплатным API-интерфейсом IP-адресов), а затем помещает его в уровень данных (dataLayer) для чтения в GTM. Чтобы протестировать и определить свой IP, просто перейдите по ссылке: https://api.ipify.org?format=jsonp&callback=getIP
В GTM это будет так:
Триггер - All Pages, но только один раз за сеанс, чтобы избежать многократного обращения к API-интерфейсу ipify и потенциального сбоя множества обращений. Для этого мы в качестве условия активации триггера можем выбрать Некоторые просмотры страницы – Referrer – не содержит – домен вашего сайта
Минус такого способа в том, что если API ipify.org перестанет работать, то данные собираться не будут. Если вы хотите реализовать передачу IP не через JavaScript, а PHP, вы можете в <head> кода страницы вашего сайта (напрямую!) вставить следующий фрагмент:
1 2 3 4 5 6 7 |
<script> window.dataLayer = window.dataLayer || []; window.dataLayer.push({ 'event':'ipEvent', 'ipAddress' : '<?=$_SERVER["REMOTE_ADDR"]?>' }); </script> |
Теперь нам нужно создать триггер типа Пользовательское событие с именем ipEvent и переменную типа Переменная уровня данных с именем ipAddress.
Все, что осталось сделать - добавить тег с передачей параметра визита в Яндекс.Метрику. Для этого создаем Пользовательский тег HTML с триггером активации на наше пользовательское событие ipEvent:
1 2 3 |
<script> ym(54442894,'params', {params:{{ipAddress}}}); </script> |
В GTM это выглядит так:
Вместо params вы можете задать другое значение. Сохраняем настройки. Проверить корректность срабатывания триггеров и тегов можно также через режим отладки GTM.
Через некоторое время в Яндекс.Метрике в отчете Параметры визитов появится наше значение: