В этом руководстве описано, как отправлять события 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/Менеджер тегов) | Поток приложения (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 необходимо предоставить тело запроса в формате тела запроса POST в формате JSON. Пример:
{
"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 Аналитики и не больше 500 символов для ресурса Google Аналитики 360. Это касается и параметров объектов.
Это ограничение не распространяется на параметры
session_idиsession_number, если их значения предоставляются соответствующими встроенными переменными Идентификатор сеанса Аналитики и Номер сеанса Аналитики в Google Менеджере тегов.В параметрах объектов можно использовать не больше 10 специальных параметров.
Размер тела запроса POST должен быть менее 130 КБ.
События отслеживания приложений, отправляемые Measurement Protocol в Google Аналитику, не заполняют поисковые аудитории Google Рекламы для пользователей приложений.
Некоторые названия событий, параметров и свойств пользователей зарезервированы и не могут использоваться. Подробнее о зарезервированных названиях…
Зарезервированные названия
В Measurement Protocol есть несколько зарезервированных названий, которые нельзя использовать для событий, параметров и свойств пользователей.
Ниже приведены названия событий, которые часто путают.
screen_view– это событие разрешено только для потоков приложений. Для потоков сайта используйтеpage_view.ad_impression– это событие разрешено только для потоков приложений.in_app_purchase– это событие разрешено только для потоков приложений. Для потоков сайта используйте событиеpurchase.
Дополнительные требования для каждого случая использования приведены в разделе Примеры использования.