Инструкция по настройке
- Что делает решение
- Установка и первый запуск (3 минуты)
- Подключение Яндекс.Метрики
- Сопоставление статусов
- Подключение рекламных кабинетов
- Что показывает панель аналитики
- Как увеличить % сопоставления ClientID (главное)
- Расширенные настройки (включая модели атрибуции)
- Решение проблем
- Тарифы и оплата
- Поддержка
1. Что делает решение
«Метрика+ CDP для МойСклад» — серверное решение для МойСклад. Автоматически передаёт заказы и контакты клиентов из вашего аккаунта МойСклад в Яндекс.Метрика CDP, считает реальную окупаемость рекламы с учётом расходов из Яндекс.Директ, Google Ads и Яндекс.Промостраниц. В индустрии эту метрику называют ROAS или ROMI — мы используем «окупаемость рекламы» как более понятный для бизнеса термин.
Ключевые возможности:
- Передача заказов в Метрику в реальном времени через уведомления (webhook) МС.
- Автоматическое сопоставление статусов заказов МС с типами Метрики (PAID / IN_PROGRESS / CANCELLED / SPAM).
- Расчёт маржинальной аналитики через FIFO-себестоимость МС (то же что в нативном МС-отчёте «Прибыль» — берёт реальные приёмки товара, а не справочное поле buyPrice).
- Сегментация клиентов по выручке и истории покупок для похожих аудиторий в Яндекс.Аудиториях.
- Поддержка нескольких регионов: Россия, Казахстан, ОАЭ, Беларусь, Украина, Узбекистан.
1.1 Что критично для полноценной работы
По убыванию важности. Все пункты этого списка работают без программистов и без правок кода сайта — это устанавливается через UI в МС, Метрике или нашем виджете. Скрипты на сайте (см. §7) — отдельная история про улучшение качества матчинга, а не про базовую работоспособность.
| Чек | Кому критично | Что сломается без него |
|---|---|---|
| OAuth Яндекс.Метрики подключён в виджете | Всем | Нет канала отправки заказов в Метрику. Без этого ничего не работает. |
| Webhooks МС зарегистрированы (автоматически на установке) | Всем | Нет realtime-синхронизации. Заказы попадают в Метрику только при ручном «Загрузить 21 день». Если МС отключил webhook (после ~5 неудачных доставок) — проверьте «Диагностика подключения МС» в Настройках. |
| Маппинг статусов МС → 5 типов Метрики проверен (особенно PAID) | Всем | Метрика не понимает что такое «оплачен». PAID-статус — основа всех расчётов окупаемости и прибыли. Wizard угадывает 90% по ключевым словам, но проверьте вручную в «Настройки → Цели и статусы». |
E-commerce включён в счётчике Метрики + dataLayer.push({ecommerce.purchase}) на сайте |
Магазинам с онлайн-чекаутом | Главный путь сопоставления «без программистов». Большинство CMS ставят dataLayer
из коробки (Tilda / Bitrix / WordPress+WooCommerce / InSales / Shopify / OpenCart) —
проверьте в Метрика → Отчёты → E-commerce, появляются ли там покупки.
Если да — наш матчинг через purchase_id ↔ номер заказа МС работает сразу,
покрытие ≈ 80–90%. Если нет — в CMS обычно есть галка «включить интеграцию с Метрикой»
в админке, без кода. Также Метрика автоматически собирает хеши email/телефонов из форм
(если включено «Сбор хешированных email и телефонов»). Подробности в §7.8. |
| Рекламные кабинеты подключены к Метрике (Директ, Google Ads, VK, ...) | Всем | Без расходов окупаемость = 0. Делается ОДИН раз в самой Метрике (Настройки → Загрузка данных о расходах). Мы читаем готовые цифры, дополнительной настройки в нашем виджете не нужно. |
| Приёмки товаров в МС с реальными закупочными ценами | Бизнес+ (маржа) | Без приёмок Прибыль на рубль = 0 (МС считает себестоимость по FIFO от партий приёмок). Поле «Закупочная цена» в карточке товара само по себе не учитывается — оно только подставляется при создании новой приёмки. |
| Промостраницы подключены через OAuth (если используете) | Бизнес+ (Промостраницы) | Метрика не тянет расходы Промостраниц нативно. Без подключения в нашем виджете окупаемость Промо = 0. См. §5. |
| ≥ 100 уникальных посетителей в сегменте за 90 дней | Бизнес+ (Аудитории) | Direct требует этот порог. До накопления сегмент создан у нас и виден в виджете, но в селекторе Direct → «Условия подбора аудитории» его не будет. |
2. Установка (3 минуты)
- В МойСклад будут созданы 6 дополнительных полей. В карточке заказа (3): «ClientID Метрики», «Источник заказа», «Кампания». В карточке контрагента (3): «ClientID Метрики», «Первый источник», «Является менеджером» (для пометки сотрудников чтобы их тестовые заказы не передавались как ПДн). Все поля необязательные, заполняются автоматически. На шаге настройки виджета можно выключить создание опциональных полей — оставив только обязательный «ClientID Метрики».
- Будут зарегистрированы webhook-и на изменение заказов — нужны для синхронизации в реальном времени.
- Будет автоматически определён ваш регион (по адресу организации в МС) и шаблон номеров заказов (по 50 последним заказам).
3. Подключение Яндекс.Метрики
- На первом экране мастера нажмите «Подключить Метрику через OAuth».
- Откроется окно Яндекс.OAuth — авторизуйтесь под аккаунтом, у которого есть доступ к нужному счётчику Метрики.
- Дайте решению запрашиваемые права. Запрашиваются 6 scope:
metrika:read— чтение счётчиков и статистикиmetrika:segments— создание/удаление API-сегментов для ретаргетингаmetrika:write— создание целей (внутри схемы CDP-статусов)metrika:offline_data— загрузка заказов и контактов в CDPmetrika:expenses— чтение расходов из коннекторов Метрикиmetrika:user_params— параметры визита для расширенной CRM-сегментации
- После авторизации мастер автоматически вернётся к настройке. Если у вас один счётчик — он будет выбран автоматически. Если несколько — выберите нужный.
4. Сопоставление статусов
На втором шаге мастера решение автоматически загружает статусы заказов из вашего МойСклад и сопоставляет их с 5 типами статусов Метрики:
- PAID — Оплачен (заказ выполнен и деньги получены).
- IN_PROGRESS — В работе.
- CANCELLED — Отменён.
- SPAM — Спам, неполноценный лид.
- OTHER — Другой тип.
Автомаппинг работает по ключевым словам в названии статуса (например, «оплачен», «выдан клиенту» попадают в PAID; «отменён», «не оплачен» — в CANCELLED). Если результат вас устраивает, нажмите «Принять». Если хотите поправить — это можно сделать позже в разделе «Статусы».
5. Подключение источников расходов
Для расчёта окупаемости рекламы нужно подтянуть расходы рекламных кабинетов. Есть два пути — рекомендуемый через коннекторы Яндекс.Метрики, и резервный через прямой OAuth к рекламному аккаунту.
5.1 Расходы через коннекторы Метрики (рекомендуемый путь)
У Яндекс.Метрики есть встроенные коннекторы, которые сами тянут расходы из рекламных кабинетов и показывают их в отчёте «Источники → Сводка». Никаких токенов передавать нашему сервису не нужно — мы просто читаем уже собранные Метрикой данные.
Доступные коннекторы расходов в Метрике:
- Яндекс.Директ — нативно (включая Поиск, РСЯ, Бизнес)
- Google Ads (Search + Display) — нативно
- VK Реклама (ex-myTarget) — через бесплатный коннектор Albato (доступен из интерфейса Метрики)
- ВКонтакте (старый кабинет) — через Albato
- myTarget — через Albato
- Meta Ads (Facebook/Instagram) — через сторонний коннектор*
* Meta Platforms (Facebook, Instagram) признана экстремистской и запрещена на территории Российской Федерации (Решение Тверского районного суда г. Москвы от 21.03.2022). Подключение Meta-коннектора имеет смысл только для зарубежных кабинетов (AE / KZ / BY / UZ / другие).
Актуальный список коннекторов смотрите на странице «Источники, расходы и ROI» в Метрике — Яндекс периодически добавляет новые платформы.
Как настроить (1 раз на счётчик):
- В виджете откройте Настройки → Подключения. У каждого подключённого счётчика в блоке «💰 Расходы рекламы → 🪙 Метрика-коннектор» нажмите кнопку с номером счётчика — откроется страница «Источники расходов» в Метрике.
- Авторизуйтесь Яндекс-аккаунтом владельца кабинета Директа.
- Для каждого нужного источника (Директ / Google Ads / VK / FB / myTarget) нажмите «Подключить» и подтвердите OAuth.
- Метрика начнёт собирать расходы ежедневно автоматически. Первые данные появятся через 4–24 часа.
- В нашем виджете ничего настраивать не нужно — мы каждые 6 часов автоматически синхронизируем эти данные. Кнопка «Обновить за 30 дней» в том же блоке дёрнет данные вручную.
- Холдинг с несколькими счётчиками — нужно подключить коннектор отдельно в каждом счётчике (для каждого Яндекс-логина владельца Директа).
- Промостраницы Яндекс не тянутся коннектором Метрики — нужно подключать напрямую (см. 5.3).
- Некоторые региональные кабинеты (Казахстан-Mail.ru) могут отсутствовать.
5.2 Яндекс.Директ — автоматически через Метрику
Direct грузится автоматически через Метрика-токен (ym:ad:RUBConvertedAdCost + auto-discovery direct_client_logins). Отдельный OAuth Direct не нужен.
- В Настройках → Подключения → конкретный счётчик → блок «💰 Расходы рекламы» → секция «🎯 Яндекс.Директ для этого счётчика».
- Логин определяется автоматически по привязке Direct в Метрика-UI. Если нужно вручную — кнопка «Изменить логин».
- Кнопка «Обновить расходы Директа» подтягивает данные за 30 дней.
5.3 Яндекс.Промостраницы
Промостраницы Метрика не тянет через коннекторы — мы сами грузим расходы в Метрика-счётчик
через /management/v1/counter/{id}/expense/upload под нашим backend.
- В Настройках → Подключения → конкретный счётчик → блок «💰 Расходы рекламы» → секция «📰 Яндекс.Промостраницы».
- Кнопка «Подключить Яндекс.Промостраницы» — OAuth под аккаунтом с правами в Промо-редакции.
- «Залить расходы (7 дней)» запускает асинхронную загрузку — данные появятся в Метрика-отчётах как
источник
yandex.promopagesчерез ~30 минут. - Автозагрузка раз в 6 часов после первого ручного клика.
5.4 Холдинг с несколькими счётчиками (RU/AE/KZ и т.п.)
Каждый счётчик настраивается per-connection в блоке «Настройки → Подключения». В одном Яндекс-аккаунте может быть несколько счётчиков; кнопка «+ Счётчик» в шапке карточки паспорта добавляет ещё.
| Сценарий | Как настроить |
|---|---|
| Один сайт — один кабинет Директа | Один counter в Настройках, всё подтянется автоматически |
| Холдинг с несколькими регионами (RU/KZ/AE/BY/UA/UZ) | Один Яндекс-аккаунт, несколько счётчиков. Каждый со своим регионом → автоматически правильные НДС и валюта |
| Несколько юр.лиц с разными Direct-кабинетами | Подключить отдельный паспорт через «+ Подключить ещё один Яндекс-аккаунт» |
6. Что показывает панель аналитики
Раздел «Аналитика»
Основные KPI за выбранный период (7/30/90 дней): выручка, окупаемость рекламы, средний чек, конверсия заявка → оплата. Под графиком — журнал последних выгрузок в Метрику.
Раздел «Источники»
Таблица по каждой рекламной кампании с показателями: количество заказов, выручка, расход на рекламу, маржа (выручка − закупочная цена), прибыль, окупаемость рекламы и прибыль на рубль рекламы. Сортировка по любой колонке.
Раздел «Воронка»
Распределение заказов по 5 типам статусов Метрики и топ-30 ваших статусов МС с долей. Помогает увидеть, где теряются деньги в воронке продаж.
Раздел «Аудитории»
Создание аудиторий для ретаргетинга в Директе. Кнопка «Создать недостающие» разворачивает 7 типовых шаблонов в Метрике (Все CDP-заказы / Оплачено / Отмена / Прочие / Средний чек / Выручка / Прибыль). Кнопка «+ Свой сегмент» открывает билдер с 7 параметрами и 7 операторами (= ≠ > ≥ < ≤ диапазон) для произвольных порогов в валюте счётчика. Важно: Direct показывает аудиторию в селекторе только когда в ней накопилось ≥ 100 уникальных посетителей за 90 дней. До этого порога аудитория создана и видна у нас, но в Direct её не будет. После создания аудитории автоматически появляются в Direct → Условия подбора аудитории (с задержкой 5–30 мин на синхронизацию Direct).
Раздел «Статусы»
Таблица сопоставления статусов МС с типами Метрики — можно править вручную. В нижней части страницы свёрнут блок «Фильтр сотрудников и менеджеров (по email-домену)» — туда можно добавить домены, заказы с которых не должны передавать ПДн клиентов в Метрику.
Раздел «Инструкция»
Эта страница в краткой форме — внутри виджета. Описывает основные сценарии настройки.
Раздел «Настройки»
Per-connection архитектура: один Яндекс-аккаунт может иметь несколько счётчиков (RU/AE/KZ и т.п.). Каждая карточка счётчика содержит блок «💰 Расходы рекламы» (3 подсекции: 🪙 Метрика-коннектор, 🎯 Яндекс.Директ, 📰 Яндекс.Промостраницы), блок «🌍 Регион» (автоматически определяет НДС и валюту), а также секции каналов продаж/юр.лиц/расширенных настроек. Кнопка «Удалить ВСЕ данные» в самом низу — необратимое действие.
7. Как увеличить % сопоставления ClientID (главное)
ClientID Метрики — это строка цифр вида 1778784550496063444
(19 цифр, превышает Number.MAX_SAFE_INTEGER — храните как строку, иначе JS округлит
последние цифры и Метрика не свяжет заказ с визитом),
идентификатор посетителя сайта, который Метрика выдаёт каждому пользователю при первом визите
и хранит в cookie _ym_uid. Чтобы Метрика смогла построить связку
«визит → оплата» и посчитать честную окупаемость рекламы, нам нужно знать ClientID
для каждого заказа в МС.
Number.MAX_SAFE_INTEGER). Не сохраняйте его как int64 /
JS-Number — последние цифры округлятся (IEEE-754 precision loss), и Метрика
не свяжет визит с заказом. Только строкой.
Когда мы отправляем в Метрику CDP информацию о заказе из МС, Метрика привязывает этот заказ к ближайшему по времени визиту посетителя сайта. Посетитель определяется по трём идентификаторам, которые мы отправляем вместе с заказом:
ClientID— самый точный (если у нас он есть);email_md5— MD5-хеш email клиента (мы хешируем на нашем сервере перед отправкой в Метрику CDP по 152-ФЗ);phone_md5— MD5-хеш телефона клиента (хешируется аналогично).
Какой алгоритм хеша — зависит от того где хешируем:
- Серверная сторона (наш бэкенд → Метрика CDP
/data/contacts/json):MD5. Это формат полейphones_md5/emails_md5в payload CDP API. Мы делаем это сами, от вас не требуется. - Клиентская сторона (JS на сайте → счётчик Метрики через
firstPartyParamsHashed):SHA-256. Это формат полейphone_number/emailв JS API счётчика.
ym(N, 'firstPartyParams', { phone_number: '+79991234567', email: 'user@example.com' })
(Метрика сама хеширует SHA-256) или ym(N, 'firstPartyParamsHashed', { phone_number: '<sha256>', email: '<sha256>' })
если хешируете на сайте. Это вариант 3 ниже — fallback покрытие ≈ 40–60%.
- 21 день — окно атрибуции офлайн-данных. Заказ из МС привяжется к визиту, только если визит был не более 21 дня назад. Если клиент впервые попал на сайт 30+ дней назад и не возвращался — Метрика не свяжет. Именно поэтому наш backfill по умолчанию = 21 день.
- 111 дней — окно изменения статуса CRM-заказа. После того как заказ привязан к визиту, мы можем менять его статус (например, «В работе» → «Оплачено») в течение 111 дней с даты визита. После этого изменения не отображаются.
- 2 часа — задержка обработки. После отправки в Метрика CDP данные появляются в отчётах через ~5-15 минут, в полноценной аналитике — через 2 часа.
Решение пытается найти ClientID четырьмя путями (от самого надёжного к best-effort):
- В кастомном атрибуте заказа — самый надёжный.
- В кастомном атрибуте контрагента — для повторных покупок.
- Через purchase_id — обратный запрос в Метрику по номеру заказа.
- Через хеш телефона/email — если в Метрике включены «Дополнительные настройки отслеживания» + «Запоминать маскированные данные» либо на сайте вызывается
ym(N, 'firstPartyParams', ...).
7.1 На сайте: добавьте скрытое поле yandex_client_id
Самый эффективный способ. В формы заказа на сайте добавьте скрытое поле, которое автоматически заполняется ClientID-ом из Метрики. Это поле должно попадать в МС вместе с заказом (через API JSON или интеграцию вашего сайта с МС).
Вставьте этот код в <head> сайта (после кода счётчика Метрики):
<script>
// Получаем ClientID Метрики и кладём во все формы сайта
(function() {
var COUNTER_ID = 12345678; // ваш номер счётчика
function setClientId(cid) {
document.querySelectorAll('form').forEach(function(form) {
var input = form.querySelector('input[name="yandex_client_id"]');
if (!input) {
input = document.createElement('input');
input.type = 'hidden';
input.name = 'yandex_client_id';
form.appendChild(input);
}
input.value = cid;
});
}
function tryGet() {
if (typeof ym === 'function') {
ym(COUNTER_ID, 'getClientID', setClientId);
} else {
setTimeout(tryGet, 300);
}
}
tryGet();
})();
</script>
yandex_client_id,
clientid, _ym_uid, ym_uid, yandex_uid,
id клиента метрики. Главное — чтобы такое же имя было в названии атрибута заказа МС.
Можно добавить свои имена в «Настройки → Расширенные → Дополнительные источники ClientID».
userParams
(не обязательно, но повышает качество данных в Метрике). После авторизации клиента на сайте
вы можете прокинуть в Метрику его UserID, статус (VIP/обычный), сегмент и пр. — это поможет
Метрике объединить визиты одного клиента с разных устройств и обогатить отчёты.
ym(COUNTER_ID, 'userParams', {
UserID: 12345,
vip_status: true,
segment: 'b2b'
});
Данные привяжутся к ClientID, появятся в отчёте «Параметры посетителей» через несколько часов
и хранятся 2 года с последней загрузки. Подробнее:
docs.yandex/metrica/visitor-params.
7.2 По типу CMS — где поправить шаблон
| CMS / Платформа | Куда вставить скрипт | Поле для проброса в МС |
|---|---|---|
| Tilda | Настройки сайта → «Главное» → блок T123 «HTML-код в HEAD» |
В каждой форме добавьте скрытое поле через «Содержимое → Скрытые поля» с именем yandex_client_id |
| Bitrix / 1С-Битрикс | Шаблон сайта (main → header.php) |
В webform/order-форме добавьте <input type="hidden" name="UF_YANDEX_CLIENT_ID"> и в МС-интеграции маппинг на атрибут |
| WordPress / WooCommerce | Плагин «Insert Headers and Footers» (рекомендуется) ИЛИ в functions.php темы через PHP-функцию add_action('wp_head', ...) — НЕ вставлять <script> напрямую в PHP-файл (Fatal Error) |
Через hook woocommerce_checkout_create_order добавьте поле в meta, плагин «МойСклад» прокинет в атрибут заказа |
| OpenCart / ocStore | Шаблон catalog/view/theme/.../template/common/header.tpl |
Через vqMod / OCMOD добавьте поле в order-form, маппинг в МС-модуле |
| InSales / Shopify | Шаблон layout/theme.liquid перед </head> |
В cart.liquid или checkout-форме добавьте поле, прокиньте в МС через атрибут |
| Самописный сайт | Перед закрытием </head> |
В backend при создании заказа в МС API передавайте в массив attributes объект {"id": "<uuid_атрибута>", "value": "<clientId>"} |
7.3 amoCRM — что прокинуть в поле заказа
В amoCRM нет стандартного поля для ClientID — его нужно создать самостоятельно. Подробное руководство Яндекса по интеграции: yandex.ru/support/metrica/ru/crm/amocrm.
- В amoCRM откройте «Настройки → Поля → Сделки» (или «Контакты»)
- Создайте новое поле — название произвольное, рекомендуем
yandex_client_idилиClientID Метрики(тип «Короткий текст»). Запомните технический id поля (напримерcf123456) - В JS-формах вашего сайта добавьте скрытое поле и пробросьте его в API создания сделки amoCRM
через параметр
custom_fields_values[]с указанным id и значением изym(COUNTER_ID, 'getClientID', cb) - В интеграции amoCRM → МойСклад настройте перенос этого поля сделки в кастомный атрибут
заказа МС — название атрибута в МС должно совпадать с одним из распознаваемых
(
yandex_client_id,ClientID Метрикии т.п.)
7.4 Bitrix24 — настройка сквозной аналитики
В Bitrix24 готового поля для ClientID Метрики нет — нужно создать кастомное поле сделки и
настроить передачу _ym_uid через сайт-CRM-форму или REST API.
См. инструкцию Яндекса по интеграции с Битрикс24:
yandex.ru/support/metrica/ru/crm/bitrix.
- В Bitrix24 откройте «CRM → Настройки → Сделки → Пользовательские поля» и создайте поле «ClientID Метрики» (тип «Строка»). Запомните его UF-имя
- В формах сайта (Bitrix24.Sites или встроенная CRM-форма) добавьте скрытое поле с указанным
UF-именем и в JS заполняйте его значением из
ym(COUNTER_ID, 'getClientID', cb) - В интеграции Bitrix24 → МойСклад настройте сопоставление UF-поля сделки с кастомным атрибутом
заказа МС (рекомендуемое имя в МС:
yandex_client_idилиClientID Метрики)
7.5 Телефония — какое поле от провайдера прокинуть в МС
Если клиент звонит вам через виртуальную АТС с коллтрекингом, провайдер уже знает ClientID Метрики посетителя на сайте (из своего скрипта на сайте). Решение поддерживает 9 провайдеров по умолчанию. Просто положите идентификатор сессии в атрибут заказа.
| Провайдер | Поле провайдера | Положите в атрибут МС |
|---|---|---|
| Calltouch | session_id (sessionId) или call_id |
calltouch_session_id или calltouch_call_id |
| Callibri | ym_uid в API /metrika_visitor_info или callibri_id из JS-виджета |
callibri_id или callibri_visitor_id |
| Comagic / UISCom | session_id из API звонка |
comagic_id |
| Mango Office | call_id из webhook звонка |
mango_callid или mango_call_id |
| Roistat | roistat_visit (cookie) или visitor_id |
roistat_visit или roistat_visitor |
| Прочие (Sipuni, MCN, Zadarma) | Любой идентификатор сессии посетителя | Любое имя из списка в «Настройки → Расширенные → Дополнительные источники ClientID» |
roistat_visit, calltouch_session_id, jivo_visitor_id
и т.п.). Если передать их «как есть» в Метрику — статус загрузки сменится на
linkage_failure (ни один идентификатор не сматчился с визитом).
Правильный путь:
- Calltouch отдаёт
yaClientIdв API сессии, Callibri — через/metrika_visitor_info, Roistat и большинство коллтрекинг-систем сами передают ClientID в Метрику через свой JS-трекер (тогда в МС просто нужно прокинуть наш атрибут «ClientID Метрики»); - Использовать хеши контактов (мы автоматически хешируем phone/email на нашем сервере перед отправкой в Метрика CDP — Метрика свяжет визит с заказом по ним);
- В настройках счётчика Метрики (раздел «Безопасность и использование данных») включить «Дополнительные настройки отслеживания» и sub-опцию «Запоминать маскированные данные» — Метрика автоматически собирает Advanced Matching (email/phone хеши) с форм на сайте, без вмешательства в JS.
7.6 Чаты на сайте — какое поле прокинуть
| Чат-сервис | Поле сессии | Атрибут МС |
|---|---|---|
| Jivo (JivoSite) | visitor.id в webhook payload (server-side; в JS Jivo идентификация через setUserToken JWT) |
jivo_visitor_id или jivosite_id |
| Talk-Me | client_id сессии (уточните точное имя в их актуальной документации) |
talkme_id |
| Webim | visitor.id в webhook payload (server-side) |
webim_id |
| Carrot quest, Verbox, LiveTex | visitor id чата | Добавьте имя в «Настройки → Расширенные → Дополнительные источники ClientID» |
7.7 Авто-обогащение карточки заказа МС
Решение автоматически заполняет 3 поля в карточке заказа МС: ClientID Метрики, Источник заказа, Кампания — и 2 в карточке контрагента: ClientID Метрики, Первый источник. Менеджер открывает заказ и сразу видит откуда пришёл клиент.
Четыре пути связки заказа с визитом
| # | Способ | Точность | Условия |
|---|---|---|---|
| 1 | Сайт прокидывает yandex_client_id в форму заказа МС |
~100% для онлайн-заказов | JS-снипет на сайте (см. п. 7.1) + интеграция формы с МС |
| 2 | Сопоставление по purchase_id цели «покупка» |
80–95% для онлайн-заказов | На сайте срабатывает E-commerce purchase с тем же ID что и номер заказа в МС |
| 3 | По MD5 телефона/email — даже если посетитель не оформлял заказ на сайте | 40–70% для оффлайн-обзвонов | В Метрике включены «Дополнительные настройки отслеживания» + «Запоминать маскированные данные» либо на сайте вызывается ym(N, 'firstPartyParams', {phone_number, email}) при отправке формы |
| 4 | Через Яндекс.Крипта — межустройственное связывание | 20–50% для оффлайн-заказов | У клиента есть аккаунт Яндекс (по поведенческим факторам — почта, поиск, карты, такси) |
7.8 Сопоставление по purchase_id из e-commerce
purchase не записывается в Метрику и сопоставление не работает.
Альтернативный путь сопоставления — через purchaseID цели «покупка» в Метрике. Если
на сайте срабатывает цель E-commerce purchase с уникальным идентификатором заказа,
и этот же ID есть в номере заказа МС — мы сопоставим автоматически.
На сайте при подтверждении заказа — рекомендованный способ через E-commerce dataLayer (официальная дока Яндекса):
window.dataLayer = window.dataLayer || [];
dataLayer.push({
ecommerce: {
purchase: {
actionField: {
id: '12345', // ← это попадёт в purchase_id Метрики
revenue: 5400,
// currency, coupon, shipping — опционально
},
products: [/* ... */],
},
},
});
Альтернатива через reachGoal (legacy, если e-commerce dataLayer недоступен):
ym(COUNTER_ID, 'reachGoal', 'purchase', {
order_id: '12345', // ← попадёт в purchase_id
order_price: 5400, // ← поле называется order_price, не order_revenue
});
В виджете в «Настройки → Расширенные → Сопоставление заказов с purchaseID» выберите режим:
- Только цифры из имени заказа — если на сайте передаёте
12345, а в МС заказ называется «Заказ покупателя 12345 от 15.05.2026» - Имя заказа целиком — если совпадение точное
- UUID заказа из МС — если сайт пишет UUID в Метрику
- Из кастомного атрибута заказа — самый гибкий: указываете имя атрибута, в нём лежит purchase_id, который сайт отправляет в Метрику
- Шаблон
{number}/{any}— например,Gri_{number}для номеров видаGri_55321
7.9 RetailCRM — нативная связка с Метрикой
RetailCRM из коробки сохраняет _ym_uid посетителя в кастомное поле сделки/клиента,
если на сайте установлен Tracker RetailCRM. Также штатно интегрируется с Roistat и коллтрекинг-сервисами.
Перенос в МС — настраивается в разделе «Интеграции → МойСклад» вашей RetailCRM.
- В RetailCRM откройте «Настройки → Дополнительные поля → Заказы». Найдите поле, где сохраняется
_ym_uid(обычноya_client_idилиyandex_client_id). Если поле не создано — создайте «Короткий текст» с именемyandex_client_id. - Убедитесь что RetailCRM Tracker подключён на сайте — он сам ловит ClientID Метрики и пишет в это поле при создании заказа.
- В интеграции «RetailCRM ↔ МойСклад» (раздел «Интеграции» в RetailCRM) включите трансфер этого
кастомного поля в атрибут заказа МС с именем
yandex_client_idилиClientID Метрики. - Готово — все заказы, синхронизированные в МС, будут содержать ClientID; виджет подхватит его автоматически.
GET /api/v5/orders/{externalId} →
поле customFields.ya_client_id. Используйте, если работаете через свой промежуточный слой.
7.10 Мессенджеры — WhatsApp, Telegram, MAX
Если значимая часть заказов приходит через мессенджеры, ClientID нужно прокинуть при первом контакте через параметризованную прямую ссылку (deep-link) с вашего сайта. После этого все сообщения и заказы клиента в этом мессенджере будут привязаны к ClientID.
Если вы используете Wazzup24, Chat2Desk, Wassenger, Texterra
или другой WABA-сервис — они принимают первое сообщение через wa.me-ссылку и сохраняют UTM/параметры
на карточке клиента. Передавайте ClientID в utm_content или в тексте первого сообщения:
<a id="wa-link" href="https://wa.me/79991234567?text=Здравствуйте">Написать в WhatsApp</a>
<script>
ym(COUNTER_ID, 'getClientID', function(cid) {
var a = document.getElementById('wa-link');
if (a) a.href += encodeURIComponent(' (cid:' + cid + ')');
});
</script>
В Wazzup24/RetailCRM/Bitrix24 этот текст сохраняется на сделке. В интеграции с МС перенесите его в кастомный атрибут
заказа с именем yandex_client_id. Холодные WhatsApp-обращения (звонок без визита на сайт) матчатся только
через Крипту или phone_md5.
Telegram
Telegram-бот (и платформы BotHelp, TextBack, ManyChat,
Salebot) поддерживает ?start=PARAM в прямой ссылке. Бот получает параметр в первом
сообщении и сохраняет на пользователе.
<a id="tg-link" href="https://t.me/yourbot?start=ANON">Написать в Telegram</a>
<script>
ym(COUNTER_ID, 'getClientID', function(cid) {
var a = document.getElementById('tg-link');
if (a) a.href = a.href.replace('?start=ANON', '?start=ym_' + cid);
});
</script>
В BotHelp/TextBack/ManyChat значение из ?start= сохраняется как параметр пользователя —
точное имя переменной зависит от платформы (BotHelp использует start_param; в ManyChat
это «User Refs»; уточните в текущей документации вашего сервиса). При оформлении заказа в МС из бота —
пишите его в кастомное поле заказа.
MAX (мессенджер VK)
MAX поддерживает аналогичную прямую ссылку: https://max.ru/your_bot?start=ym_<cid>. Принцип
и реализация — как у Telegram (см. фрагмент выше, замените домен).
Для MAX Mini Apps (мини-приложения внутри мессенджера): используйте JS SDK МАХ, получите идентификатор пользователя и передайте на сервер вместе с ClientID, который вы прокидываете в параметре запуска.
7.11 Как проверить что % сопоставления растёт
- После настройки создайте тестовый заказ на сайте
- Через 1–2 минуты в МС найдите этот заказ — в атрибуте «ClientID Метрики» должно быть число вроде
1748503210892 - Через 30 минут в Метрике → «Посетители → Управление заказами» найдите этот заказ по purchase_id или uniq_id клиента
- В карточке заказа должен быть привязан
visit_id— это значит ClientID сматчился
7.12 Measurement Protocol — server-side обогащение визитов (продвинутый)
Если у вас есть кейсы где веб-счётчик не видит данные (блокировщики рекламы, эквайринг без redirect назад
на «спасибо за заказ», server-side events) — Метрика поддерживает Measurement Protocol:
отправка событий напрямую с вашего сервера в mc.yandex.ru/collect по HTTP.
Что можно отправить:
- Просмотры страниц (даже без кода Метрики)
- JavaScript-цели (
reachGoal) - События электронной коммерции (просмотр товара, покупка, корзина)
- Параметры визитов
Как включить:
- В Метрике → Настройки → Безопасность и использование данных → включите опцию «Measurement Protocol». Будет сгенерирован OAuth-токен (до 5 токенов на счётчик).
- На своём сервере запомните
ClientIDпользователя (берётся черезym(N, 'getClientID', cb)во время визита и сохраняется в БД для последующей отправки). - Отправляйте POST/GET-запросы на
https://mc.yandex.ru/collect?tid=<counter_id>&cid=<clientID>&...с авторизационным токеном. Данные появятся в Метрике через ~20 минут.
- 12 часов — окно дополнения существующих визитов. Если последний визит пользователя старше — нужно создать новый визит с тем же ClientID.
- Для событий старше 12 часов используйте обычную CDP-загрузку офлайн-данных (это то, что делает наш сервис автоматически на webhook от МС).
- Measurement Protocol — дополнение к веб-счётчику, не его замена.
Подробности — официальная документация Yandex Metrika Measurement Protocol. Наш сервис эту фичу не использует (мы шлём CDP-данные через `/data/contacts/json` и `/data/orders/json`), но если у вас есть собственный backend для специфических кейсов — это альтернативный канал.
8. Расширенные настройки
8.1 Модель атрибуции
По какой модели Метрика связывает заказы с источниками трафика и считает окупаемость и прибыль на рубль. Выбирается в «Настройки → Расширенные → Модель атрибуции».
| Модель | Окно | Когда использовать |
|---|---|---|
Последний значимый (рекомендуется)lastsign |
90 дн. | Default Stat API Метрики. Игнорирует прямые заходы и закладки — credit идёт последнему значимому источнику (рекламе, поисковику, соцсетям). Понятная для маркетолога, минимум искажений в окупаемости. Используйте для большинства e-com задач. |
Последний переходlast |
180 дн. | Засчитывает любой последний переход, включая прямые заходы. Полезен для технической сверки расхождений с другими отчётами. Завышает credit Direct/закладкам, недооценивает рекламные кампании. |
Первый переходfirst |
180 дн. | Первый visit клиента в окне. Для оценки top-of-funnel каналов — какие источники впервые приводят клиента (полезно для брендинга, контент-маркетинга). |
Последний клик из Директаlast_yandex_direct_click |
180 дн. | Приоритет Яндекс.Директу: если был хоть один клик по Direct в окне — credit идёт Direct, иначе fallback на «Последний значимый». Полезно если вы оптимизируете именно Direct-кампании. |
Автоматическаяautomatic |
180 дн. | ⚠️ Не «автовыбор модели Метрикой», а отдельный алгоритм = «Последний клик из Директа» + Crypta-домохозяйства + cross-device. Системно завышает credit Директу (+10% сигналов). Полезно только при работе с auto-стратегиями Яндекс.Директа (PFC, ROI-стратегии). |
Кросс-девайс моделиcross_device_* |
как у базовой | ⚠️ Объединение визитов с разных устройств одного юзера через технологию Crypta. Работает только если на сайте есть авторизация через Яндекс или похожий device-fingerprint. Без Yandex-auth — околонулевой эффект, но создаёт сложные несостыковки в окупаемости. Не включайте без понимания зачем. |
8.2 Прочие расширенные настройки
| Настройка | Когда использовать |
|---|---|
| Шаблон purchaseID | Если номер заказа в МС нестандартного формата (например, Gri_55321) — задайте шаблон вручную. |
| Валюта: from_order / fixed / convert | По умолчанию валюта берётся из заказа МС. Если у вас всегда одна валюта — переключите на «fixed». Для конвертации — «convert» + таблица курсов. |
| Нормализация Gmail | Склеивание дубликатов вида user.name+tag@gmail.com с username@gmail.com. |
| Передача комментариев заказа | Если включено — поле description заказа МС попадает в attribute_values заказа в CDP. |
9. Решение проблем
Заказы не передаются в Метрику
- Проверьте раздел «Аналитика» → «Журнал выгрузок». Если статусы «PASSED» — данные передаются, ищите в Метрике через сутки (агрегаты обновляются с задержкой).
- Если статусы «FAILED» — обычно причина в неподтверждённой OAuth-сессии Метрики. В разделе «Настройки» нажмите «Переподключить».
- Если журнал пустой — проверьте что webhook-и зарегистрированы (это происходит автоматически при установке).
Окупаемость = 0 (нет данных)
- Подождите 1 час после подключения рекламного кабинета — нужна первая синхронизация расходов.
- Проверьте что в Метрике есть UTM-метки заказов — без них невозможно сопоставить заказ с кампанией.
- Убедитесь что номера заказов в МС попадают в Метрику как
purchaseIDпри срабатывании цели «покупка» на сайте.
Маржа = выручке (закупочная цена не учитывается)
В МС должны быть проведены приёмки товаров с указанной закупочной ценой — себестоимость рассчитывается по методу FIFO от реальных партий приёмок (так же как в нативном МС-отчёте «Прибыль»). Поле «Закупочная цена» в карточке товара само по себе на расчёт не влияет (это справочное значение для подстановки при создании Приёмки). Если у товара никогда не было приёмок — себестоимость = 0, и маржа = выручке. Решение: создайте Приёмку с фактическими закупочными ценами; следующая синхронизация подтянет реальный COGS.
Хочу отключить решение
В разделе «Настройки» → раскройте карточку Яндекс-аккаунта → удалите подключение Метрики (или отключите Промостраницы внутри блока «Расходы рекламы»). Webhook-и в МС остановятся автоматически. Удаление приложения через интерфейс МС не требуется.
10. Тарифы и оплата
Решение предоставляется по подписке через биллинг МойСклад. После 7-дневного пробного периода оплата производится ежемесячно. Скидки за длительные периоды — на странице решения в каталоге МойСклад.
| Тариф | Цена/мес | Счётчиков | Что главное |
|---|---|---|---|
| Старт | 2 990 ₽ | 1 | Обогащение МС-карточек в реальном времени + 5 целей + мультивалютность (RU/KZ/AE/BY/UZ) + окупаемость рекламы (выручка ÷ расход) + детализация источников + история 90 дней. |
| Бизнес | 5 990 ₽ | до 3 | Полная аналитика + окупаемость с учётом маржи (прибыль на рубль рекламы) + кастомные B2B-цели + Аудитории ретаргетинга + Промостраницы + история 365 дней. |
| Премиум | 24 990 ₽ | до 10 | API на чтение + кастомные доработки (через support@etokruto.ru) + история 720 дней (2 года) + приоритетная Email-поддержка. Для холдингов. |
Подробное описание и оплата — на странице решения в каталоге МойСклад.
11. Поддержка
- Telegram (быстрее всего): @etokrutobot — напишите боту, мы получим уведомление и ответим
- Email: support@etokruto.ru
- Документация: metrika.etokruto.ru/help
- Политика обработки ПДн: metrika.etokruto.ru/privacy
Время ответа на запросы: до 48 часов в рабочие дни (для тарифов «Старт» и «Бизнес»), до 24 часов («Премиум»).