В этом руководстве описано, как отправлять события Measurement Protocol из потоков данных для сайта и приложения на сервер Google Аналитики, чтобы просматривать соответствующие данные в отчетах Google Аналитики.
Идентификаторы и параметры, необходимые для запросов Measurement Protocol, зависят от того, отправляете ли вы события в поток сайта или поток приложения.
- Для потоков данных с сайта (обычно настраиваемых с помощью gtag.js или Google Менеджера тегов) для идентификации экземпляра пользователя используются параметры
measurement_idв URL запроса иclient_idв теле JSON. Значениеclient_idдолжно совпадать с идентификатором, сгенерированным тегом Google Аналитики на вашем сайте. - Для потоков данных приложений (настроенных с помощью Firebase SDK) в URL запроса используется параметр
firebase_app_id, а в теле JSON – параметрapp_instance_id, которые предоставляются SDK Google Аналитики для Firebase.
В этом руководстве приведены примеры для обоих сценариев.
Основные компоненты запроса по типу потока
| Компонент | Поток сайта (gtag.js/GTM) | Поток данных приложения (Firebase) |
|---|---|---|
| Параметр URL потока данных | measurement_id |
firebase_app_id |
| Параметр URL для секретного ключа API | Обязательно | Обязательно |
| Поле идентификатора устройства в теле JSON | client_id |
app_instance_id |
Выберите нужную платформу:
На этой вкладке приведены инструкции по отправке событий с сервера, которые связаны с действиями пользователей в потоке данных приложения, с помощью SDK Google Аналитики для Firebase. Обратите внимание, что в этих запросах используются firebase_app_id и app_instance_id.
Требования
Чтобы отправлять события с помощью Measurement Protocol, вам понадобятся определенные идентификаторы из ресурса Google Аналитики или проекта Firebase.
Секретный ключ API
api_secret используется для аутентификации ваших запросов. Его необходимо хранить в секрете.
Чтобы создать секрет:
- Откройте Google Аналитику и перейдите к нужному аккаунту и ресурсу.
- В левом нижнем углу нажмите Администратор.
- В разделе Сбор и редактирование данных нажмите Потоки данных.
- Выберите поток данных сайта или приложения.
- Нажмите Секретный ключ API для Measurement Protocol.
- Нажмите Создать.
- Введите название секрета и нажмите Создать.
Скопируйте значение секрета.
Идентификатор приложения Firebase
firebase_app_id – это уникальный идентификатор вашего приложения в Firebase, который отличается от app_instance_id.
Чтобы найти идентификатор приложения Firebase:
- Откройте проект в консоли Firebase.
- Нажмите на значок настроек рядом с пунктом Обзор проекта и выберите Настройки проекта.
- На вкладке Общие перейдите к разделу Ваши приложения.
- Выберите нужное приложение для iOS или Android.
- Скопируйте значение в поле App ID (Идентификатор приложения).
Формат запроса
Measurement Protocol для Google Аналитики поддерживает только HTTP-запросы POST.
Для отправки события используйте следующий формат:
POST /mp/collect?firebase_app_id=<var>FIREBASE_APP_ID</var>&api_secret=<var>API_SECRET</var> HTTP/1.1
HOST: www.google-analytics.com
Content-Type: application/json
PAYLOAD_DATA
В параметрах запроса URL должны быть следующие данные (о том, как найти или создать эти значения, рассказывается в разделе Предварительные условия):
api_secret– секретный ключ API для аутентификации запроса.firebase_app_id– идентификатор приложения в Firebase.
Для Measurement Protocol необходимо предоставить тело запроса в формате JSON POST body. Пример:
{
"app_instance_id": "APP_INSTANCE_ID",
"events": [
{
"name": "login",
"params": {
"method": "Google",
"session_id": "SESSION_ID",
"engagement_time_msec": 100
}
}
]
}
Чтобы идентифицировать уникальную установку мобильного приложения, в теле запроса необходимо указать параметр app_instance_id. Обратите внимание, что он отличается от параметра firebase_app_id, который идентифицирует само приложение. Подробнее о том, что такое app_instance_id и как получить его с помощью Firebase SDK, рассказывается в справочной документации по app_instance_id.
session_start является зарезервированным названием события, однако при создании нового идентификатора session_id будет начат новый сеанс без необходимости отправлять session_start. Подробнее о том, как выполняется подсчет сеансов…
Попробовать
Вот пример того, как можно отправить несколько событий одновременно. В этом примере на сервер Google Аналитики отправляются события tutorial_begin и join_group, а также географические данные с помощью поля user_location и информация об устройстве с помощью поля device.
const firebaseAppId = "FIREBASE_APP_ID";
const apiSecret = "API_SECRET";
fetch(`https://www.google-analytics.com/mp/collect?firebase_app_id=${firebaseAppId}&api_secret=${apiSecret}`, {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify({
app_instance_id: "APP_INSTANCE_ID",
events: [
{
name: "tutorial_begin",
params: {
"session_id": "SESSION_ID",
"engagement_time_msec": 100
}
},
{
name: "join_group",
params: {
"group_id": "G_12345",
"session_id": "SESSION_ID",
"engagement_time_msec": 150
}
}
],
user_location: {
city: "Mountain View",
region_id: "US-CA",
country_id: "US",
subcontinent_id: "021",
continent_id: "019"
},
device: {
category: "mobile",
language: "en",
screen_resolution: "1280x2856",
operating_system: "Android",
operating_system_version: "14",
model: "Pixel 9 Pro",
brand: "Google",
browser: "Chrome",
browser_version: "136.0.7103.60"
}
})
});
Формат firebase_app_id зависит от платформы (см. объекты и файлы конфигурации Firebase, раздел Идентификатор приложения).
Переопределить временную метку
Протокол Measurement Protocol использует первую временную метку из следующего списка для каждого события и свойства пользователя в запросе:
timestamp_microsсобытия или свойства пользователя.timestamp_microsзапроса- Время, когда Measurement Protocol получает запрос.
В примере ниже показано, как отправить временную метку на уровне запроса, которая будет применяться ко всем событиям и свойствам пользователя в запросе. В результате Measurement Protocol присваивает временную метку requestUnixEpochTimeInMicros событиям tutorial_begin и join_group и свойству пользователя customer_tier.
{
"timestamp_micros": requestUnixEpochTimeInMicros,
"events": [
{
"name": "tutorial_begin"
},
{
"name": "join_group",
"params": {
"group_id": "G_12345",
}
}
],
"user_properties": {
"customer_tier": {
"value": "PREMIUM"
}
}
}
В примере ниже отправляются временные метки на уровне запроса, события и свойства пользователя. В результате протокол Measurement Protocol присваивает следующие временные метки:
tutorialBeginUnixEpochTimeInMicrosдля мероприятияtutorial_begincustomerTierUnixEpochTimeInMicrosдля свойства пользователяcustomer_tierrequestUnixEpochTimeInMicrosдля событияjoin_groupи свойства пользователяnewsletter_reader.
{
"timestamp_micros": requestUnixEpochTimeInMicros,
"events": [
{
"name": "tutorial_begin",
"timestamp_micros": tutorialBeginUnixEpochTimeInMicros
},
{
"name": "join_group",
"params": {
"group_id": "G_12345",
}
}
],
"user_properties": {
"customer_tier": {
"value": "PREMIUM",
"timestamp_micros": customerTierUnixEpochTimeInMicros
},
"newsletter_reader": {
"value": "true"
}
}
}
Как выполняется проверка для событий и свойств пользователей, зарегистрированных в прошлом
События и свойства пользователей можно добавлять с задержкой до 72 часов. Если значение timestamp_micros старше 72 часов, Measurement Protocol принимает или отклоняет событие или свойство пользователя следующим образом:
- Если параметр
validation_behaviorне задан или имеет значениеRELAXED, Measurement Protocol принимает событие или свойство пользователя, но переопределяет его временную метку, устанавливая ее на 72 часа назад. - Если для параметра
validation_behaviorзадано значениеENFORCE_RECOMMENDATIONS, Measurement Protocol отклоняет событие или свойство пользователя.
События, отправленные с помощью Measurement Protocol и предназначенные для объединения или обработки вместе с событиями, собранными с помощью SDK Google Аналитики для Firebase или gtag.js, должны быть получены Google Аналитикой в течение 48 часов после исходной клиентской временной метки события. События, полученные позже, могут обрабатываться не так, как ожидается, особенно в целях атрибуции конверсий.
Ограничения
При отправке событий Measurement Protocol в Google Аналитику действуют следующие ограничения:
Для каждого ресурса можно отправлять не более 100 миллионов запросов, не связанных с конверсиями, в час. Запрос не является запросом на конверсию, если ни одно из событий в нем не является ключевым событием, для которого в Google Рекламе зарегистрирована конверсия. Если вы превысите этот лимит, протокол Measurement Protocol будет игнорировать все запросы, не связанные с конверсиями, для ресурса до конца часа.
Один запрос может содержать не больше 25 событий.
Одно событие может содержать не больше 25 параметров.
Одно событие может содержать не больше 25 свойств пользователей.
Название свойства пользователя может содержать не больше 24 символов.
Значение свойства пользователя может содержать не больше 36 символов.
Название события может содержать не больше 40 символов (буквы, цифры, знаки подчеркивания) и должно начинаться с буквы.
Название параметра может содержать не больше 40 символов (буквы, цифры, знаки подчеркивания) и должно начинаться с буквы. Это касается и параметров объектов.
Значение параметра может содержать не больше 100 символов (это касается и параметров объекта). Для ресурса Google Аналитики 360 это ограничение составляет 500 символов.
Это ограничение не распространяется на параметры
session_idиsession_number, если их значения задаются с помощью встроенных переменных Идентификатор сеанса Аналитики и Номер сеанса Аналитики в Google Менеджере тегов.В параметрах объектов можно использовать не больше 10 специальных параметров.
Размер тела запроса POST должен быть менее 130 КБ.
События в приложениях, отправляемые Measurement Protocol в Google Аналитику, не используются для добавления пользователей приложения в поисковые аудитории Google Рекламы.
Некоторые названия событий, параметров и свойств пользователей зарезервированы и не могут быть использованы. Подробнее о зарезервированных названиях…
Зарезервированные названия
В Measurement Protocol есть несколько зарезервированных названий, которые нельзя использовать для событий, параметров или свойств пользователей.
Ниже приведены названия событий, которые часто путают:
screen_view: это событие допустимо только для потоков приложений. Для веб-трансляций используйтеpage_view.ad_impression: это событие допустимо только для потоков приложений.in_app_purchase: это событие допустимо только для потоков приложений. Для потоков данных с сайта используйте событиеpurchase.
Дополнительные требования для каждого варианта использования приведены в разделе Примеры использования.