Протокол передачи данных Measurement Protocol – это базовый инструмент для разработчиков. Он активен на любом сайте, где стоит код счетчика Google Analytics.
С помощью протокола вы отправляете информацию о продажах, просмотрах страниц и других событиях на сервер Google Аналитики. Это можно делать практически из любого источника или устройства, подключенного к интернету.
В этой статье вы узнаете, как работает Measurement Protocol, как его применять и что при этом учитывать.
Для чего нужен Measurement Protocol
Протокол помогает решать следующие задачи:
- Отслеживать в разных средах (устройствах, источников), как пользователи взаимодействуют с компанией.
Допустим, в отделении банка с вами работает специалист и по окончании вы оцениваете качество обслуживания. Зеленая кнопка – отлично, желтая – нормально, красная – плохо. В тот самый момент, когда вы нажмете одну из них, данные поступают в Google Аналитику.
- Связывать онлайн- и офлайн-действия аудитории, чтобы проследить весь путь пользователя к конверсии (звонка / заявки / заказа).
Один и тот же пользователь в ходе сделки может совершать действия на сайте и в офлайне: оформляет заказ, а оплачивает безналичным расчетом, или отдает деньги курьеру при доставке.
Дело в том, что мы не всегда получаем оплату сразу же по факту. Поэтому если передавать данные о покупке, когда платеж еще не состоялся, есть риск, что статистика будет некорректной. На этапе, когда заказ оформлен, не факт, что пользователь дойдет до оплаты – он может и отменить заказ.
Другой пример – вы предлагаете в офлайне покупателю оформить скидочную карту и просите его оставить данные – телефон, пол, возраст и т.д. Он активирует карту на сайте в личном кабинете. Впоследствии когда этот же покупатель приходит снова, вы распознаете его по данным в анкете.
- Отправлять данные с прокси-сервера, если необходимо.
Некоторые среды не могут отправлять данные сразу в Google Аналитику. Например, устаревшие мобильные устройства, на которых нельзя запускать JavaScript, или корпоративный интранет. Брандмауэр блокирует такие запросы.
В таких случаях можно настроить промежуточное звено – прокси-сервер, чтобы отправлять сперва на него. Затем уже он передает данные в Google Analytics с помощью Measurement Protocol.
Чтобы получать данные об IP-адресе и агенте пользователя с клиентского устройства, а не прокси-сервера, укажите оба эти значения в протоколе. Они будут использоваться вместо тех, которые Google обычно получает из заголовков запроса.
Общая схема работы Measurement Protocol
- Какие данные передает протокол?
Необработанные статистические данные о пользовательских взаимодействиях – событиях и обращениях.
- Откуда можно их передавать?
С любых устройств, у которых есть доступ к интернету – помимо сайта и приложений это могут быть телевизоры, игровые консоли и т.д. В отличие от классического отслеживания, для которого обязательно, чтобы устройства выполняли JavaScript.
Также с любых источников – например, CRM-системы, Google Таблиц, базы данных, платежного терминала и других. Условие то же – подключение к глобальной сети.
- В каком виде эти данные передаются?
В виде HTTP-запросов. Можно использовать для этого POST-запросы, чтобы отправлять данные, и GET-запросы, чтобы их получать данные. Технически оба вида работают одинаково.
На серверы Google Аналитики. У протокола единая точка входа: www.google-analytics.com/collect.
- Когда происходит передача данных?
Каждый раз, когда кто-либо просматривает страницу или совершает событие, запрос поступает в Google Analytics.
Как он выглядит и из чего состоит – разберем далее.
Где посмотреть адрес конкретного запроса
1) Зайдите на сайт;
2) Откройте инструменты разработчика:
3) Выберите вкладку «Network»:
4) В строке поиска наберите «collect» и обновите страницу:
5) Выберите запрос, например:
Структура запроса
Как правило, запрос включает 3 строки:
1) Пользовательский агент (user-agent) – это то, что браузер пользователя отправляет в Google Аналитику. Выглядит примерно так:
Если вы отправляете запросы вручную, эта строка необязательная.
2) Строка отправки (transport) включает адрес Google Analytics и конечную точку URL (/collect или /batch, если в одном запросе несколько обращений). То есть куда именно вы отправляете запрос:
3) Набор данных с параметрами (payload data) – это параметры, которые вы передаете в запросе. Они представлены в одной строке в виде пар «название = значение», которые разделяются символом «&». Вместо пробелов – нижнее подчеркивание.
Measurement Protocol поддерживает следующие типы данных в значениях параметров:
- Числа (целые или десятичные);
- Текст. При этом в необработанном тексте удаляются начальные и конечные пробелы, а двойные, тройные и более символы разметки (включая пробелы, табуляцию, разрывы строки и т. д.) преобразуются в одинарные;
- true / false (1/0);
- Валюта (десятичный формат до 6 знаков). После отправки удаляется текст до первой цифры, дефиса (-) или десятичной точки. Таким образом, $-55.00 превращается в -55.00.
Все значения нужно кодировать в UTF-8 и URL. Если какие-либо символы закодированы неправильно, Google заменяет их подстановочным символом Unicode xFFFD.
Отличие запросов POST и GET
В POST-запросе следующий порядок представления данных:
User-Agent: user_agent_string (строка пользовательского агента)
POST https://www.google-analytics.com/collect (строка отправки)
payload_data (набор данных с параметрами)
Пояснения:
- user_agent_string – используется при расчете следующих параметров: браузер, платформа и мобильные возможности. Если значение не задано, эти параметры не будут вычислены;
- payload_data – тело запроса. Может включать только одну кодированную строку длиной не более 8 192 Б;
- IP-адрес – неявно передается в HTTP-запросе и используется для вычисления всех параметров географического местоположения и сети в Google Analytics.
GET-запрос выглядит так:
GET /collect?payload_data HTTP/1.1 (конечная точка URL?набор данных с параметрами)
Host: https://www.google-analytics.com (адрес Google Аналитики)
User-Agent: user_agent_string (строка пользовательского агента)
В этом случае максимальная длина закодированного URL – 8 000 Б.
В некоторых средах (например, браузерах) HTTP-запросы GET могут кешироваться. В таком случае последующие запросы могут не отправляться в Google Analytics, а извлекаться из кеша.
Чтобы это предотвратить и обеспечить уникальность всех запросов, используйте очистку кеша. В Measurement Protocol для этого есть специальный параметр z, который принимает случайно выбранное число. Лучше добавлять его последним:
https://www.google-analytics.com/collect?payload_data&z=123456
Google рекомендует использовать метод POST, поскольку так можно передавать больше данных. В средах, где POST не применяется, можно отправлять HTTP-запросы с помощью метода GET в ту же конечную точку.
Если запрос сформирован правильно, возвращается 2XX код статуса. Если данные неправильно сформатированы, неверные или Google Analytics не удалось их обработать – код ошибки не возвращается. Прежде чем отправлять повторный запрос, исправьте возможные ошибки в HTTP-запросе.
Далее рассмотрим сами параметры.
Обязательные параметры запроса
Строка набора данных с параметрами должна включать следующие 4 элемента:
- v – версия протокола, на данный момент первая, поэтому v = 1;
- tid – идентификатор отслеживания, или идентификатор вашего ресурса в Google Аналитике. С ним связываются все собираемые данные;
- uid или cid. Оба параметра по отдельности необязательные, но один из них нужно указать.
Идентификатор пользователя (uid) – идентификатор, который пользователю присваивает владелец сайта или пользователь библиотеки отслеживания. Он должен быть анонимным, то есть не связанным с личной информацией, а его значение не должно сохраняться с помощью cookie или других средств хранения данных в Google Аналитике.
Уникальный идентификатор клиента (cid) берется из файла cookie в браузере сайта и генерируется случайным образом для каждого случая установки мобильного приложения. По этому значению выполняется анонимная идентификация пользователя, устройства или браузера.
- t – тип обращения (взаимодействия). Например, pageview (просмотр страницы), event (событие) и другие.
То есть при каждой отправке данных указывайте следующие параметры:
Дополнительно для каждого типа обращения есть собственный набор обязательных и необязательных параметров. Информацию по ним ищите в
справке по параметрам.
Например, t = event (событие). Согласно справке, к нему нужно добавить обязательные параметры события:
- ec (event category) – категория события;
- ea (event action) – действие события.
Если категория события – регистрация (ec = registration), а действие – заполнение формы (ea = form), строка набора параметров будет выглядеть примерно так:
А вот как формируется строка для обращения «Просмотр главной страницы» (тип – pageview):
dp – это дополнительный параметр для обращения типа pageview, обозначающий путь, в данном случае – к главной странице. Символ косой черты (/) обозначается как %2F. В запросе всё вместе выглядит как сочетание «dp=%2F».
Как отправлять несколько обращений в одном запросе
Используйте конечную точку /batch вместо /collect и укажите каждый фрагмент данных в отдельной строке.
Например, вы хотите отслеживать пользователя 5555, посетившего страницы «Главная», «О компании» и «Контакты». Чтобы передать информацию о просмотре сразу трех страниц, отправьте такой запрос:
При этом указывайте в одном запросе не больше 20 обращений. Их общий объем не должен превышать 16 КБ. Ограничение для одного фрагмента данных – 8КБ.
Обращение по отслеживанию посещений страниц при отправке в Google Аналитику со всеми строками будет выглядеть так:
А вот так – для отслеживания событий:
Для этого авторизуйтесь по ссылке:
Выберите нужный аккаунт:
Дайте разрешение на доступ к нему:
Введите обязательные и дополнительные параметры в указанных на скриншоте полях:
Для дополнительных есть кнопки добавления и удаления:
Результат – готовый запрос по заданным параметрам – появится здесь:
Нажмите на указанную кнопку, чтобы проверить правильность запроса.
Кроме того, данное приложение позволяет передавать данные методом GET через адресную строку браузера.
Важно! Для отправки обращений на проверку в конце URL должно быть /debug/collect вместо /collect.
Данные в режиме реального времени отправляются в Google Analytics согласно запросу, который вы составили:
Правила использования Measurement Protocol
1) Убедитесь, что у вас достаточно прав для работы, загрузки и использования данных в аккаунте Google Аналитики;
2) Сообщите конечным пользователям о том, какие данные вы собираете и связываете ли их с другими доступными вам данными, и получите их согласие. Или дайте возможность отключить функции Google Analytics;
3) Не загружайте данные, которые позволяют идентифицировать личность пользователя (имя, номер социального страхования, адрес электронной почты и т. п.) или отдельное устройство (например, уникальный идентификатор мобильного телефона, если его нельзя сбросить) даже в хешированной форме.
Не нарушайте эти правила, иначе могут закрыть ваш аккаунт Google Аналитики, и вы потеряете все данные из него.
Высоких вам конверсий!