Яндекс.Директ

ClientID и yclid: как заявка связывается с рекламой

26 September 2026 · 6 мин чтения
ClientID и yclid: как заявка связывается с рекламой

Вся история с офлайн-конверсиями держится на одном: чтобы вернуть сделку в рекламу, нужно точно знать, к какому визиту она относится. Не «примерно к тому дню», а к конкретному заходу конкретного человека. За эту связь отвечают два идентификатора — ClientID и yclid. Разберу, чем они отличаются и почему их нельзя путать.

Тема кажется технической, но без неё офлайн-конверсии просто не работают: заявка без идентификатора никуда не привяжется, и Директ её не увидит. Если вы ещё не читали общий разбор, начните с руководства по офлайн-конверсиям в Яндекс.Директ — там картина целиком.

yclid — метка клика по рекламе

yclid (Yandex Click ID) — это метка, которую Директ добавляет к ссылке объявления. Человек кликнул по рекламе — в адресе появился длинный параметр yclid. Это самый точный способ сказать «этот визит пришёл вот с этого клика по вот этому объявлению».

Но у yclid есть два ограничения. Первое: он появляется только у переходов с рекламы. Пришёл человек из поиска, из закладок, по прямой ссылке — yclid нет. Второе: чтобы Метрика нашла визит по yclid, счётчик должен быть связан с Директом. Если связки нет, метка есть, а привязки не будет. У меня однажды именно на этом заявка не привязалась — yclid был, а связка счётчика с Директом настроена не до конца.

ClientID — идентификатор Метрики

ClientID — это собственный идентификатор Метрики. Счётчик присваивает его браузеру при первом заходе и хранит в куке _ym_uid. По сути это «кто вы для Метрики». Он есть у любого визита — рекламного, органического, прямого, — потому что его ставит сам счётчик, а не реклама.

Отсюда и его сила: ClientID не зависит от источника. Даже если человек пришёл не с рекламы, а вы всё равно хотите отдать по нему конверсию, ClientID это позволит. Это тот же идентификатор, который вы видите в отчётах Метрики по пользователям.

Что выбрать при выгрузке: ClientID важнее

Когда вы отдаёте офлайн-конверсию, у заявки может быть и то, и другое. Какой идентификатор ставить в файл выгрузки? Моё правило, проверенное на практике: сначала ClientID, и только если его нет — yclid.

Логика такая. ClientID — это собственный идентификатор Метрики, она знает его наверняка. yclid же требует, чтобы счётчик нашёл визит по метке клика, а это работает не всегда. Поэтому ClientID даёт больше привязок. yclid остаётся страховкой на случай, когда ClientID у заявки почему-то пустой.

Практика: у меня был проект, где ClientID стоял всего у одной заявки из двадцати одной, и выгрузка возвращала ошибку «не найдены идентификаторы». Оказалось, идентификатор просто не успевал попасть в заявку.

Почему ClientID «не успевает» в заявку

Самая частая поломка — идентификатор уходит позже, чем событие. запрос getClientID к счётчику отвечает асинхронно: счётчик подумает и вернёт значение через долю секунды. А человек с объявления жмёт на телефон через две-три секунды после загрузки — и клик-заявка успевает уйти раньше, чем счётчик отдал ClientID. В итоге заявка есть, а идентификатора в ней нет.

Как я это лечу:

Ещё одна тонкость: ClientID живёт в браузере и относится к посетителю, а не к одному заходу. Поэтому если человек вернётся на сайт снова, старая заявка той же сессии может «дозаправиться» идентификатором. Это нормально и играет в плюс.

Как это связано со звонками

Отдельная ценность идентификаторов — в звонках. Когда человек кликает по номеру на сайте, ClientID уходит на сервер вместе с событием клика. Дальше звонок с рабочего телефона ловит приложение, и клик со звонком склеиваются в одну заявку. У этой заявки уже есть ClientID из клика — значит, звонок, дошедший до сделки, можно вернуть в Директ.

Именно так у меня в Пробите звонок перестаёт быть «тёмной» конверсией: он несёт метки визита и идентификатор, а без подменных номеров. Про саму привязку звонка к визиту я подробнее пишу в статье о том, как привязать звонок к рекламному визиту.

Событие — это не то же, что визит

Ещё одна вещь, которую полезно держать в голове, когда разбираешься с идентификаторами. ClientID относится к браузеру и живёт долго — это скорее «кто вы вообще», чем «этот конкретный заход». Один и тот же человек может зайти сегодня с рекламы, завтра из закладок, послезавтра из поиска, и ClientID у него будет один.

Поэтому цепочку событий одного идентификатора нельзя считать одним визитом. На визиты её режут по паузам: события подряд без перерыва дольше получаса — это один визит, дальше начинается следующий. Для привязки конверсии это важно: вы цепляете сделку не за «человека вообще», а за конкретный визит с его метками. Если в этом визите был yclid — отлично, конверсия уйдёт по клику; если нет — выручает ClientID.

Отсюда же практический вывод: yclid стоит хранить не только в заявке, но и в событиях визита. Тогда, даже если у самой заявки метка потерялась, её можно подставить из события того же захода. Я так и делаю — дублирую метки, потому что «одно место хранения» однажды обязательно окажется пустым в самый неподходящий момент.

Как проверить, что привязка работает

Не полагайтесь на «вроде настроил». Вот что я проверяю на живом сайте:

  1. Захожу на сайт с рекламного объявления, смотрю, что в адресе появился yclid.
  2. Смотрю, что первое же событие ушло на сервер с непустым ClientID — а не через пару секунд.
  3. Кликаю по номеру телефона и проверяю, что клик-заявка несёт и ClientID, и метки визита.
  4. Через день сверяю в счётчике, что выгруженные конверсии действительно привязались, а не просто «файл принят».

Если на втором шаге ClientID пустой — почти наверняка событие уходит раньше, чем счётчик отдал идентификатор. Лечится это чтением куки и досылкой, о которых я писал выше.

Короткий итог

ClientID — универсальный идентификатор Метрики, он есть у всех и знается наверняка. yclid — точная метка клика по рекламе, но только у рекламных визитов и только при связке с Директом. При выгрузке ставьте ClientID первым, yclid — запасным. И следите, чтобы идентификатор реально попадал в заявку: асинхронность счётчика — главная причина «непривязанных» конверсий. Дальше можно спокойно переходить к настройке самой выгрузки.

Частые вопросы

Чем ClientID отличается от yclid?

ClientID — собственный идентификатор Метрики, он есть у любого визита. yclid — метка клика по рекламе Директа, она появляется только у переходов с объявлений и работает при связке счётчика с Директом.

Что выбрать при выгрузке конверсии?

Сначала ClientID — Метрика знает его наверняка. yclid берётся, когда ClientID нет. Так привязывается больше конверсий.

Где взять ClientID пользователя?

Его можно взять сразу из куки _ym_uid, которую ставит счётчик, а затем уточнить через ym('getClientID'). Ответ приходит асинхронно, поэтому идентификатор стоит кешировать и досылать.

Почему заявка не привязалась к визиту?

Чаще всего у неё пустой идентификатор: событие ушло раньше, чем счётчик успел отдать ClientID. Либо у визита нет yclid, а счётчик не связан с Директом, и по клику Метрика визит не находит.

Попробовать Пробит бесплатно 30 дней →