ГНУСНЫЙ
МАРКЕТИНГ

Как посмотреть IP в Яндекс.Метрике? Передаем IP-адрес пользователя в Метрику с помощью скрипта.

Полный IP можно передавать в Яндекс.Метрику своим параметром через скрипт на сайте. Для этого я использую ipify: он возвращает внешний IPv4, а скрипт отправляет его в Метрику под названием IP. Установить можно напрямую или через Яндекс Тег Менеджер.

Обычно задача появляется, когда хочется исключить подозрительный адрес из показов в Директе. В стандартных отчётах Метрики часть IP обнулена. Смотреть на 213.87.162.0 и угадывать последнюю цифру — занятие, конечно, увлекательное, но есть вариант попроще.

Сразу оговорка: старые визиты скрипт не раскроет. Параметр начнёт собираться после установки. И это адрес, который видит ipify, а не снятая Метрикой маска с её собственного поля.

Скрипт для передачи IP в Метрику

Замените 9999999 в строке var IDmetrika = 9999999; на номер своего счётчика. Остальное для обычной установки менять не нужно. Сама Метрика уже должна стоять на сайте.

HTML + JavaScript
<script>
(function () {
  'use strict';
  var IDmetrika = 9999999; // Замените на номер своего счётчика
  var guard = '__gmMetricaIP_' + IDmetrika;
  var attempts = 0;
  if (window[guard]) return;
  window[guard] = true;

  function fail() {
    window[guard] = false;
  }

  function isIPv4(value) {
    var parts = value.split('.');
    return parts.length === 4 && parts.every(function (part) {
      return /^\d{1,3}$/.test(part) && Number(part) <= 255;
    });
  }

  function run() {
    if (typeof window.ym !== 'function') {
      if (++attempts < 120) window.setTimeout(run, 500);
      else fail();
      return;
    }

    var request = new XMLHttpRequest();
    request.open('GET', 'https://api.ipify.org', true);
    request.timeout = 8000;
    request.onload = function () {
      var ip = request.responseText.trim();
      if (request.status !== 200 || !isIPv4(ip)) {
        fail();
        return;
      }
      try {
        window.ym(IDmetrika, 'params', { IP: ip });
        window.ym(IDmetrika, 'userParams', { IP: ip });
      } catch (error) {
        fail();
      }
    };
    request.onerror = fail;
    request.ontimeout = fail;
    request.onabort = fail;
    try {
      request.send();
    } catch (error) {
      fail();
    }
  }

  run();
})();
</script>

Код проверяет IPv4 на каждой загрузке страницы и передаёт его в два места: params — параметры текущего визита, userParams — параметры посетителя. Для разбора конкретного захода используйте параметры визита: свойство посетителя не привязано к одной дате посещения и может обновляться.

В старом варианте адрес сохранялся в sessionStorage, но при следующем открытии страницы только выводился в консоль. Я убрал это хранилище: не нужно возиться с его блокировкой и таскать старый IP после смены сети. Вместо фиксированной задержки на три секунды код ждёт появления ym до минуты. У запроса к ipify есть таймаут восемь секунд; при ошибке пустое значение в Метрику не уходит.

Здесь используется api.ipify.org, который возвращает IPv4. IPv6 этот вариант не собирает; если IPv4-соединение недоступно, параметра не будет. Повторная вставка того же скрипта на одной странице не создаёт второй запрос, пока первая попытка выполняется или уже завершилась успешно.

Как установить через Яндекс Тег Менеджер

  1. Откройте нужный счётчик в Метрике. Если ЯТМ ещё не включён, владелец счётчика должен открыть «Настройки → Счётчик», включить Яндекс Тег Менеджер и функцию «Пользовательский HTML», затем сохранить изменения.
  2. Перейдите в «Тег Менеджер → Теги → Добавить тег». Назовите его, например «Передача IP в Метрику».
  3. Выберите шаблон «Пользовательский HTML» и вставьте весь код выше, вместе с тегами <script>. Подставьте номер своего счётчика.
  4. Добавьте триггер «Просмотр страницы» с этапом «Модель DOM готова» на всех страницах, где нужен сбор IP. В ограничении активации выберите «В пределах одной страницы» — 1 раз. Ограничение «За всё время пользователя» здесь не подходит: адрес может поменяться.
  5. Сохраните тег, проверьте его в предварительном просмотре и нажмите «Опубликовать» в контейнере. Сохранённый черновик на сайт сам не поедет.

Если аналитика на сайте запускается только после согласия посетителя, этот тег тоже запускайте после согласия — тем же событием, которое разрешает аналитику, вместо обычного просмотра страницы. Само наличие функции ym не подтверждает, что согласие получено.

Для GTM принцип тот же: «Теги» → новый тег → «Пользовательский HTML», код и триггер на нужных страницах, затем публикация контейнера. Ниже — пример именно Google Tag Manager, не интерфейс ЯТМ. Скрипт со скрина старый, копируйте обновлённый из блока выше.

Пример настройки в Google Tag Manager: пользовательский HTML, номер счётчика и триггер All Pages выделены рамками
Архивный пример GTM. В ЯТМ нужен шаблон «Пользовательский HTML» и свой триггер.

Как поставить напрямую в код сайта

Вставьте скрипт после кода счётчика Метрики в общий шаблон сайта: перед закрывающим </head> или </body>. Он должен попадать на страницы, с которых нужны данные. Если счётчик загружается позже, скрипт немного подождёт.

На Тильде можно вставить код в «Настройки сайта → Ещё → HTML-код для вставки внутрь head», сохранить и опубликовать все страницы. Для одной страницы используйте её настройки вставки кода или блок T123.

Выберите один способ установки: напрямую, ЯТМ или GTM. Иначе потом придётся вспоминать, в каком из трёх мест лежит работающая версия.

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

Где посмотреть IP в Метрике

После установки откройте опубликованный сайт и дождитесь отправки параметра. В Метрике выберите период, в который попал новый визит. Данные в интерфейсе могут появиться с задержкой.

В карточке посетителя: откройте раздел «Посетители», выберите посетителя и найдите «Параметры посетителя» → IP. В новом интерфейсе раздел может находиться внутри группы «Посетители и клиенты».

Карточка посетителя Яндекс.Метрики: параметр IP показан внизу в параметрах посетителя
В карточке нужен свой параметр IP. Его расположение показано на скрине.

В Вебвизоре: откройте «Поведение → Вебвизор», нажмите «Настроить столбцы» и добавьте «Параметры посетителя». Здесь тоже появится IP. Для записей Вебвизор должен быть включён отдельно: сам скрипт запись посещений не включает.

Вебвизор Яндекс.Метрики: кнопка Настроить столбцы и столбец Параметры посетителя с IP-адресами
Скрины показывают интерфейс марта 2025 года. Названия и расположение пунктов могут отличаться.

Для IP конкретного визита смотрите также отчёт «Параметры визитов»: скрипт передаёт туда тот же ключ IP. Не используйте свойство посетителя как точную историю смены адресов.

Если параметр не появился, сначала проверьте номер счётчика и публикацию кода или контейнера. Затем — не блокирует ли браузер Метрику или запрос к api.ipify.org. При строгой Content Security Policy этот адрес должен быть разрешён в connect-src; отключать всю политику ради запроса не нужно.

Что делать с этим адресом в Директе

Передача IP в Метрику сама по себе не запрещает показы. Нужный адрес добавляется отдельно в дополнительные настройки рекламной кампании Директа, в исключения по IP.

И не надо минусовать адрес только потому, что посетитель долго ходил по сайту и не оставил заявку. У офиса, домашней сети или части абонентов оператора может быть один внешний IP. Заблокируете его — можете убрать из показов и нормальных покупателей.

Адрес может быть динамическим, принадлежать VPN или прокси. А при разной маршрутизации запросов ipify и Метрика могут видеть разные адреса. Это полезный технический признак, но не паспорт человека и не доказательство скликивания.

Если нужно добавить в заявку с Тильды идентификатор посетителя Метрики, смотрите инструкцию по передаче ClientID в заявку.