En esta guía, se explica cómo puedes enviar eventos de flujos web y de aplicaciones de Measurement Protocol de Google Analytics a un servidor de Google Analytics para que puedas verlos en tus informes de Google Analytics.
Los identificadores y parámetros necesarios para las solicitudes de Measurement Protocol dependen de si envías eventos a un flujo web o a un flujo de aplicaciones.
- En el caso de los flujos web (que suelen estar instrumentados con gtag.js o Google Tag Manager), usas el
measurement_iden la URL de la solicitud y elclient_iden el cuerpo JSON para identificar la instancia del usuario. Elclient_iddebe coincidir con el ID que genera la etiqueta de Google Analytics en tu sitio web. - En el caso de los flujos de aplicaciones (instrumentados con el SDK de Firebase), usas el
firebase_app_iden la URL de la solicitud y elapp_instance_iden el cuerpo JSON, que proporciona el SDK de Google Analytics para Firebase.
En esta guía, se proporcionan ejemplos para ambos casos.
Componentes clave de la solicitud por tipo de flujo
| Componente | Flujo web (gtag.js/GTM) | Flujo de aplicaciones (Firebase) |
|---|---|---|
| Parámetro de URL de transmisión de datos | measurement_id |
firebase_app_id |
| Parámetro de URL del secreto de API | Obligatorio | Obligatorio |
| Campo del cuerpo JSON del ID de dispositivo | client_id |
app_instance_id |
Elige la plataforma que quieres ver en esta guía:
En esta pestaña, se muestran instrucciones para enviar eventos desde tu servidor que se correlacionan con la actividad del usuario en un flujo de aplicaciones con el SDK de Google Analytics para Firebase. Ten en cuenta que estas solicitudes usan firebase_app_id y app_instance_id.
Requisitos previos
Para enviar eventos con Measurement Protocol, necesitas identificadores específicos de tu propiedad de Google Analytics o proyecto de Firebase.
Secreto de API
El api_secret se usa para autenticar tus solicitudes. Es fundamental mantener este secreto confidencial.
Para crear un secreto nuevo, haz lo siguiente:
- Ve a Google Analytics y navega a tu cuenta y propiedad.
- Haz clic en Administrador en la esquina inferior izquierda.
- En Recopilación y modificación de datos, haz clic en Flujos de datos.
- Selecciona tu flujo de datos web o de aplicación.
- Haz clic en Secretos de la API de Measurement Protocol.
- Haz clic en Crear.
- Ingresa un apodo para el secreto y haz clic en Crear.
Copia el valor del secreto.
ID de la aplicación de Firebase
El firebase_app_id identifica tu aplicación de Firebase. No es lo mismo que el app_instance_id.
Para encontrar el ID de la aplicación de Firebase, haz lo siguiente:
- Abre el proyecto en la Firebase console.
- Haz clic en el ícono de ajustes junto a Descripción general del proyecto y selecciona Configuración del proyecto.
- En la pestaña General, ve a la sección Tus aplicaciones.
- Selecciona la aplicación específica para iOS o Android.
- Copia el valor de ID de aplicación.
Formatea la solicitud
Measurement Protocol de Google Analytics solo admite solicitudes POST HTTP.
Para enviar un evento, usa el siguiente formato:
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
Debes proporcionar lo siguiente en los parámetros de consulta de la URL de la solicitud (consulta Requisitos previos para obtener detalles sobre cómo encontrar o crear estos valores):
api_secret: Es el secreto de API para autenticar la solicitud.firebase_app_id: Es el ID de la aplicación de Firebase de tu aplicación.
Debes proporcionar un cuerpo de solicitud en el formato de cuerpo POST JSON para Measurement Protocol. Por ejemplo:
{
"app_instance_id": "APP_INSTANCE_ID",
"events": [
{
"name": "login",
"params": {
"method": "Google",
"session_id": "SESSION_ID",
"engagement_time_msec": 100
}
}
]
}
Debes proporcionar app_instance_id en el cuerpo de la solicitud para identificar una instalación única de tu aplicación para dispositivos móviles. Ten en cuenta que es diferente del firebase_app_id, que identifica la aplicación en sí. Para obtener más información sobre el
app_instance_id y cómo recuperarlo con el SDK de Firebase, consulta la
documentación de referencia de app_instance_id.
Si bien session_start es un nombre de evento reservado,
crear un session_id nuevo crea una sesión nueva sin necesidad de enviar
session_start. Obtén información sobre cómo se cuentan las sesiones.
Probar
Este es un ejemplo que puedes usar para enviar varios eventos a la vez. En este ejemplo, se envían un evento tutorial_begin y un evento join_group a tu servidor de Google Analytics, se incluye información geográfica con el campo user_location y se incluye información del dispositivo con el campo 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"
}
})
});
El formato de firebase_app_id es específico de la plataforma. Consulta ID de aplicación
en Objetos o archivos de configuración de Firebase.
Anular la marca de tiempo
Measurement Protocol usa la primera marca de tiempo que encuentra en la siguiente lista para cada evento y propiedad del usuario en la solicitud:
- El
timestamp_microsdel evento o la propiedad del usuario - El
timestamp_microsde la solicitud - La hora en que Measurement Protocol recibe la solicitud
En el siguiente ejemplo, se envía una marca de tiempo a nivel de la solicitud que se aplica a todos los
eventos y propiedades
del usuario de la
solicitud. Como resultado, Measurement Protocol asigna una marca de tiempo de requestUnixEpochTimeInMicros a los eventos tutorial_begin y join_group, y a la propiedad del usuario customer_tier.
{
"timestamp_micros": requestUnixEpochTimeInMicros,
"events": [
{
"name": "tutorial_begin"
},
{
"name": "join_group",
"params": {
"group_id": "G_12345",
}
}
],
"user_properties": {
"customer_tier": {
"value": "PREMIUM"
}
}
}
En el siguiente ejemplo, se envía una marca de tiempo a nivel de la solicitud, una marca de tiempo a nivel del evento y una marca de tiempo a nivel de la propiedad del usuario. Como resultado, Measurement Protocol asigna las siguientes marcas de tiempo:
tutorialBeginUnixEpochTimeInMicrospara el eventotutorial_begincustomerTierUnixEpochTimeInMicrospara la propiedad del usuariocustomer_tierrequestUnixEpochTimeInMicrospara el eventojoin_groupy la propiedad del usuarionewsletter_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"
}
}
}
Comportamiento de validación para eventos y propiedades del usuario anteriores
Los eventos y las propiedades del usuario se pueden retrotraer hasta 72 horas. Si el valor de timestamp_micros es anterior a 72 horas, Measurement Protocol acepta o rechaza el evento o la propiedad del usuario de la siguiente manera:
- Si no se establece el
validation_behavioro se establece enRELAXED, Measurement Protocol acepta el evento o la propiedad del usuario, pero anula su marca de tiempo a 72 horas. - Si el
validation_behaviorse establece enENFORCE_RECOMMENDATIONS, Measurement Protocol rechaza el evento o la propiedad del usuario.
Los eventos enviados con Measurement Protocol que se unirán o procesarán junto con los eventos recopilados por el SDK de Google Analytics para Firebase o gtag.js deben recibirse en Google Analytics en un plazo de 48 horas desde la marca de tiempo original del evento del cliente. Es posible que los eventos recibidos más tarde no se procesen como se espera, en particular para fines como la atribución de conversiones.
Limitaciones
Se aplican las siguientes limitaciones al enviar eventos de Measurement Protocol a Google Analytics:
- Las solicitudes pueden tener un máximo de 25 eventos.
- Los eventos pueden tener un máximo de 25 parámetros.
- Los eventos pueden tener un máximo de 25 propiedades del usuario.
- Los nombres de las propiedades del usuario deben tener 24 caracteres o menos.
- Los valores de propiedad del usuario deben tener 36 caracteres o menos.
- Los nombres de eventos deben tener 40 caracteres o menos, solo pueden contener caracteres alfanuméricos y guiones bajos, y deben comenzar con un carácter alfabético.
- Los nombres de parámetros, incluidos los parámetros de elementos, deben tener 40 caracteres o menos, solo pueden contener caracteres alfanuméricos y guiones bajos, y deben comenzar con un carácter alfabético.
Los valores de los parámetros, incluidos los valores del parámetro del elemento, deben tener 100 caracteres o menos para una propiedad de Google Analytics estándar y 500 caracteres o menos para una propiedad de Google Analytics 360.
Este límite no se aplica a los parámetros
session_idysession_numbercuando sus valores son proporcionados por las variables integradas correspondientes de ID de sesión de Analytics y Número de sesión de Analytics en Google Tag Manager.Los parámetros de elementos pueden tener un máximo de 10 parámetros personalizados.
El cuerpo de la publicación debe ser inferior a 130 kB.
Los eventos de Measurement Protocol de aplicaciones que se envían a Google Analytics no propagan las audiencias de búsqueda en Google Ads para los usuarios de la aplicación.
Algunos nombres de eventos, parámetros y propiedades del usuario están reservados y no se pueden usar. Consulta Nombres reservados para obtener más detalles.
Nombres reservados
Measurement Protocol tiene varios nombres reservados que no se pueden usar para eventos, parámetros ni propiedades del usuario.
Los siguientes nombres de eventos son puntos comunes de confusión:
screen_view: Este evento solo se permite para los flujos de aplicaciones. Para los flujos web, usapage_viewen su lugar.ad_impression: Este evento solo se permite para los flujos de aplicaciones.in_app_purchase: Este evento solo se permite para los flujos de aplicaciones. Para los flujos web, usa elpurchaseevento en su lugar.
Para conocer los requisitos adicionales de cada caso de uso, consulta Casos de uso comunes.