Курс Google Analytics → Что такое GA Measurement Protocol
Measurement Protocol (MP) — это базовый инструмент, используя который Google Analytics (GA) собирает информацию. То есть, это технология, которая используется для передачи информации о просмотрах страниц и других событий в GA.
Содержание
- Техническая сторона
- Обязательные параметры
- Передача взаимодействия в GA
- Параметры cid, uid, ni
- Measurement Protocol на практике
- Стандартный код отслеживания GA
- Интеграция с CRM
- Отслеживание транзакций
- Возврат или частичный возврат средств
- Оффлайн-точки продаж
- Открытие писем
- Дополнительные ресурсы
- Выводы
Техническая сторона
Протокол работает по HTTP, имеет единую точку входа: www.google-analytics.com/collect
Данные можно передавать POST- и GET-запросами.
Обязательные параметры
v — версия протокола на данный момент 1 (v=1).
tid — идентификатор вашего ресурса в GA.
cid — уникальный идентификатор пользователя (его либо проставляет в Cookie стандартный JS-код GA, либо нужно генерировать самостоятельно — ниже рассмотрим подробнее).
t — тип взаимодействия, например pageview/event (t=event).
То есть, запрос будет выглядеть так:
v=1&tid=UA-123456-1&cid=1482535147.1490885188&t=event
Т.к. мы выбрали тип взаимодействия Event, нужно добавить обязательные параметры, описывающие событие:
ec (event category) — категория события (ec=registration).
ea (event action) — действие события (ea=form).
v=1&tid=UA-123456-1&cid=1482535147.1490885188&t=event&ec=registration&ea=form
Передача события в GA
Можно отправить запрос одним из методов:
POST
User-Agent: user_agent_string // https://en.wikipedia.org/wiki/User_agent#Format POST /collect HTTP/1.1 Host: www.google-analytics.com v=1&tid=UA-123456-1&cid=1482535147.1490885188&t=event&ec=registration&ea=form
GET
Чтобы не возникло проблем с кешированием, рекомендуется последним параметром добавить z, c уникальным значением для каждого из запросов.
GET /collect?v=1&tid=UA-123456-1&cid=1482535147.1490885188&t=event&ec=registration&ea=form&z=12345 HTTP/1.1 Host: https://www.google-analytics.com User-Agent: user_agent_string
Сервис для проверки корректности отправляемых данных
Параметры cid, uid, ni
По этим параметрам нередко встречаются вопросы, поэтому рассмотрим подробнее.
cid
cid — client id, уникальный идентификатор клиентского приложения пользователя (например, веб-браузера), cid хранится в cookie _ga для конкретного домена.
В cookie _ga хранится что-то похожее на: GA1.2.602320690.1474476467
В параметр cid нужно передавать всё, что расположено после второй точки. То есть в данном случае:
&cid=602320690.1474476467
Кука _ga проставляется в момент, когда инициализируется Трекер гугл аналитики:
<script> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-12345678-1', 'auto'); // в этот момент проставляется кука ga('send', 'pageview'); // в этот момент отправляется взаимодействие Просмотр страницы в Google Analytics </script>
Параметр cid является обязательным для всех запросов в Measurement Protocol. Если у вас будет отложенная отправка событий в GA по MP — нужно сохранять cid пользователя на стороне бекенда.
А что, если cid нет
Примеры случаев:
1) вы ранее не сохраняли cid пользователей
2) у пользователя отключены куки или какие-то расширения браузера блокируют исполнение скрипта google analytics.
Так как параметр cid обязательный для отправки данных в GA, то в таких случаях нужно на стороне бекенда генерировать cid.
Мы генерируем cid таким образом:
$cookieId = rand(1000000000, 2147483647) . '.' . time();
Чем грозит самостоятельная генерация cid
Отправляемые данные не свяжутся с пользователем на стороне Google Analytics.
Но вы получите целостную картину по количеству событий. Потому что, если бы вы с бекенда не отправили информацию по Measurement Protocol, она бы вообще прошла мимо статистики.
uid
Уникальный идентификатор пользователя в вашей системе (например, на сайте). Параметр необходим для подключения функции User ID.
Это позволит вам создать отдельное представление со статистикой по всем залогиненным пользователям, где вы сможете отследить последовательность действий(просмотры, страниц, события, оплаты) по каждому из пользователей. Также будет доступен Cross Device отчет.
Подробнее о User ID: support.google.com/analytics/answer/3123662
Данным параметром мы можем сообщить GA, что данное взаимодействие выполнил конкретный пользователь. Параметр может принимать любое строковое значение, но нельзя передавать информацию, которая раскрывает личность пользователя (например, email или фамилию, имя).
Мы подключили User ID для всех залогиненных пользователей. Но прокинули uid не только в базовый параметр, но и продублировали его в Custom Dimension 1 (это позволило использовать сегменты в представлении User ID).
В основном JS-коде GA это делается так:
ga('create', 'UA-XXXXX-Y', 'auto', { userId: USER_ID, 'dimension1': USER_ID }); ga('send', 'pageview');
Через Google Tag Manager это можно делать более элегантно, но это тема отдельной статьи.
Для отправки запросов с бекенда делается добавлением параметров:
&uid=USER_ID&cd1=USER_ID
ni
Наличие параметра позволит не инициализировать новую сессию.
Если не использовать данный параметр, то при отложенных событиях, при отправке будет создаваться в GA новая сессия с пустыми параметрами (источник трафика уйдет в direct / none, устройства будут в (not set), география будет построена относительно IP вашего сервера). То есть, это будет сессия, которая не несет никакой ценности, накручивает счетчик статистики и ломает отчётность по источникам трафика.
Например, если это отложенное событие — изменение статуса сделки в CRM. Обычно оно происходит, когда у пользователя (который закреплен за этой сделкой) нет активной сессии на сайте. Поэтому без использования &ni=1 будет создаваться новая сессия.
В общем, для отложенных событий используйте &ni=1.
Measurement Protocol на практике
Стандартный код отслеживания GA
Даже самый стандартный JS код GA при исполнении использует Measurement Protocol. Давайте посмотрим, как это работает.
- Открываем окно Google Chrome с панелью Developer Tools (CTRL + Shift + I или F12).
- В адресную строку вводим habrahabr.ru.
- В панели для разработчиков нам интересна вкладка Network. Если вы сначала открыли панель для разработчиков, далее открыли сайт — в этой вкладке будет информация. Если другая последовательность, то вкладка будет пустая, нажмите F5, чтобы переоткрыть страницу.
- В строке Filter пишем www.google-analytics.com/collect
- Открываем подробности запроса.
Вы увидите похожую информацию:
Request URL:
https://www.google-analytics.com/collect?v=1&_v=j50&a=643761009&t=pageview&_s=1&dl=https%3A%2F%2Fhabrahabr.ru%2F&ul=en-us&de=UTF-8&dt=%D0%9B%D1%83%D1%87%D1%88%D0%B8%D0%B5%20%D0%BF%D1%83%D0%B1%D0%BB%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%B8%20%D0%B7%D0%B0%20%D1%81%D1%83%D1%82%D0%BA%D0%B8%20%2F%20%D0%A5%D0%B0%D0%B1%D1%80%D0%B0%D1%85%D0%B0%D0%B1%D1%80&sd=24-bit&sr=1920x1080&vp=1109x966&je=0&fl=25.0%20r0&_u=QCCAgEAB~&jid=1630561303&cid=774042187.1492148509&tid=UA-726094-1&cd1=guest&cd4=no&cd5=other&z=1998272259
Query String Parameters
v:1 _v:j50 a:643761009 t:pageview _s:1 dl:https://habrahabr.ru/ ul:en-us de:UTF-8 dt:Лучшие публикации за сутки / Хабрахабр sd:24-bit sr:1920x1080 vp:1109x966 je:0 fl:25.0 r0 _u:QCCAgEAB~ jid:1630561303 cid:774042187.1492148509 tid:UA-726094-1 cd1:guest cd4:no cd5:other z:1998272259
Что мы тут видим?
Ряд параметров, которые были отправлены в GA. Это стандартный Просмотр страницы. Описание каждого из параметров смотрите в официальной документации.
Интеграция с CRM
Мы столкнулись с ситуацией, что показатель Goal Conversion Rate не дает полноценную картину по качеству источников трафика.
Одна из целей на нашем сайте — Заявка на бесплатный вводный урок. Есть случаи, когда пользователь не понимает, о чём речь, но всё равно заполняет форму. Естественно, все заявки попадают в CRM и нагружают наш отдел продаж.
В GA любая успешно заполненная форма = конверсия, поэтому даже нецелевые заявки будут накручивать счётчик конверсий.
Чтобы более детально оценивать качество каждого из каналов трафика, мы решили ввести дополнительные параметры: Целевая заявка и Проведен вводный урок.
Эти оба параметра мы можем определить по статусу сделки в CRM.
Так как наша CRM при изменении статуса сделки умеет отправлять Webhook на наш сервер, мы настроили:
- Когда сделка переходит в статус Назначен вводный — отправляем событие ”Целевая заявка” (например, ec=Quality&ea=Good_lead)
- Когда сделка переходит в статус Проведен вводный — отправляем событие “Проведен вводный” (например, ec=Quality&ea=1Lesson_done)
По каждому из событий настроили отслеживание целей. В итоге получили возможность оценивать количество именно целевых заявок.
Отслеживание транзакций
Мы решили считать не просто выставление счетов, а непосредственно факты поступления денег на счет системы приема платежей.
Довольно часто это отложенное событие: решили оплатить через банковский перевод или платежный терминал. Также в качестве примера может быть “Оплата наличными курьеру”.
Когда система приема платежей сообщила о поступлении средств, мы отправляем Транзакцию в Google Analytics:
v=1&tid=UA-12345678-1&cid=455045511.1409504244&uid=12345&t=event&tr=225&pa=Transaction&ec=Oplata&ea=Individ&ev=225&ni=1&pr1id=12345_individual_id&pr1nm=Individ&pr1pr=225&pr1qt=1
Возврат или частичный возврат средств
Для более точной статистики в GA есть возможность оформлять возвраты(отмену транзакций).
Так как у нас это очень редкий кейс, мы это не автоматизировали.
Пример из официальной документации:
// Refund an entire transaction and send with a non-interaction event. v=1 // Version. &tid=UA-XXXXX-Y // Tracking ID / Property ID. &cid=555 // Anonymous Client ID. &t=event // Event hit type. &ec=Ecommerce // Event Category. Required. &ea=Refund // Event Action. Required. &ni=1 // Non-interaction parameter. &ti=T12345 // Transaction ID. Required. &pa=refund // Product action (refund). Required.
Больше информации по ссылке:
developers.google.com/analytics/devguides/collection/protocol/v1/devguide#enhancedecom
Оффлайн-точки продаж
Посещаемость
Существуют счетчики посетителей магазина (оффлайн) с возможностью отправки информации на веб. Используя Measurement Protocol, вы можете прокинуть эту информацию в Google Analytics. Отправляя Pageview в GA, сможете отслеживать как влияют ваши маркетинговые активности на посещаемость оффлайн-точек.
Транзакции
Все оплаты также можно отправлять в GA, причём тут уже можно использовать UserID.
В перспективе вы сможете сегментировать пользователей, которые совершают покупки в оффлайне, а которые — через интернет.
Маркетологи вам скажут Спасибо.
Открытие писем
Так как Measurement Protocol может работать через GET-запросы, то ничего не мешает добавить в рассылку картинку:
<img src="https://www.google-analytics.com/collect?v=1&tid=UA-123456-1&cid=1482535147.1490885188&uid=12345&t=event&ec=email&ea=open&dp=%2Fletter_name&z=12345">
Параметры z, uid и cid подставлять в зависимости от пользователя, которому уходит письмо. dp (Document Path) — чтобы было понятно, какое письмо было открыто.
Дополнительные ресурсы
→ Официальная документация
→ Подробное описание параметров
→ Сервис для проверки корректности отправляемых данных
Библиотеки:
PHP: github.com/theiconic/php-ga-measurement-protocol
Python: github.com/mirumee/google-measurement-protocol
NodeJS: github.com/peaksandpies/universal-analytics
Ruby: github.com/tpitale/staccato
Выводы
Measurement Protocol довольно мощный инструмент, который дает возможность автоматизировать выгрузку любых взаимодействий в Google Analytics, что поможем вам для аналитики в целом и станет большим бонусом для маркетинговых активностей.
Если вы тоже используется Measurement Protocol — пишите в комментарии свои кейсы!
Другие уроки курса "Google Analytics"
- Google Analytics: обзор системы с примером использования
- Определяем цели и метрики
- Как установить Google Analytics на сайт
- Как подготовить свой Google Analytics к GDPR
- Как Google Analytics собирает информацию
- Пользователь, сессия, просмотр страниц
- Показатель отказов в Google Analytics
- Показатель отказов на одностраничных сайтах
- Google Analytics: Что такое Client ID
- Сегменты в Google Analytics
- События в Google Analytics
- Цели в Google Analytics
- Как Google Analytics определяет источник трафика?
- Ярлыки и сохраненные отчеты в Google Analytics
- Заметки / аннотации в Google Analytics
- UTM-метки в Google Analytics: зачем нужны и как настроить
- Все что вы хотели знать о UTM-метках, но боялись спросить
- Почему в direct попадает другой трафик и как это исправить
- Интерфейс отчетов + пользовательские отчеты в Google Analytics
- Обзор отчетов Google Analytics в реальном времени
- Сравнение моделей мультиканальной атрибуции
- Диаграмма «Новые и вернувшиеся пользователи» — будьте осторожнее!
- Анализ просмотренных блоков страницы
- Пользовательские сводки / Dashboards в Google Analytics
- Специальные оповещения / Custom Alerts в Google Analytics
- Когортный анализ в Google Analytics
- Идентификатор отслеживания аккаунта Google Analytics
- Дополнение Google Analytics для Google Taблиц
- Пользовательские параметры и показатели
- Какие данные запрещено собирать в Google Analytics
- Как передать ClientID в произвольный параметр
- Как настроить User ID в Google Analytics
- Собственная группа каналов в Google Analytics
- Как в Google Analytics отобразить полный адрес страницы
- Вычисляемые показатели в Google Analytics
- Отслеживание внутреннего поиска на сайте в Google Analytics
- Расхождения данных о кликах из AdWords в Google Analytics
- Что такое GA Measurement Protocol
- Google Analytics API для маркетолога на практическом примере
- Отправка информации об оплате в GA из Google Spreadsheet (без CRM)
- Как определить мошенничество CPA-сетей с помощью GA API и R
- Обходим семплирование и собираем сырые данные
- Google Forms: фиксируем событие отправки формы в Google Analytics
- Cоздаем списки ремаркетинга из старых пользователей без ограничений
- Стриминг данных из Google Analytics в Facebook Pixel
- Синхронизация событий с пикселями Facebook, VK, Yandex, MyTarget
- Как добавить больше двух параметров в отчет Google Analytics
- Несколько действий внутри customTask
- Как фиксировать трафик и лиды с партнерских сайтов
- Удаляем параметр fbclid из отчетов
- Скрипт. Исключаем метку fbclid в промышленных масштабах