Как пометить конкретного посетителя в 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

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

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

Кейсы и инструкции по настройке в вашем ящике. Подпишитесь сейчас!

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

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

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

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

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

  2. Константин 21.01.2016 в 14:38 - Ответить

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

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

  3. Иван Ярославцев 21.01.2016 в 16:06 - Ответить

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      • Михаил 17.03.2016 в 10:16 -

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

  9. Сергей Смирнов 09.04.2016 в 00:13 - Ответить

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

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

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

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

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

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

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

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

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

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

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

  13. Предполагаю, что если фильтровать не по USERID, а создать пользовательскую переменную, как Вы писали здесь http://prometriki.ru/kak-pometit-konkretnogo-posetitely-v-google-analytics-i-yndeks-metrike-cherez-google-tag-manager/
    То тоже не сработает. Так как не получается с принципом работы фильтров разобраться.

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

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

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

Добавить комментарий для Михаил Отменить ответ

Current month ye@r day *