Почему дата первого визита не равна метке ClientID в Яндекс.Метрике?

11 мая, 2023

Почему дата первого визита не равна метке ClientID в отчете Яндекс.Метрике? Такой вопрос я все чаще и чаще стал слышать от своей аудитории и слушателей онлайн-курсов по мере того, как они углублялись в тонкости и нюансы технического маркетинга. Но на него у меня не было ответа. И тогда мне стало самому интересно разобраться в том, как Яндекс.Метрика отображает данные в своих отчетах. И вот что из этого получилось.

Чтобы понять, о чем будет идти речь далее, я предлагаю вам обратиться немного к истории и смежным темам. Итак, наверняка вы знаете, что одной из ключевых характеристик при сборе данных и отслеживании действий, совершаемых конкретным посетителем вашего сайта, является его уникальный идентификатор пользователя (он же ClientID).

ClientID (client id, cid, уникальный идентификатор пользователя) - это метка, состоящая из случайного числа и даты первого посещения пользователем сайта в Unix формате, которая сохраняется в основном файле cookie (для Google Analytics - _ga, для Яндекс.Метрики - _ym_uid) в течение определенного периода времени. Она создается сразу же после того, как посетитель впервые зайдет к вам на сайт, то есть когда Яндекс.Метрика зафиксирует первый визит пользователя.

Примеры ClientID:

  • _ga=GA1.2.619217801.1551898268 (Google Analytics);
  • _ym_uid=1551977723718998723 (Яндекс.Метрика);

ClientID в Яндекс.Метрике привязывается к браузеру и устройству пользователя. Если вы заходили на свой сайт с одного и того же устройства, но с двух разных браузеров (например, Google Chrome и Opera), в Яндекс.Метрике для вас будет зафиксировано два разных ClientID. Справедливо и обратный вариант, при котором вы посещаете сайт с одного и того же браузера (например, Google Chrome), но с двух разных устройств - в этом случае в Яндекс.Метрике так же будет зафиксировано два разных ClientID.

Узнать свой уникальный идентификатор для Яндекс.Метрики очень просто - перейдите на сайт, откройте консоль разработчика (F12 в Google Chrome) и вкладку Console. Введите команду document.cookie и нажмите Enter. Если у вас на сайте размещен счетчик Яндекс.Метрики и при этом нет никаких плагинов, сторонних решений и специальных настроек в браузере, запрещающих ваше отслеживание для Метрики или блокирующих трекер, то вы увидите файл cookie _ym_uid с определенным значением:

Пример уникального идентификатора пользователя для моего сайта

Например, для моего сайта osipenkov.ru значение в метке _ym_uid - 1656397803203381660. Найти его можно и другим способом. Для этого в консоли разработчика перейдите на вкладку Application - Cookies, и там выберете домен своего сайта. В фильтре над таблицей вы можете конкретизировать свой поиск, задав метку _ym_uid. В списке файлов cookie останутся только те, которые будут удовлетворять заданному критерию:

Файл cookie (_ym_uid) на вкладке Application

Если в таблице несколько записей с _ym_uid, то вам нужно смотреть на ту метку, напротив которой в столбце Domain будет отображаться ваш домен. Это основные файлы cookie (first-party cookie). Для Яндекс.Метрики _ym_uid - это один из файлов cookie, который позволяет различать посетителей в вашем счетчике. Срок жизни этой метки - 1 год. Если посетитель периодически посещает ваш сайт, то время жизни файла cookie автоматически продлевается. Но если в течение года пользователь ни разу больше не посетил сайт, то метка _ym_uid из его браузера будет удалена безвозвратно, а при повторном заходе ему будет присвоен новый уникальный идентификатор.

Правда уже сейчас некоторые браузеры самостоятельно ограничивают срок жизни файлов cookie. Например, Safari, Firefox, Brave и другие браузеры имеют свои системы интеллектуального отслеживания и внутренние настройки, которые могут устанавливать собственные ограничения на срок жизни cookie, вплоть до одной недели, поэтому установленный по умолчанию срок жизни _ym_uid в 12 месяцев является, своего рода, формальностью. Кому интересно, вы можете посмотреть отрывок из моей лекции по веб-аналитике по теме Post-Cookie World и мир без файлов cookie:

Именно поэтому Яндекс.Метрика сохраняет _ym_uid еще и в локальное хранилище Local Storage, который позволяет хранить данные для каждого домена в течение неограниченного времени (после закрытия вкладки браузера, самого браузера, перезагрузки компьютера) или пока пользователь самостоятельно не удалит данные:

Файл cookie _ym_uid в локальном хранилище Local Storage

Идентификатор ClientID так же используется для передачи параметров посетителей, для отслеживания офлайн-конверсий и играет важную роль при настройке сквозной аналитики. Однако нас больше сейчас интересует не срок жизни данного файла cookie, а его конструкция - из чего _ym_uid состоит.

Конструкция _ym_uid

Скопировав идентификатор, выделите из него только первые 10 цифр. В моем примере - 1656397803. Это значение - дата вашего первого посещения в Unix формате, то есть количество секунд, которое прошло с 1 января 1970 года.

Чтобы преобразовать это значение в понятную дату, перейдите на любой сайт конвертера времени Unix Time Stamp. Например, unixtimestamp.com . В поле Enter a Timestamp вставьте 10-значное число и нажмите кнопку Convert. Вы получите удобочитаемую дату вашего первого посещения:

1656397803 - это 28 июня 2022 года

Для моего примера: 1656397803 - это 28 июня 2022 года. Таким образом, первая часть файла куки _ym_uid, состоящая из 10 цифр, это реальная дата первого посещения пользователем сайта, а вторая часть - рандомно сгенерированное число. И комбинация из этих двух составляющих в результате дает уникальный идентификатор пользователя, который в Яндекс.Метрике никогда не повторяется.

Таким образом, уникальный идентификатор пользователя (ClientID) для Яндекс.Метрики - это метка, состоящая из случайного числа и даты первого посещения пользователем сайта в Unix формате (количество секунд с 1 января 1970 года 00:00:00 UTC), которая сохраняется в основном файле cookie (_ym_uid). Она создается сразу же после того, как посетитель впервые зайдет к вам на сайт.

У Яндекс.Метрики есть еще один файл cookie - _ym_d, который как раз хранит дату первого визита посетителя на сайт, то есть первую часть от _ym_uid без сгенерированного числа на конце:

Файл cookie _ym_d

Зная ClientID конкретного посетителя (по крайней мере, свой точно!), вы можете посмотреть историю его заходов и все действия, которые он совершал на вашем сайте. Для этого перейдите в интерфейс Яндекс.Метрики, откройте раздел Посетители и клиенты (или просто Посетители), а затем задайте условие Люди, у которых - ClientID, вставив полное значение уникального идентификатора:

Посетители и клиенты - Поиск по ClientID

Отфильтровав данные по ClientID, вы сможете найти все визиты конкретного пользователя и его действия:

Фильтр по ClientID

Если вы таким способом нашли свой профиль, то вы можете сравнить дату первого посещения с той датой, которую вам показал конвертер Unix Time Stamp. Для моего ClientID дата первого посещения была 28 июня 2022 года. Эта же дата отображается в левой части карточки профиля в строке Первый визит:

Карточка профиля пользователя

И вот так будет практически всегда. Но есть нюанс, про который меня не один раз спрашивали мои подписчики. Как может быть такое, что взяв первые 10 цифр из ClientID и преобразовав их в дату через Unix Time Stamp Converter, полученное значение будет отличаться от даты первого визита? Нижеприведенный пример исчерпывающе показывает такое поведение:

Пример с разными значениями даты первого визита и значения в куки

Карточка пользователя имеет идентификатор ClientID 1627481318506746514, первые 10 цифр которого (1627481318) составляют дату 28 июля 2021 года:

1627481318 - 28 июля 2021 года

А дата первого визита в этой же карточке - 27 октября 2021 года, то есть отличается на 3 месяца. Как такое возможно?

На самом деле, вопрос довольно сложный, поскольку Яндекс официально не раскрывает алгоритмы определения пользователей внутри Метрики. Но кое-какую информацию мне все же удалось узнать. Во-первых, чтобы понять, как Яндекс.Метрика различает пользователей, необходимо обратиться к официальной справке Яндекса и временным файлам, устанавливаемых Яндекс Метрикой. Нас интересуют все, что связано с посетителями и их распознаванием.

Это следующие файлы cookie:

  • _ym_uid

Файл cookie _ym_uid

  • _ym_d

Файл cookie _ym_d

  • i

Файл cookie i

  • yandexuid

Файл cookie yandexuid

  • yuidss

Файл cookie yuidss

Еще есть yandex_login, в котором хранится информация о вашем логине Яндекс, где вы авторизованы в данный момент:

Файл cookie yandex_login

А также вспомогательные файлы cookie:

  • yabs-sid - идентификатор визита;
  • ymex - время создания идентификаторов и их альтернативные значения;
  • usst - вспомогательная информация для синхронизации идентификаторов посетителей между разными доменами Яндекса.

В локальном хранилище Local Storage тоже хранятся некоторые файлы, позволяющие различать пользователей:

  • _ym<номер вашего счетчика Яндекс.Метрики>_lsid

Локальное хранилище _ym<номер вашего счетчика Яндекс.Метрики>_lsid

  • zz и, вероятно, _ym_zzlc

Локальное хранилище _ym_zzlc

Во всех этих файлах зашифрована определенная информация, помогающая Яндексу различать пользователей. Таким образом, все они так или иначе влияют на возможность различать посетителей внутри Яндекс.Метрики. О некоторых файлах мы знаем больше информации, о некоторых меньше. На основе всех этих внутренних идентификаторов Яндекс.Метрика может распознать данные из нескольких профилей с разными уникальными идентификаторами и объединять их в одно целое.

Во-вторых, Яндекс использует технологию Крипта, позволяющую выявить важные для рекламодателей характеристики пользователей, например их возраст, доход и интересы, район города, в котором они живут, а также «склеить» данные пользователя из различных идентификаторов браузеров и устройств в единый профиль.

Пользователь для Крипты — это не конкретный человек с именем и фамилией, а набор идентификаторов. Все дело в том, что каждое устройство и браузер, которым человек пользуется для выхода в сеть, имеет свой уникальный идентификатор — файл cookie, который сайты используют, чтобы узнавать пользователя и, например, не спрашивать каждый раз пароль для входа. Свои идентификаторы есть и у приложений — если приложение (например, Карты или Навигатор) отправляет данные на сервера Яндекса, информацию из его идентификатора Крипта тоже учитывает.

Крипта умеет определять, что все эти идентификаторы принадлежат одному пользователю. В результате их «склейки» можно получить более полный набор идентификаторов и распределять рекламные сообщения между устройствами и приложениями пользователя. Это происходит, в том числе, и в Яндекс.Метрике.

В-третьих, в отчете Посетители и клиенты, как правило, отображается последний по времени визитов ClientID пользователя, а дата первого визита берется исходя из знаний нескольких ClientID у посетителя. Яндекс хранит все идентификаторы пользователей на своих серверах, во внутренних базах данных, даже те, которые были удалены или очищены системой автоматически. И у одного посетителя таких ClientID может быть несколько. Именно поэтому вы можете видеть расхождения в дате первого визита и метке этого отчета.

И, в-четвертых, что самое интересное - в Метрике бывают ситуации, как в случае с примером выше, когда дата первого визита в карточке пользователя написана позже, чем создан сам Client ID.

  • Дата первого визита - 27 октября 2021 года;
  • Файл cookie (Client ID) - 28 июля 2021 года.

Это подтвердили и в самом Яндексе. Такое формирование ClientID внутри профиля пользователя может быть не правилом, а исключением из правил, поэтому на него лучше не опираться. В некоторых случаях могут быть такие несостыковки и это нормально.

Не менее интересная ситуация возникает тогда, когда в разделе Посетители и клиенты по фильтрации ClientID вы можете видеть две разные карточки пользователя с одинаковым идентификатором пользователя. Подробнее о том, почему так происходит, читайте в этой статье.

Получайте бесплатные уроки и фишки

По контекстной, таргетированной рекламе и аналитике