Иконка стрелки назад Назад

Интеграция сквозной аналитики с Яндекс Метрикой и CRM: пошаговый гайд с UTM-метками

Интеграция Яндекс Метрики с CRM позволяет связать клики и визиты с реальными продажами. В этом гайде рассказываем, как настроить сквозную аналитику: собрать ClientID на сайте, передать его в CRM, выгрузить заказы через API и получить отчёты в Метрике. Разбираем пошагово настройку UTM-меток, схему передачи данных, примеры кода, типичные ошибки и их решения.

Интеграция сквозной аналитики с Яндекс Метрикой и CRM: пошаговый гайд с UTM-метками

Статья подготовлена по состоянию на 29.09.2025. Проверяйте актуальность информации в официальной документации Яндекс Метрики и CRM-систем, так как форматы API и правила работы со сквозной аналитикой могут изменяться.

Этот материал — подробная инструкция, как связать поведение пользователя на сайте (Яндекс Метрика), заявки и продажи в CRM, а также рекламные кампании через UTM-метки.

Что вы получите:

  • чёткий план внедрения с чек-листами и типовыми ошибками;
  • готовые сниппеты кода для сбора ClientID (идентификатора посетителя Метрики) и отправки в CRM;
  • специфику импорта офлайн-данных (заявки/заказы) в Метрику: сроки, форматы, статусы;
  • рекомендации по UTM-разметке, макросам Директа, отчётам для контроля качества данных.

1. Что именно мы связываем и зачем

Цель сквозной аналитики — увидеть путь пользователя:
клик по объявлению → визиты на сайте → лид/сделка в CRM → выручка/маржа.

Ключ к связке — общий идентификатор:

  • ClientID — уникальный ID посетителя браузера (cookie _ym_uid). Рекомендуется как основной идентификатор, его можно получить через getClientID API Метрики.
  • UserID — внутренний ID авторизованного пользователя (опционально).
  • yclid — ID клика из Яндекс Директа.

Сроки привязки:

  • офлайн-данные добавляются к сессиям в пределах 21 дня от визита;
  • заказы можно обновлять до 111 дней после визита.

2. Архитектура решения

  1. Сайт: собираем ClientID и (при необходимости) UserID.
  2. Формы: добавляем скрытые поля и передаём идентификаторы в CRM.
  3. CRM/ETL: ежедневно формируем JSON/CSV с заказами и загружаем их в Метрику через API.
  4. Отчёты: проверяем данные в «Источниках заказов из CRM» и «Источниках, расходах и ROI».

3. Сбор ClientID на сайте

3.1. Добавьте скрытые поля в формы

<input type="hidden" name="ym_client_id" id="ym_client_id" value="">
<input type="hidden" name="user_id" id="user_id" value=""> <!-- если у вас есть авторизация -->

3.2. Подставьте ClientID в скрытое поле

<script>
  (function () {
    var COUNTER_ID = 12345678; // замените на ID вашего счётчика

    function readYmUidFromCookie() {
      var m = document.cookie.match('(?:^|;)\\s*_ym_uid=([^;]*)');
      return m ? decodeURIComponent(m[1]) : null;
    }

    function setField(id, val) {
      var el = document.getElementById(id);
      if (el && val) { el.value = val; }
    }

    function setClientIdSafe(clientId) {
      if (!clientId) clientId = readYmUidFromCookie();
      setField('ym_client_id', clientId);
    }

    if (typeof ym === 'function') {
      try {
        ym(COUNTER_ID, 'getClientID', function(clientId) {
          setClientIdSafe(clientId);
        });
      } catch (e) {
        setClientIdSafe(null);
      }
    } else {
      setTimeout(function () { setClientIdSafe(null); }, 800);
    }
  })();
</script>

4. Подготовка CRM к выгрузке

4.1. Минимальный набор полей

  • order_id — ID заказа;
  • client_crm_id — ID клиента;
  • create_date_time — дата/время создания заказа (часовой пояс счётчика);
  • order_status — статус заказа;
  • revenue / final_order_price — выручка;
  • cost — себестоимость (опционально);
  • список товаров (рекомендуется);
  • идентификаторы: ClientID (лучше всего), либо email/phone (в хеше), либо UserID.

4.2. Сопоставление статусов

Метрика поддерживает: PAIDIN_PROGRESSCANCELLEDSPAMOTHER.
Сопоставьте их со своими CRM-статусами через API /schema/order_statuses.

4.3. Сроки

  • добавление заказов — до 21 дня от визита;
  • обновление заказов — до 111 дней.

5. Канал данных из CRM в Метрику

Вариант А. Прямой API (рекомендовано)

  1. Получите OAuth-токен и доступ к счётчику.
  2. Ежедневно формируйте JSON/CSV и отправляйте:
    POST https://api-metrika.yandex.net/cdp/api/v1/counter/{counterId}/data/orders/json
  3. Для офлайн-конверсий целей используйте метод offline_conversions/upload.

Вариант B. Через облако/FTP

Если CRM выгружает только файлы → используйте коннектор, который:

  • забирает файл,
  • проверяет данные,
  • отправляет их в Метрику через API.

6. UTM-метки

Базовый набор: utm_sourceutm_mediumutm_campaignutm_contentutm_term.

Шаблон для Директа:
?utm_source=yandex&utm_medium=cpc&utm_campaign={campaign_id}&utm_content={ad_id}&utm_term={keyword}

Советы:

  • используйте латиницу и единый регистр;
  • заведите справочник значений для utm_medium;
  • в utm_content удобно кодировать сегменты (например, seg--retarget_a).

7. Проверка и отчёты

  • Статусы загрузок смотрите в интерфейсе счётчика или через API.
  • Основные отчёты: «Источники заказов из CRM» и «Источники, расходы и ROI».
  • Проверяйте достижение целей типа JavaScript-событие.
  • Для детальной диагностики используйте Reports API и Logs API.

8. Частые ошибки и как их избежать

Generated image

1. Не передали ClientID в CRM.
Что будет: Метрика не сможет связать заказ с визитом, реклама покажет клики без продаж.
Как правильно: во все формы на сайте добавьте скрытое поле ym_client_id и передавайте его в CRM. Проверяйте, чтобы это поле не было пустым.

2. Перепутали часовой пояс или формат даты.
Что будет: заказ попадёт в отчёт в неправильный день или не загрузится.
Как правильно: указывайте дату и время строго в формате 2025-09-29T14:00:00+03:00 и с тем же часовым поясом, что стоит в счётчике Метрики.

3. Не сопоставили статусы заказов.
Что будет: все заказы будут отмечены как «прочие», вы не увидите конверсии «Оплачен».
Как правильно: заранее составьте таблицу соответствия «статус в CRM → статус в Метрике» (например, «Оплачен → PAID»).

4. Загрузили заказы позже срока.
Что будет: данные не привяжутся к визитам.
Как правильно: загружайте данные каждый день. Метрика принимает новые заказы только до 21 дня от визита, обновления — до 111 дней.

5. Дублировали расходы Директа.
Что будет: расходы в отчётах удвоятся, ROI станет некорректным.
Как правильно: не загружайте расходы вручную, если у вас включена автоматическая интеграция с Директом.

6. Разметили кампании по-разному.
Что будет: в отчётах появятся десятки разных источников вроде cpcCPCклик.
Как правильно: используйте только латиницу, один регистр (лучше строчные буквы) и общий справочник UTM-меток.

7. Передали персональные данные в чистом виде.
Что будет: нарушение закона о персональных данных и блокировка загрузки.
Как правильно: не передавайте имена и телефоны как есть. Используйте только e-mail и телефон, которые Метрика автоматически шифрует.

8. Сделали файл с ошибками.
Что будет: загрузка не пройдёт, данные не попадут в отчёты.
Как правильно: сначала протестируйте загрузку на 2–3 заказах, убедитесь, что они появились в отчётах, и только потом загружайте весь массив.

9. Перепутали счётчик или доступ.
Что будет: данные улетят не туда или вовсе не загрузятся.
Как правильно: проверяйте перед загрузкой, что используете правильный ID счётчика и токен доступа именно от него.

9. Чек-лист внедрения

На стороне сайта:

  • установлен счётчик Метрики;
  • во всех формах есть поле ym_client_id;
  • работает скрипт getClientID (есть резерв через cookie).

На стороне CRM:

  • заведены поля под ClientID/UserID;
  • лиды и заказы принимают эти значения;
  • статусы сопоставлены с типами Метрики.

ETL:

  • ежедневное формирование JSON/CSV;
  • загрузка через API;
  • при необходимости — офлайн-конверсии.

UTM:

  • все кампании размечены корректно.

Контроль:

  • статусы загрузок проверены;
  • отчёты показывают корректные данные.

10. Примеры API-вызовов

Импорт заказов (JSON):
POST https://api-metrika.yandex.net/cdp/api/v1/counter/{counterId}/data/orders/json

Импорт офлайн-конверсий (CSV):
POST https://api-metrika.yandex.net/management/v1/counter/{counterId}/offline_conversions/upload

Сопоставление статусов:
POST /cdp/api/v1/counter/{counterId}/schema/order_statuses

11. Безопасность

  • Emails и телефоны можно передавать в открытом виде — Метрика сама хэширует их перед обработкой.
  • Не передавайте лишние персональные данные.
  • Основным ключом для связки используйте ClientID.

12. Быстрый старт

  1. Добавьте скрытое поле ym_client_id и скрипт getClientID.
  2. Создайте поле ym_client_id в CRM и сохраняйте его в сделках.
  3. Выгрузите несколько заказов за последние 2 недели и загрузите через API.
  4. Проверьте отчёт «Источники заказов из CRM».

13. Ответы на вопросы

Нужно ли обязательно передавать ClientID?
Нет, можно использовать e-mail или телефон, но ClientID всегда есть у каждого визита и даёт самую точную связку заказов с рекламой.

Что если заказ был в офлайне?
Если визит с ClientID был меньше 21 дня назад, заказ привяжется к нему. Если визита не было или срок больше — заказ попадёт в отчёт без источника.

Какая цель нужна для офлайн-конверсии?
Только JavaScript-событие. Метрика не примет загрузку по целям «Посещение страницы» или «Количество просмотров».

Сколько времени обрабатывается загрузка?
До 2 часов: небольшие файлы — быстрее, крупные партии заказов — дольше.

Заключение

Интеграция Метрики с CRM через ClientID и UTM-метки — это основа сквозной аналитики. Настроив всего несколько шагов, вы сможете видеть, какие рекламные кампании реально приносят деньги, а какие только создают клики. Для маркетолога это — инструмент контроля эффективности, для бизнеса — основа оптимизации бюджета. Чем раньше вы выстроите связку «сайт → CRM → Метрика», тем быстрее получите честную картину окупаемости рекламы.

Подождите,
отправляем заявку...
Успешно Заявка успешно отправлена.
Мы свяжемся с вами
Ошибка Ошибка отправки.
Попробуйте ещё раз