Статья подготовлена по состоянию на 29.09.2025. Проверяйте актуальность информации в официальной документации Яндекс Метрики и CRM-систем, так как форматы API и правила работы со сквозной аналитикой могут изменяться.
Этот материал — подробная инструкция, как связать поведение пользователя на сайте (Яндекс Метрика), заявки и продажи в CRM, а также рекламные кампании через UTM-метки.
чёткий план внедрения с чек-листами и типовыми ошибками;
готовые сниппеты кода для сбора ClientID (идентификатора посетителя Метрики) и отправки в CRM;
специфику импорта офлайн-данных (заявки/заказы) в Метрику: сроки, форматы, статусы;
рекомендации по UTM-разметке, макросам Директа, отчётам для контроля качества данных.
Цель сквозной аналитики — увидеть путь пользователя:
клик по объявлению → визиты на сайте → лид/сделка в CRM → выручка/маржа.
Ключ к связке — общий идентификатор:
ClientID — уникальный ID посетителя браузера (cookie _ym_uid
). Рекомендуется как основной идентификатор, его можно получить через getClientID
API Метрики.
UserID — внутренний ID авторизованного пользователя (опционально).
yclid — ID клика из Яндекс Директа.
Сроки привязки:
офлайн-данные добавляются к сессиям в пределах 21 дня от визита;
заказы можно обновлять до 111 дней после визита.
Сайт: собираем ClientID и (при необходимости) UserID.
Формы: добавляем скрытые поля и передаём идентификаторы в CRM.
CRM/ETL: ежедневно формируем JSON/CSV с заказами и загружаем их в Метрику через API.
Отчёты: проверяем данные в «Источниках заказов из CRM» и «Источниках, расходах и ROI».
<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>
order_id
— ID заказа;
client_crm_id
— ID клиента;
create_date_time
— дата/время создания заказа (часовой пояс счётчика);
order_status
— статус заказа;
revenue
/ final_order_price
— выручка;
cost
— себестоимость (опционально);
список товаров (рекомендуется);
идентификаторы: ClientID (лучше всего), либо email/phone (в хеше), либо UserID.
Метрика поддерживает: PAID
, IN_PROGRESS
, CANCELLED
, SPAM
, OTHER
.
Сопоставьте их со своими CRM-статусами через API /schema/order_statuses
.
добавление заказов — до 21 дня от визита;
обновление заказов — до 111 дней.
Получите OAuth-токен и доступ к счётчику.
Ежедневно формируйте JSON/CSV и отправляйте:POST https://api-metrika.yandex.net/cdp/api/v1/counter/{counterId}/data/orders/json
Для офлайн-конверсий целей используйте метод offline_conversions/upload
.
Если CRM выгружает только файлы → используйте коннектор, который:
забирает файл,
проверяет данные,
отправляет их в Метрику через API.
Базовый набор: utm_source
, utm_medium
, utm_campaign
, utm_content
, utm_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
).
Статусы загрузок смотрите в интерфейсе счётчика или через API.
Основные отчёты: «Источники заказов из CRM» и «Источники, расходы и ROI».
Проверяйте достижение целей типа JavaScript-событие.
Для детальной диагностики используйте Reports API и Logs API.
1. Не передали ClientID в CRM.
Что будет: Метрика не сможет связать заказ с визитом, реклама покажет клики без продаж.
Как правильно: во все формы на сайте добавьте скрытое поле ym_client_id
и передавайте его в CRM. Проверяйте, чтобы это поле не было пустым.
2. Перепутали часовой пояс или формат даты.
Что будет: заказ попадёт в отчёт в неправильный день или не загрузится.
Как правильно: указывайте дату и время строго в формате 2025-09-29T14:00:00+03:00
и с тем же часовым поясом, что стоит в счётчике Метрики.
3. Не сопоставили статусы заказов.
Что будет: все заказы будут отмечены как «прочие», вы не увидите конверсии «Оплачен».
Как правильно: заранее составьте таблицу соответствия «статус в CRM → статус в Метрике» (например, «Оплачен → PAID»).
4. Загрузили заказы позже срока.
Что будет: данные не привяжутся к визитам.
Как правильно: загружайте данные каждый день. Метрика принимает новые заказы только до 21 дня от визита, обновления — до 111 дней.
5. Дублировали расходы Директа.
Что будет: расходы в отчётах удвоятся, ROI станет некорректным.
Как правильно: не загружайте расходы вручную, если у вас включена автоматическая интеграция с Директом.
6. Разметили кампании по-разному.
Что будет: в отчётах появятся десятки разных источников вроде cpc
, CPC
, клик
.
Как правильно: используйте только латиницу, один регистр (лучше строчные буквы) и общий справочник UTM-меток.
7. Передали персональные данные в чистом виде.
Что будет: нарушение закона о персональных данных и блокировка загрузки.
Как правильно: не передавайте имена и телефоны как есть. Используйте только e-mail и телефон, которые Метрика автоматически шифрует.
8. Сделали файл с ошибками.
Что будет: загрузка не пройдёт, данные не попадут в отчёты.
Как правильно: сначала протестируйте загрузку на 2–3 заказах, убедитесь, что они появились в отчётах, и только потом загружайте весь массив.
9. Перепутали счётчик или доступ.
Что будет: данные улетят не туда или вовсе не загрузятся.
Как правильно: проверяйте перед загрузкой, что используете правильный ID счётчика и токен доступа именно от него.
На стороне сайта:
установлен счётчик Метрики;
во всех формах есть поле ym_client_id
;
работает скрипт getClientID
(есть резерв через cookie).
На стороне CRM:
заведены поля под ClientID/UserID;
лиды и заказы принимают эти значения;
статусы сопоставлены с типами Метрики.
ETL:
ежедневное формирование JSON/CSV;
загрузка через API;
при необходимости — офлайн-конверсии.
UTM:
все кампании размечены корректно.
Контроль:
статусы загрузок проверены;
отчёты показывают корректные данные.
Импорт заказов (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
Emails и телефоны можно передавать в открытом виде — Метрика сама хэширует их перед обработкой.
Не передавайте лишние персональные данные.
Основным ключом для связки используйте ClientID.
Добавьте скрытое поле ym_client_id
и скрипт getClientID
.
Создайте поле ym_client_id
в CRM и сохраняйте его в сделках.
Выгрузите несколько заказов за последние 2 недели и загрузите через API.
Проверьте отчёт «Источники заказов из CRM».
Нужно ли обязательно передавать ClientID?
Нет, можно использовать e-mail или телефон, но ClientID всегда есть у каждого визита и даёт самую точную связку заказов с рекламой.
Что если заказ был в офлайне?
Если визит с ClientID был меньше 21 дня назад, заказ привяжется к нему. Если визита не было или срок больше — заказ попадёт в отчёт без источника.
Какая цель нужна для офлайн-конверсии?
Только JavaScript-событие. Метрика не примет загрузку по целям «Посещение страницы» или «Количество просмотров».
Сколько времени обрабатывается загрузка?
До 2 часов: небольшие файлы — быстрее, крупные партии заказов — дольше.
Интеграция Метрики с CRM через ClientID и UTM-метки — это основа сквозной аналитики. Настроив всего несколько шагов, вы сможете видеть, какие рекламные кампании реально приносят деньги, а какие только создают клики. Для маркетолога это — инструмент контроля эффективности, для бизнеса — основа оптимизации бюджета. Чем раньше вы выстроите связку «сайт → CRM → Метрика», тем быстрее получите честную картину окупаемости рекламы.