Как пометить конкретного посетителя в Google Analytics и Яндекс Метрике через Google Tag Manager

Google Analytics
Google Tag Manager
Яндекс Метрика

С ростом интереса к данным о посетителях рано или поздно у владельца сайта возникает желание отслеживать действия конкретного посетителя.

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

Принцип метода заключается в использовании уникального ключа или идентификатора посетителя, который необходимо зафиксировать вместе с другими данными. Для настройки будем использовать Google Tag Manager, чтобы исключить зависимость от разработчиков сайта.

Начнем с создания пользовательского параметра в Google Analytics, который будет одержать значение уникального ключа (идентификатора) пользователя. Переходим в режим администратора в Google Analytics и выбираем соответствующий раздел:

Настройки пользовательского параметра в Google Analytics

Настройки пользовательского параметра в Google Analytics

Для Яндекс Метрики создавать предварительно ничего не нужно, т.к. будут использованы параметры визитов.

В открывшемся окне нажимаем кнопку + Специальный параметр. Заполняем форму по примеру ниже:

Настрйоки пользовательского параметра

Настрйоки пользовательского параметра

Обратите внимание на область действия, она должна быть установлена как Сеанс.

Теперь можно перейти непосредственно к настройке в Google Tag Manager. Первым делом нужно создать тег типа Пользовательский HTML, который должен выполнять следующие действия:

  • проверять наличие ключа в cookie пользователя;
  • если ключ не найден устанавливать такой ключ или уникальный идентификатор.

Какое значение использовать в качестве ключа? Это решать вам, вариантов очень много. Это может быть уникальный номер клиента во внутренней системе учета, некоторый ключ, который генерирует сайт на серверной стороне и т.п.

Поскольку я стараюсь все что мне необходимо выполнять в Google Tag Manager, то эту задачу я также возложил на него. Генерируемое мной значение ключа я записываю в cookie с именем prometriki_cid.

Итак, при загрузке страницы мне необходимо проверить наличие cookie с именем prometriki_cid и если ее нет, то сгенерировать значение ключа и записать его в cookie с этим именем. Данный функционал реализован мной в теге:

Тег работы с cookie и генерации ключа

Тег работы с cookie и генерации ключа

Полный код тега я не привожу, т.к. механизм работы с cookie и генерацию ключа вы можете реализовать различными средствами. Заключительная часть тега выглядит (схематично) так:

Фрагмент тега

Фрагмент тега

На следующем шаге, нужно создать переменную, которая будет возвращать значение ключа prometriki_cid.

Создаем переменную Google Tag Manager типа Основной файл cookie, название cookie указываем как prometriki_cid:

Переменная для получения значения из cookie

Переменная для получения значения из cookie

Сохраняем созданную переменную.

Следующий шаг в настройке Google Tag Manager, это внесение изменений в настройки тега типа Google Analytics. Перейдите к тегу соответствующего типа и откройте его настройки. Нас интересует следующий блок:

Настройки параметра Google Analytics в Google Tag Manager

Настройки параметра Google Analytics в Google Tag Manager

В поле Индекс необходимо указать индекс вашего параметра (узнать его можно в панели управления Google Analytics, подробнее здесь), в поле Значение параметра указываем переменную, созданную ранее. Мои настройки выглядят следующим образом:

Передача данных о пользователе

Передача данных о пользователе

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

Изменение настроек тега Яндекс Метрики

Изменение настроек тега Яндекс Метрики

Сохраните изменения. Следующий этап очень важен, от него во многом зависит работоспособность предложенного решения.

В самом начале мы создали тег, который отвечает за установку cookie и генерацию уникального ключа для посетителя, но у него мы не задали триггеры активации, пока он у нас “без дела”. Исправим это.

Перейдите к настройкам тега Google Analytics, который фиксирует просмотры страниц и откройте блок настроек, который показан на изображении ниже:

Расширенные настройки тега Google Analytics

Расширенные настройки тега Google Analytics

затем необходимо выбрать настройку активации тегов:

Активация тегов в Google Tag Manager

Активация тегов в Google Tag Manager

Настройки задайте согласно изображению:

Пример настройки активации тегов в Google Tag Manager

Пример настройки активации тегов в Google Tag Manager

JS Cookie – Client ID это название моего тега у вас может быть другое.

В чем заключается данная настройка? У нас есть тег Google Analytics, который фиксирует просмотр страницы и передает дополнительный параметр содержащий уникальный ключ клиента. Работа с ключом выполняется в теге JS Cookie – Client ID (в моем случае). Если я укажу триггер Все страницы у него, то он может сработать позже тега Google Analytics. То, что показано на скриншоте гарантирует выполнение тега JS Cookie – Client ID до Google Analytics, а значит и наличие в момент фиксации всех необходимых нам данных.

Аналогичная настройка должны быть и тега с кодом Яндекс Метрики.

Для примера приведу как выглядит блок с триггерами активации в тега JS Cookie – Client ID:

Тег JS Cookie - Client ID

Тег JS Cookie – Client ID

После этих настроек необходимо выполнить отладку и опубликовать контейнер. В отчетах появится следующая информация:

Пометка посетителей для Яндекс Метрики

Пометка посетителей для Яндекс Метрики

В Google Analytics:

Пометка посетителей для Google Analytics

Пометка посетителей для Google Analytics

На этом настройка может считаться завершенной. Если тема отслеживания конкретного пользователя интересна, я могу продолжить ее развитие. Жду от вас обратной связи в комментариях.

Не забудьте поделиться материалом с друзьями!

Еженедельная рассылка кейсов!
Обсуждение
  1. Наталия
    21.01.2016 at 12:45

    Спасибо! как и всегда полезная статья!

    Тема очень интересная и актуальная.
    Подскажите, о каких способах идет речь (не для продвинутых программеров)? Было бы интересно и полезно посмотреть на тот тип кода, которым пользуетесь вы, если это не конфиденциальная информация.

    “Полный код тега я не привожу, т.к. механизм работы с cookie и генерацию ключа вы можете реализовать различными средствами.”

    Заранее благодарю!

    • Ответ автора
      22.01.2016 at 09:18

      Наталия, у меня есть материал про работу с cookie в Google Tag Manager, его можно взять за основу для этого тега

  2. Константин
    21.01.2016 at 14:38

    Спасибо, Иван. Очень полезная статья, как в прочим и всегда.
    Присоединяюсь к предыдущему комментарию(не полный код тега, хотя пишите о не зависимости от разработчиков).
    И вопрос: разве не правильнее будет забирать cid(который назначает пользователю GA при посещении сайта) в созданную пользовательскую переменную. Потом выгружать отчеты, например, через API в которых будут переменные cid. Зачем создавать свой дополнительный анонимный идентификатор так же работающий через cookie?

    • Ответ автора
      22.01.2016 at 09:20

      Константин, я не привожу готовый код, т.к. простое копирование и вставка к себе на сайт не всегда дают ожидаемого эффекта. По поводу cid я подготовлю отдельный материал

  3. Иван Ярославцев
    21.01.2016 at 16:06

    Делали тоже подобное но для ID пользователя\ID гостя в интернет-магазине. Но практического применения нашли мало. ПОдскажите как это можно использовать?

    • Ответ автора
      22.01.2016 at 09:21

      Ярослав, сопоставление данных двух систем, например поисковых запросов, которые в Яндекс Метрике открыты

      • Владимир
        04.02.2016 at 20:01

        А можно ли импортировать поисковые запросы из Метрики в Аналитикс с помощью UserID?
        Если да, то как?

      • Ответ автора
        05.02.2016 at 09:22

        Владимир, Вы можете самостоятельно реализовать выгрузку и сопоставление данных из двух систем

  4. Александр
    21.01.2016 at 16:17

    Спасибо Иван за полезную статью!
    Подскажите, реально ли каким либо образом JS скриптом вытаскивать ID социальных сетей?
    Просто далеко не у всех сайтов есть форма регистрации, и отслеживание клиента происходит не дальше его браузера на ПК. Если выдёргивать ID социальных сетей либо других распространенных сервисов, то можно уже проводить кроссдевайсную аналитику.

    • Ответ автора
      22.01.2016 at 09:22

      Александр, приведите пример страницы на которой есть такой идентификатор. Напишите мне на почту

  5. Andrey
    21.01.2016 at 17:48

    Спасибо за статью. Интересует практическое применение.
    Чем в данной ситуации не угодил client id в GA? Ведь принцип работы тот же самый? Фактически мы просто придумали свою переменную и записали ее в куки сократив тем самым количество полезных переменных)
    Проще говоря, в данной ситуации этот ID ничем не отличается от client id GA.
    Для авторизованной части сайта есть user id…

    • Ответ автора
      22.01.2016 at 09:24

      Андрей, как уникальный ключ ни чем не отличается, но если Вы реализовывали подобную схему на основе cid, то вероятно заметили одну особенность в Яндекс Метрике

      • Andrey
        22.01.2016 at 11:13

        Иван, спасибо за пояснения.

      • Владимир
        22.01.2016 at 16:30

        Иван, о какой особенности Яндекс.Метрики идет речь? Хотел задать тот же вопрос, что и Андрей – не понимаю, для чего в данной ситуации нужен другой ID. Объясните, пожалуйста?

  6. Александр
    22.01.2016 at 01:53

    хорошая статья! тема очень интересна, ждем продолжения (в частности, как можно эти данные применять на практике)!

  7. Александр
    04.02.2016 at 16:19

    А не достаточно было бы переносить id метрики в GA и наоборот для сопоставления данных? Это бы не нарушало никаких условий.

    • Ответ автора
      04.02.2016 at 16:57

      Александр, приведите, пожалуйста, пример ID посетителя в Метрике, а также каким образом его можно получить в отчетах или выгрузке по API?

      • Александр
        05.02.2016 at 15:56

        Иван, кука _ym_uid. Передача пары ид из метрики и аналитикса в системы по-идее решает задачу без нарушения условий использования счетчиков.

      • Ответ автора
        06.02.2016 at 23:47

        Александр, спасибо за информацию

  8. Михаил
    16.03.2016 at 15:36

    по данному параметру можно ли будет узнать информацию, что например посетитель 2 февраля пришёл по рекламе, а 3 февраля с поиска или закладки

    • Ответ автора
      16.03.2016 at 16:49

      Сделав выгрузку по источнику за каждый день и сопоставив данные

      • Михаил
        17.03.2016 at 10:16

        сделал по Вашей инструкции , данные в метрику пошли, но они все – undefined

  9. Сергей Смирнов
    09.04.2016 at 00:13

    Иван, спасибо за инструкцию.
    Можете проконсультировать по конкретному кейсу?

    Есть авторизованные пользователи – Коля, Петя, Вася
    Есть товары на сайте – Мясо, Пиво, Молоко

    ID пользователей в Метрику мы передавать умеем.
    Названия товаров – Заголовки страниц.

    Как в новой метрике построить такой отчет:

    Просмотры товаров пользователями:

    Коля
    – Мясо … 3
    – Пиво … 2
    Петя
    – Мясо … 6
    – Молоко … 2
    Вася
    – Мясо … 1
    – Пиво … 150
    – Молоко … 2

    Я не нашел способа добавить в группировки Параметры визитов и Заголовки страниц.
    Буду благодарен за совет.

    • Ответ автора
      11.04.2016 at 14:56

      Сергей, попробуйте выгружать по API, затем группировать по cid пользователя

  10. Максим
    08.06.2016 at 12:28

    Иван, привязать список этот к ремаркетингу как-то можно ?
    Задача передать событие по конкретному пользователю client id в GA – далее увидеть его в метрике – настроить рекламу на данный список посетителей. Реально сделать такое ?

    • Ответ автора
      13.06.2016 at 12:45

      Максим, для интересующих пользователей можно генерировать события, по которым построить нужный список

  11. Виктор
    28.09.2016 at 20:51

    Иван, добрый день!

    Подскажите, пожалуйста, ответ на такую задачу:
    Есть сайт объявлений. Необходимо владельцу объявления показать максимальную статистику посещений его страницы, прямо у него на странице объявления. Естественно не предоставляя доступ к данным всего сайта (используя JSON key https://ga-dev-tools.appspot.com/embed-api/server-side-authorization/ ). Но проблема в том, что не понятно как создать отчет для конкретной страницы. В описании создании такого отчета https://ga-dev-tools.appspot.com/embed-api/basic-dashboard/ есть код его запроса:

    var dataChart = new gapi.analytics.googleCharts.DataChart({
    query: {
    metrics: ‘ga:sessions’,
    dimensions: ‘ga:date’,
    ‘start-date’: ’30daysAgo’,
    ‘end-date’: ‘yesterday’

    Какой брать запрос metrics и dimensions допустим понятно, а вот как настроить фильтр для конкретной страницы нет.
    Использование описания использования filters не помогло https://developers.google.com/analytics/devguides/reporting/core/v3/reference#filters

    Какой бы фильтр я не применял на странице https://ga-dev-tools.appspot.com/query-explorer/ он все время выдает ошибку:
    Ack! There was an error (400)
    Invalid value ‘ga:pagePath%3D/catalog/’ for filters parameter.

    Подскажите как правильно создать запрос, если я хочу увидеть количество пользователей определенной страницы, допустим /catalog/
    Вот так не работает:
    dimensions=ga:pagePath
    metrics=ga:ga:users
    filters=ga:pagePath%3D/catalog/
    Вообще как бы фильтр не писал, все время ошибка

  12. Виктор
    28.09.2016 at 20:55

    Аналогично хотелось бы отфильтровать страницы, которые просматривал конкретный пользователь (увидеть, что посещал зарегистрированный пользователь, UCSERID которого мы передавали)
    Фильтр вида filters=ga:userID%3D%3D1 на странице https://ga-dev-tools.appspot.com/query-explorer/ тоже не работает

    • Ответ автора
      05.10.2016 at 22:55

      Виктор, воспользуйтесь сервисом для построения запросов и их проверки на корректность

  13. Дмитрий
    31.10.2016 at 01:47

    Иван, доброго дня.
    “Полный код тега я не привожу, т.к. механизм работы с cookie и генерацию ключа вы можете реализовать различными средствами.”
    Можно от вас получить конкретный код ?

    • Ответ автора
      31.10.2016 at 08:56

      Дмитрий, посмотрите материал про работу с cookie в Google Tag Manager

  14. Анатолий
    14.12.2016 at 12:41

    Здравствуйте. После реализации такой схемы передачи cid в пользовательский параметр, будет ли возможность создать отчёты по источникам переходов?

    • Анатолий
      14.12.2016 at 12:42

      Поясню. Имеется ввиду история источников переходов. Реклама – соц.сеть – поиск. и т.д.

    • Ответ автора
      19.12.2016 at 00:44

      Анатолий, на стандартные отчеты эта настройка не влияет

  15. Олег
    02.03.2017 at 15:51

    Спасибо за статью! Остался непонятным один вопрос: почему мы должны указать область действия для пользовательского параметра именно “сеанс”, а не “пользователь” (user) ? Ведь атрибутируем мы именно пользователя, а не его отдельный сеанс. Если мы атрибутируем пользователя – мы потом данные о его сеансах не сможем получить?

    • Ответ автора
      08.03.2017 at 21:05

      Олег, можно испольовать и уровень пользователя

  16. twil
    25.08.2017 at 15:05

    Материал очень полезен, но реализовать с ходу не получилось т.к. не понятно как сделан код с кукой в теге JS Cookie – Client ID. Уникальный ключ кт. записывается в куку генерируется из гугловского cid ? Или вы берете какой-то другой идентификатор?
    Вашу статью по работе с cookie в GTM http://prometriki.ru/ustanovka-i-chtenie-cookie-s-pomoshu-google-tag-manager/ читал, но всё равно есть вопросы (в частности, как записать в куку свой ключ, сформированный например на основе _ga cid).
    Иван, как можно с вами связаться? Хочу разобраться в этом вопросе полностью

    • Ответ автора
      05.09.2017 at 20:43

      Ключ получаем из Google Analytics, его не нужно генерировать и записывать. Получить можно несколькими вариантами: через JavaScript код – обратившись к трекеру, либо считать из куки _ga

Ваш комментарий