Validar eventos

Elige tu plataforma:

El Measurement Protocol de Google Analytics no devuelve 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 con 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 Creador de eventos de Google Analytics. El creador de eventos de Google Analytics te permite crear eventos de forma interactiva y usa el servidor de validación del Protocolo de medición 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 y cómo interpretar la respuesta.

Envía eventos para la validación

La única diferencia en la solicitud de eventos enviados a Measurement Protocol y al servidor de validación de 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 iguales.

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_behavior establecido en ENFORCE_RECOMMENDATIONS.
  • En producción, envía solicitudes sin configurar validation_behavior 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 de 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 de Measurement Protocol. Esta solicitud generaría un array validationMessages vacío 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 Es un código de validación que corresponde al error.

ValidationCode

Valor Descripción
VALUE_INVALID El valor proporcionado para un fieldPath no es válido. Consulta las limitaciones.
VALUE_REQUIRED No se proporcionó un valor obligatorio para un fieldPath.
NAME_INVALID El nombre proporcionado no es 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 es 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.