Инструкция по настройке

Метрика+ CDP для МойСклад · версия 1.1 · обновлено 15 мая 2026

В этой инструкции:
  1. Что делает решение
  2. Установка и первый запуск (3 минуты)
  3. Подключение Яндекс.Метрики
  4. Сопоставление статусов
  5. Подключение рекламных кабинетов
  6. Что показывает панель аналитики
  7. Как увеличить % сопоставления ClientID (главное)
  8. Расширенные настройки (включая модели атрибуции)
  9. Решение проблем
  10. Тарифы и оплата
  11. Поддержка

1. Что делает решение

«Метрика+ CDP для МойСклад» — серверное решение для МойСклад. Автоматически передаёт заказы и контакты клиентов из вашего аккаунта МойСклад в Яндекс.Метрика CDP, считает реальную окупаемость рекламы с учётом расходов из Яндекс.Директ, Google Ads и Яндекс.Промостраниц. В индустрии эту метрику называют ROAS или ROMI — мы используем «окупаемость рекламы» как более понятный для бизнеса термин.

Ключевые возможности:

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 → «Условия подбора аудитории» его не будет.
Минимальный сценарий «3 минуты без программистов»: установить виджет (1), подключить Метрику (2), проверить маппинг PAID (3), убедиться что E-commerce работает в Метрике (4), подключить хотя бы один рекламный кабинет к Метрике (5). Этого достаточно чтобы видеть оплаченные заказы и базовую окупаемость в течение 24 часов. Никакого кода на сайте не требуется — стандартные CMS уже всё умеют из коробки.
Углублённая оптимизация для тех у кого % сопоставления ниже 70% (см. §7) — JS-снипеты для проброса ClientID с сайта в формы заказа, кастомные интеграции с CRM/телефонией/ чатами, проброс параметров мессенджеров. Это улучшит покрытие с 80–90% до 95%+, но требует доступа к коду сайта или к настройкам CRM. Это не обязательно для базовой работы решения — для большинства магазинов достаточно стандартного e-commerce dataLayer + хешей контактов из Метрики.

2. Установка (3 минуты)

Шаг 1. Найдите решение в каталоге МойСклад → нажмите «Установить» → согласитесь с запрашиваемыми правами.
Шаг 2. После установки в меню МойСклад появится наш модуль. Откройте его — запустится мастер первичной настройки.
Что произойдёт автоматически при первой установке: Решение НЕ создаёт обязательных полей и не изменяет существующие поля.

3. Подключение Яндекс.Метрики

  1. На первом экране мастера нажмите «Подключить Метрику через OAuth».
  2. Откроется окно Яндекс.OAuth — авторизуйтесь под аккаунтом, у которого есть доступ к нужному счётчику Метрики.
  3. Дайте решению запрашиваемые права. Запрашиваются 6 scope:
    • metrika:read — чтение счётчиков и статистики
    • metrika:segments — создание/удаление API-сегментов для ретаргетинга
    • metrika:write — создание целей (внутри схемы CDP-статусов)
    • metrika:offline_data — загрузка заказов и контактов в CDP
    • metrika:expenses — чтение расходов из коннекторов Метрики
    • metrika:user_params — параметры визита для расширенной CRM-сегментации
  4. После авторизации мастер автоматически вернётся к настройке. Если у вас один счётчик — он будет выбран автоматически. Если несколько — выберите нужный.
Если ваш браузер блокирует всплывающее окно OAuth — разрешите popup для домена МойСклад и повторите подключение.

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

На втором шаге мастера решение автоматически загружает статусы заказов из вашего МойСклад и сопоставляет их с 5 типами статусов Метрики:

Автомаппинг работает по ключевым словам в названии статуса (например, «оплачен», «выдан клиенту» попадают в PAID; «отменён», «не оплачен» — в CANCELLED). Если результат вас устраивает, нажмите «Принять». Если хотите поправить — это можно сделать позже в разделе «Статусы».

5. Подключение источников расходов

Для расчёта окупаемости рекламы нужно подтянуть расходы рекламных кабинетов. Есть два пути — рекомендуемый через коннекторы Яндекс.Метрики, и резервный через прямой OAuth к рекламному аккаунту.

Сначала настройте коннекторы в Метрике (рекомендуется) — это надёжнее, бесплатно и быстрее. Прямой OAuth-метод нужен только если коннектор недоступен (типичный случай — Яндекс.Промостраницы).

5.1 Расходы через коннекторы Метрики (рекомендуемый путь)

У Яндекс.Метрики есть встроенные коннекторы, которые сами тянут расходы из рекламных кабинетов и показывают их в отчёте «Источники → Сводка». Никаких токенов передавать нашему сервису не нужно — мы просто читаем уже собранные Метрикой данные.

Доступные коннекторы расходов в Метрике:

* Meta Platforms (Facebook, Instagram) признана экстремистской и запрещена на территории Российской Федерации (Решение Тверского районного суда г. Москвы от 21.03.2022). Подключение Meta-коннектора имеет смысл только для зарубежных кабинетов (AE / KZ / BY / UZ / другие).

Актуальный список коннекторов смотрите на странице «Источники, расходы и ROI» в Метрике — Яндекс периодически добавляет новые платформы.

Как настроить (1 раз на счётчик):

  1. В виджете откройте Настройки → Подключения. У каждого подключённого счётчика в блоке «💰 Расходы рекламы → 🪙 Метрика-коннектор» нажмите кнопку с номером счётчика — откроется страница «Источники расходов» в Метрике.
  2. Авторизуйтесь Яндекс-аккаунтом владельца кабинета Директа.
  3. Для каждого нужного источника (Директ / Google Ads / VK / FB / myTarget) нажмите «Подключить» и подтвердите OAuth.
  4. Метрика начнёт собирать расходы ежедневно автоматически. Первые данные появятся через 4–24 часа.
  5. В нашем виджете ничего настраивать не нужно — мы каждые 6 часов автоматически синхронизируем эти данные. Кнопка «Обновить за 30 дней» в том же блоке дёрнет данные вручную.
Что у вас будет в итоге: на странице «Аналитика → Источники» появится колонка «Расход» с честными цифрами по каждой кампании, и окупаемость будет считаться автоматически. Никаких отдельных аккаунтов в нашем виджете заводить не надо.
Минусы:

5.2 Яндекс.Директ — автоматически через Метрику

Direct грузится автоматически через Метрика-токен (ym:ad:RUBConvertedAdCost + auto-discovery direct_client_logins). Отдельный OAuth Direct не нужен.

  1. В Настройках → Подключения → конкретный счётчик → блок «💰 Расходы рекламы» → секция «🎯 Яндекс.Директ для этого счётчика».
  2. Логин определяется автоматически по привязке Direct в Метрика-UI. Если нужно вручную — кнопка «Изменить логин».
  3. Кнопка «Обновить расходы Директа» подтягивает данные за 30 дней.
Суммы Directa подгружаются с НДС (RU 20% / KZ 12% / AE 5% — определяется автоматически по региону счётчика). В нашем UI цифры совпадают с тем что юзер видит в счёт-фактурах Direct.

5.3 Яндекс.Промостраницы

Промостраницы Метрика не тянет через коннекторы — мы сами грузим расходы в Метрика-счётчик через /management/v1/counter/{id}/expense/upload под нашим backend.

  1. В Настройках → Подключения → конкретный счётчик → блок «💰 Расходы рекламы» → секция «📰 Яндекс.Промостраницы».
  2. Кнопка «Подключить Яндекс.Промостраницы» — OAuth под аккаунтом с правами в Промо-редакции.
  3. «Залить расходы (7 дней)» запускает асинхронную загрузку — данные появятся в Метрика-отчётах как источник yandex.promopages через ~30 минут.
  4. Автозагрузка раз в 6 часов после первого ручного клика.
Промостраницы часто дают окупаемость ×5–7 в нашей выборке — это лучший канал для нативной аналитики в e-commerce. Валюта Promo берётся из региона счётчика (KZ → KZT, AE → AED, и т.д.).

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 для каждого заказа в МС.

Важно: ClientID — это строка, не число. Длина до 20 символов (превышает Number.MAX_SAFE_INTEGER). Не сохраняйте его как int64 / JS-Number — последние цифры округлятся (IEEE-754 precision loss), и Метрика не свяжет визит с заказом. Только строкой.
Как Метрика привязывает заказ к визиту (официальная схема Яндекса):
Когда мы отправляем в Метрику CDP информацию о заказе из МС, Метрика привязывает этот заказ к ближайшему по времени визиту посетителя сайта. Посетитель определяется по трём идентификаторам, которые мы отправляем вместе с заказом:
  1. ClientID — самый точный (если у нас он есть);
  2. email_md5 — MD5-хеш email клиента (мы хешируем на нашем сервере перед отправкой в Метрику CDP по 152-ФЗ);
  3. phone_md5 — MD5-хеш телефона клиента (хешируется аналогично).

Какой алгоритм хеша — зависит от того где хешируем: Чтобы Метрика автоматически собирала email/phone (Advanced Matching) с форм сайта, в настройках счётчика включите сбор хешированных email и телефонов из форм (точное название UI-опции может меняться — ищите «хеши», «маскированные», «Точные цели» в разделе настроек). Альтернатива для ручного контроля — явно передавать через 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%.
⏱ Важные тайминги Метрики:
Главное правило: чем раньше вы поймаете ClientID (в момент заполнения формы / звонка / чата) и положите его в соответствующее поле заказа в МС, тем выше будет процент сопоставления. Без этого Метрика не свяжет оффлайн-оплату с онлайн-визитом, и кампания будет показывать окупаемость = 0.

Решение пытается найти ClientID четырьмя путями (от самого надёжного к best-effort):

  1. В кастомном атрибуте заказа — самый надёжный.
  2. В кастомном атрибуте контрагента — для повторных покупок.
  3. Через purchase_id — обратный запрос в Метрику по номеру заказа.
  4. Через хеш телефона/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С-Битрикс Шаблон сайта (mainheader.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.

  1. В amoCRM откройте «Настройки → Поля → Сделки» (или «Контакты»)
  2. Создайте новое поле — название произвольное, рекомендуем yandex_client_id или ClientID Метрики (тип «Короткий текст»). Запомните технический id поля (например cf123456)
  3. В JS-формах вашего сайта добавьте скрытое поле и пробросьте его в API создания сделки amoCRM через параметр custom_fields_values[] с указанным id и значением из ym(COUNTER_ID, 'getClientID', cb)
  4. В интеграции amoCRM → МойСклад настройте перенос этого поля сделки в кастомный атрибут заказа МС — название атрибута в МС должно совпадать с одним из распознаваемых (yandex_client_id, ClientID Метрики и т.п.)

7.4 Bitrix24 — настройка сквозной аналитики

В Bitrix24 готового поля для ClientID Метрики нет — нужно создать кастомное поле сделки и настроить передачу _ym_uid через сайт-CRM-форму или REST API. См. инструкцию Яндекса по интеграции с Битрикс24: yandex.ru/support/metrica/ru/crm/bitrix.

  1. В Bitrix24 откройте «CRM → Настройки → Сделки → Пользовательские поля» и создайте поле «ClientID Метрики» (тип «Строка»). Запомните его UF-имя
  2. В формах сайта (Bitrix24.Sites или встроенная CRM-форма) добавьте скрытое поле с указанным UF-именем и в JS заполняйте его значением из ym(COUNTER_ID, 'getClientID', cb)
  3. В интеграции Bitrix24 → МойСклад настройте сопоставление UF-поля сделки с кастомным атрибутом заказа МС (рекомендуемое имя в МС: yandex_client_id или ClientID Метрики)
Если у вас уже подключено приложение b24-yandex-metrika в Bitrix24 — оно сохраняет ClientID в собственное поле (часто «Yandex Client Id»). Используйте его — в интеграции с МС просто маппите это поле в атрибут заказа.

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»
⚠️ Важно: Метрика CDP НЕ понимает идентификаторы сторонних систем напрямую (roistat_visit, calltouch_session_id, jivo_visitor_id и т.п.). Если передать их «как есть» в Метрику — статус загрузки сменится на linkage_failure (ни один идентификатор не сматчился с визитом).

Правильный путь:
  1. Calltouch отдаёт yaClientId в API сессии, Callibri — через /metrika_visitor_info, Roistat и большинство коллтрекинг-систем сами передают ClientID в Метрику через свой JS-трекер (тогда в МС просто нужно прокинуть наш атрибут «ClientID Метрики»);
  2. Использовать хеши контактов (мы автоматически хешируем phone/email на нашем сервере перед отправкой в Метрика CDP — Метрика свяжет визит с заказом по ним);
  3. В настройках счётчика Метрики (раздел «Безопасность и использование данных») включить «Дополнительные настройки отслеживания» и sub-опцию «Запоминать маскированные данные» — Метрика автоматически собирает Advanced Matching (email/phone хеши) с форм на сайте, без вмешательства в JS.
Идентификаторы в таблице выше — это поля сессии стороннего сервиса, которые вы прокидываете в МС-заказ. Они нужны для обогащения CRM-данных, но не работают в Метрике CDP как ключ привязки. Подробнее: CRM-интеграции Метрики.

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% для оффлайн-заказов У клиента есть аккаунт Яндекс (по поведенческим факторам — почта, поиск, карты, такси)
Что такое Крипта? Это технология Яндекса, которая определяет один и тот же пользователь по разным устройствам/браузерам через сходство поведения в сети (поисковые запросы, посещаемые сайты, время активности, домохозяйство по IP). При загрузке в CDP MD5-хешей телефона и email мы фактически просим Метрику: «свяжи этого клиента с его cross-device-профилем». Если у клиента есть Яндекс-аккаунт — связка построится, даже если на ваш сайт он никогда не заходил. Это уникальная возможность экосистемы Яндекс, которой нет у независимых аналитик.
Скорость и полнота связки зависят от настройки сайта и активности клиента в Яндекс-экосистеме. Гарантии 100% покрытия нет — это вероятностные модели. На практике совокупно с (1)–(4) получается 50–90% заказов с известным источником.

7.8 Сопоставление по purchase_id из e-commerce

Предварительно включите 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» выберите режим:

7.9 RetailCRM — нативная связка с Метрикой

RetailCRM из коробки сохраняет _ym_uid посетителя в кастомное поле сделки/клиента, если на сайте установлен Tracker RetailCRM. Также штатно интегрируется с Roistat и коллтрекинг-сервисами. Перенос в МС — настраивается в разделе «Интеграции → МойСклад» вашей RetailCRM.

  1. В RetailCRM откройте «Настройки → Дополнительные поля → Заказы». Найдите поле, где сохраняется _ym_uid (обычно ya_client_id или yandex_client_id). Если поле не создано — создайте «Короткий текст» с именем yandex_client_id.
  2. Убедитесь что RetailCRM Tracker подключён на сайте — он сам ловит ClientID Метрики и пишет в это поле при создании заказа.
  3. В интеграции «RetailCRM ↔ МойСклад» (раздел «Интеграции» в RetailCRM) включите трансфер этого кастомного поля в атрибут заказа МС с именем yandex_client_id или ClientID Метрики.
  4. Готово — все заказы, синхронизированные в МС, будут содержать ClientID; виджет подхватит его автоматически.
В RetailCRM также можно вытащить ClientID через REST API: GET /api/v5/orders/{externalId} → поле customFields.ya_client_id. Используйте, если работаете через свой промежуточный слой.

7.10 Мессенджеры — WhatsApp, Telegram, MAX

Если значимая часть заказов приходит через мессенджеры, ClientID нужно прокинуть при первом контакте через параметризованную прямую ссылку (deep-link) с вашего сайта. После этого все сообщения и заказы клиента в этом мессенджере будут привязаны к ClientID.

Без настройки мессенджер-заказы атрибутируются через Яндекс.Крипту (если клиент когда-то был на сайте с того же устройства / Яндекс-аккаунта) или через MD5 телефона (если клиент уже оставлял свой телефон на сайте). Это даёт 20–60% покрытия «бесплатно». Прямая ссылка с параметром доводит до 90%+.

WhatsApp

Если вы используете 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, который вы прокидываете в параметре запуска.

Все три мессенджера работают по одному принципу: при первом контакте передайте клиенту ссылку с ClientID в параметре. После этого все его сообщения и заказы будут привязаны к этому ID — виджет автоматически подхватит его через атрибут заказа МС.

7.11 Как проверить что % сопоставления растёт

  1. После настройки создайте тестовый заказ на сайте
  2. Через 1–2 минуты в МС найдите этот заказ — в атрибуте «ClientID Метрики» должно быть число вроде 1748503210892
  3. Через 30 минут в Метрике → «Посетители → Управление заказами» найдите этот заказ по purchase_id или uniq_id клиента
  4. В карточке заказа должен быть привязан visit_id — это значит ClientID сматчился
Метрика-овский отчёт «Источники / Сводка» с применённым CDP-сегментом «[МС] Оплачено» — показывает реальный охват: если число «Посетителей» равно числу заказов — % сопоставления близок к 100%. Если в 5 раз меньше — мы не находим ClientID для 80% заказов, нужно настраивать.

7.12 Measurement Protocol — server-side обогащение визитов (продвинутый)

Если у вас есть кейсы где веб-счётчик не видит данные (блокировщики рекламы, эквайринг без redirect назад на «спасибо за заказ», server-side events) — Метрика поддерживает Measurement Protocol: отправка событий напрямую с вашего сервера в mc.yandex.ru/collect по HTTP.

Что можно отправить:

Как включить:

  1. В Метрике → Настройки → Безопасность и использование данных → включите опцию «Measurement Protocol». Будет сгенерирован OAuth-токен (до 5 токенов на счётчик).
  2. На своём сервере запомните ClientID пользователя (берётся через ym(N, 'getClientID', cb) во время визита и сохраняется в БД для последующей отправки).
  3. Отправляйте POST/GET-запросы на https://mc.yandex.ru/collect?tid=<counter_id>&cid=<clientID>&... с авторизационным токеном. Данные появятся в Метрике через ~20 минут.
Ограничения:

Подробности — официальная документация 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 — околонулевой эффект, но создаёт сложные несостыковки в окупаемости. Не включайте без понимания зачем.
Важно — это не окно для backfill: модель атрибуции даёт окно истории визитов (90 или 180 дней). А окно офлайн-данных Метрики — отдельное, 21 день: заказ из МС привяжется к визиту только если визит был не более 21 дня назад (см. секцию 7. ClientID). Это разные сущности.

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. Решение проблем

Заказы не передаются в Метрику

  1. Проверьте раздел «Аналитика» → «Журнал выгрузок». Если статусы «PASSED» — данные передаются, ищите в Метрике через сутки (агрегаты обновляются с задержкой).
  2. Если статусы «FAILED» — обычно причина в неподтверждённой OAuth-сессии Метрики. В разделе «Настройки» нажмите «Переподключить».
  3. Если журнал пустой — проверьте что webhook-и зарегистрированы (это происходит автоматически при установке).

Окупаемость = 0 (нет данных)

  1. Подождите 1 час после подключения рекламного кабинета — нужна первая синхронизация расходов.
  2. Проверьте что в Метрике есть UTM-метки заказов — без них невозможно сопоставить заказ с кампанией.
  3. Убедитесь что номера заказов в МС попадают в Метрику как purchaseID при срабатывании цели «покупка» на сайте.
Если часть заказов приходит с маркетплейсов (Wildberries, Ozon, Яндекс Маркет): окупаемость по ним всегда будет 0 — покупатель был на странице маркетплейса, а не на вашем сайте, поэтому ClientID Метрики для таких заказов нет в принципе. Это ожидаемое поведение. Решение корректно работает только с заказами, где клиент взаимодействовал с вашим сайтом. Отфильтруйте маркетплейс-канал продаж в МС (Настройки → Фильтры по каналам), чтобы исключить их из расчёта окупаемости.

Маржа = выручке (закупочная цена не учитывается)

В МС должны быть проведены приёмки товаров с указанной закупочной ценой — себестоимость рассчитывается по методу FIFO от реальных партий приёмок (так же как в нативном МС-отчёте «Прибыль»). Поле «Закупочная цена» в карточке товара само по себе на расчёт не влияет (это справочное значение для подстановки при создании Приёмки). Если у товара никогда не было приёмок — себестоимость = 0, и маржа = выручке. Решение: создайте Приёмку с фактическими закупочными ценами; следующая синхронизация подтянет реальный COGS.

Хочу отключить решение

В разделе «Настройки» → раскройте карточку Яндекс-аккаунта → удалите подключение Метрики (или отключите Промостраницы внутри блока «Расходы рекламы»). Webhook-и в МС остановятся автоматически. Удаление приложения через интерфейс МС не требуется.

10. Тарифы и оплата

Решение предоставляется по подписке через биллинг МойСклад. После 7-дневного пробного периода оплата производится ежемесячно. Скидки за длительные периоды — на странице решения в каталоге МойСклад.

ТарифЦена/месСчётчиковЧто главное
Старт2 990 ₽1Обогащение МС-карточек в реальном времени + 5 целей + мультивалютность (RU/KZ/AE/BY/UZ) + окупаемость рекламы (выручка ÷ расход) + детализация источников + история 90 дней.
Бизнес5 990 ₽до 3Полная аналитика + окупаемость с учётом маржи (прибыль на рубль рекламы) + кастомные B2B-цели + Аудитории ретаргетинга + Промостраницы + история 365 дней.
Премиум24 990 ₽до 10API на чтение + кастомные доработки (через support@etokruto.ru) + история 720 дней (2 года) + приоритетная Email-поддержка. Для холдингов.

Подробное описание и оплата — на странице решения в каталоге МойСклад.

11. Поддержка

Время ответа на запросы: до 48 часов в рабочие дни (для тарифов «Старт» и «Бизнес»), до 24 часов («Премиум»).