Elige tu plataforma:
El Protocolo de medición de Google Analytics no muestra códigos de error HTTP, incluso si un evento tiene un formato incorrecto o faltan parámetros obligatorios. Para verificar que tus eventos sean válidos, debes probarlos en el servidor de validación del Protocolo de medición antes de implementarlos en producción.
Después de validar que tus eventos estén estructurados correctamente, debes
verificar tu implementación para asegurarte de que estés usando las claves correctas.
Puedes llamar al servidor de validación directamente o usar el Google Analytics Creador de eventos. El Creador de eventos de Google Analytics te permite crear eventos de forma interactiva y usa el servidor de validación del Measurement Protocol para validarlos.
En esta guía, se describe cómo enviar eventos al servidor de validación del Protocolo de medición para Google Analytics 4 y cómo interpretar la respuesta.
Envía eventos para la validación
La única diferencia en la solicitud de eventos que se envían al Measurement Protocol y al Servidor de validación del Measurement Protocol es la URL.
| Servidor | URL |
|---|---|
| Protocolo de medición | /mp/collect |
| Servidor de validación del Protocolo de medición | /debug/mp/collect |
Todos los demás campos de solicitud son los mismos.
Te recomendamos el siguiente enfoque para la validación:
- Usa verificaciones de validación estrictas durante el desarrollo con cualquiera de las siguientes opciones:
- Valida las solicitudes con el Creador de eventos.
- Envía solicitudes al servidor de validación con
validation_behaviorestablecido enENFORCE_RECOMMENDATIONS.
- En producción, envía solicitudes sin
validation_behaviorestablecido para minimizar los datos rechazados por el Protocolo de medición.
Ejemplo de un evento no válido
En el siguiente código, se muestra un evento no válido que se envía al servidor de validación del Measurement Protocol:
const firebaseAppId = "FIREBASE_APP_ID";
const apiSecret = "API_SECRET";
fetch(`https://www.google-analytics.com/debug/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",
validation_behavior: "ENFORCE_RECOMMENDATIONS",
events: [{
// Event names must start with an alphabetic character.
name: "_badEventName",
params: {},
}]
})
});
Ejemplo de un evento válido
En el siguiente código, se muestra un evento válido que se envía al servidor de validación del Protocolo de medición. Esta solicitud generaría un array vacío validationMessages
en la respuesta, como se muestra en la sección Respuesta de validación.
const firebaseAppId = "FIREBASE_APP_ID";
const apiSecret = "API_SECRET";
fetch(`https://www.google-analytics.com/debug/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",
validation_behavior: "ENFORCE_RECOMMENDATIONS",
events: [{
name: "level_up",
params: {
level: 2,
character: "MyHero"
},
}]
})
});
Respuesta de validación
Esta es la respuesta del servidor de validación al ejemplo de evento no válido.
{
"validationMessages": [
{
"fieldPath": "events",
"description": "Event at index: [0] has invalid name [_badEventName]. Names must start with an alphabetic character.",
"validationCode": "NAME_INVALID"
}
]
}
Esta es la respuesta del servidor de validación a una solicitud sin problemas de validación:
{
"validationMessages": []
}
Respuesta
| Clave | Tipo | Descripción |
|---|---|---|
validationMessages |
Array<ValidationMessage> | Un array de mensajes de validación. |
ValidationMessage
| Clave | Tipo | Descripción |
|---|---|---|
fieldPath |
string | La ruta de acceso al campo que no era válido. |
description |
string | Una descripción del error. |
validationCode |
ValidationCode | Un código de validación que corresponde al error. |
ValidationCode
| Valor | Descripción |
|---|---|
VALUE_INVALID |
El valor proporcionado para un fieldPath no era válido. Consulta las limitaciones.
|
VALUE_REQUIRED |
No se proporcionó un valor obligatorio para un fieldPath. |
NAME_INVALID |
El nombre proporcionado no era válido. Consulta las limitaciones. |
NAME_RESERVED |
El nombre proporcionado era uno de los nombres reservados. Consulta los nombres reservados. |
VALUE_OUT_OF_BOUNDS |
El valor proporcionado era demasiado grande. Consulta las limitaciones. |
EXCEEDED_MAX_ENTITIES |
Había demasiados parámetros en la solicitud. Consulta las limitaciones. |
NAME_DUPLICATED |
Se proporcionó el mismo nombre más de una vez en la solicitud. |