Envoyer des événements du protocole de mesure à Google Analytics

Ce guide explique comment envoyer des événements de flux Web et d'application du protocole de mesure Google Analytics à un serveur Google Analytics. Vous pourrez ainsi consulter les événements du protocole de mesure dans vos rapports Google Analytics.

Les identifiants et les paramètres requis pour les requêtes du protocole de mesure dépendent du fait que vous envoyiez des événements à un flux Web ou à un flux d'application.

  • Pour les flux Web (généralement instrumentés avec gtag.js ou Google Tag Manager), vous utilisez measurement_id dans l'URL de la requête et client_id dans le corps JSON pour identifier l'instance utilisateur. La valeur client_id doit correspondre à l'ID généré par la balise Google Analytics sur votre site Web.
  • Pour les flux de données d'application (instrumentés avec le SDK Firebase), vous utilisez firebase_app_id dans l'URL de la requête et app_instance_id dans le corps JSON, qui sont fournis par le SDK Google Analytics pour Firebase.

Ce guide fournit des exemples pour les deux scénarios.

Composants clés des demandes par type de flux

Composant Flux Web (gtag.js/GTM) Flux d'application (Firebase)
Paramètre d'URL du flux de données measurement_id firebase_app_id
Paramètre d'URL du code secret de l'API Obligatoire Obligatoire
Champ du corps JSON de l'ID de l'appareil client_id app_instance_id

Choisissez la plate-forme que vous souhaitez voir dans ce guide :

Cet onglet contient des instructions pour envoyer des événements depuis votre serveur qui sont corrélés à l'activité des utilisateurs dans un flux d'application à l'aide du SDK Google Analytics for Firebase. N'oubliez pas que ces requêtes utilisent firebase_app_id et app_instance_id.

Prérequis

Pour envoyer des événements à l'aide du protocole de mesure, vous avez besoin d'identifiants spécifiques provenant de votre propriété Google Analytics ou de votre projet Firebase.

API Secret

Le api_secret est utilisé pour authentifier vos requêtes. Il est essentiel de préserver la confidentialité de ce secret.

Pour créer un secret:

  1. Accédez à Google Analytics, puis à votre compte et à votre propriété.
  2. Cliquez sur Administration en bas à gauche.
  3. Sous Collecte et modification des données, cliquez sur Flux de données.
  4. Sélectionnez votre flux de données Web ou d'application.
  5. Cliquez sur Codes secrets de l'API du protocole de mesure.
  6. Cliquez sur Créer.
  7. Saisissez un pseudo pour le code secret, puis cliquez sur Créer.
  8. Copiez la valeur du secret.

ID de l'application Firebase

firebase_app_id identifie votre application Firebase. Il est différent de app_instance_id.

Pour trouver votre ID d'application Firebase :

  1. Ouvrez votre projet dans la console Firebase.
  2. Cliquez sur l'icône de paramètres en forme de roue dentée à côté de Vue d'ensemble du projet, puis sélectionnez Paramètres du projet.
  3. Dans l'onglet Général, accédez à la section Vos applications.
  4. Sélectionnez l'application iOS ou Android spécifique.
  5. Copiez la valeur de l'ID de l'application.

Mise en forme de la requête

Le protocole de mesure Google Analytics n'accepte que les requêtes HTTP POST.

Pour envoyer un événement, utilisez le format suivant :

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

Vous devez fournir les éléments suivants dans les paramètres de requête de l'URL de la requête (consultez Conditions préalables pour savoir comment trouver ou créer ces valeurs) :

  • api_secret : code secret de l'API permettant d'authentifier la requête.
  • firebase_app_id : ID de l'application Firebase.

Vous devez fournir un corps de requête au format JSON POST body pour le protocole de mesure. Exemple :

  {
   "app_instance_id": "APP_INSTANCE_ID",
   "events": [
      {
        "name": "login",
        "params": {
          "method": "Google",
          "session_id": "SESSION_ID",
          "engagement_time_msec": 100
        }
      }
   ]
  }

Vous devez fournir app_instance_id dans le corps de la requête pour identifier une installation unique de votre application mobile. Notez que cela diffère de firebase_app_id, qui identifie l'application elle-même. Pour en savoir plus sur app_instance_id et sur la façon de le récupérer à l'aide du SDK Firebase, consultez la documentation de référence sur app_instance_id.

Même si session_start est un nom d'événement réservé, créer un session_id génère une nouvelle session sans qu'il soit nécessaire d'envoyer session_start. Découvrez comment les sessions sont comptabilisées.

Essayer

Voici un exemple que vous pouvez utiliser pour envoyer plusieurs événements à la fois. Cet exemple envoie un événement tutorial_begin et un événement join_group à votre serveur Google Analytics. Il inclut des informations géographiques à l'aide du champ user_location et des informations sur l'appareil à l'aide du champ 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"
    }
  })
});

Le format de firebase_app_id est spécifique à la plate-forme. Consultez ID d'application sous Fichiers et objets de configuration Firebase.

Remplacer le code temporel

Le protocole de mesure utilise le premier code temporel qu'il trouve dans la liste suivante pour chaque événement et propriété utilisateur de la requête :

  1. Le timestamp_micros de l'événement ou de la propriété utilisateur.
  2. Le timestamp_micros de la demande.
  3. Heure à laquelle le protocole de mesure reçoit la requête.

L'exemple suivant envoie un code temporel au niveau de la requête qui s'applique à tous les événements et à toutes les propriétés utilisateur de la requête. Par conséquent, le protocole de mesure attribue un code temporel requestUnixEpochTimeInMicros aux événements tutorial_begin et join_group, ainsi qu'à la propriété utilisateur customer_tier.

{
  "timestamp_micros": requestUnixEpochTimeInMicros,
  "events": [
    {
      "name": "tutorial_begin"
    },
    {
      "name": "join_group",
      "params": {
        "group_id": "G_12345",
      }
    }
  ],
  "user_properties": {
    "customer_tier": {
      "value": "PREMIUM"
    }
  }
}

L'exemple suivant envoie un code temporel au niveau de la requête, un code temporel au niveau de l'événement et un code temporel au niveau de la propriété utilisateur. Par conséquent, le protocole de mesure attribue les codes temporels suivants :

  • tutorialBeginUnixEpochTimeInMicros pour l'événement tutorial_begin
  • customerTierUnixEpochTimeInMicros pour la propriété utilisateur customer_tier
  • requestUnixEpochTimeInMicros pour l'événement join_group et la propriété utilisateur 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"
    }
  }
}

Comportement de validation pour les événements passés et les propriétés utilisateur

Les événements et les propriétés utilisateur peuvent être antidatés jusqu'à 72 heures. Si la valeur timestamp_micros est antérieure à 72 heures, le protocole de mesure accepte ou refuse l'événement ou la propriété utilisateur comme suit :

  • Si validation_behavior n'est pas défini ou est défini sur RELAXED, le protocole de mesure accepte l'événement ou la propriété utilisateur, mais remplace son code temporel par un code temporel datant de 72 heures.
  • Si validation_behavior est défini sur ENFORCE_RECOMMENDATIONS, le protocole de mesure rejette l'événement ou la propriété utilisateur.

Les événements envoyés à l'aide du protocole de mesure et destinés à être associés ou traités conjointement avec les événements collectés par le SDK Google Analytics for Firebase ou gtag.js doivent être reçus par Google Analytics dans les 48 heures suivant le code temporel de l'événement côté client d'origine. Il est possible que les événements reçus après ce délai ne soient pas traités comme prévu, en particulier pour des objectifs tels que l'attribution des conversions.

Limites

Les limites suivantes s'appliquent à l'envoi d'événements du protocole de mesure à Google Analytics :

  • Les demandes ne doivent pas inclure plus de 25 événements.
  • Les événements ne doivent pas inclure plus de 25 paramètres.
  • Les événements ne doivent pas inclure plus de 25 propriétés utilisateur.
  • Les noms de propriétés utilisateur ne doivent pas dépasser 24 caractères.
  • Les valeurs des propriétés utilisateur ne doivent pas dépasser 36 caractères.
  • Les noms d'événements ne doivent pas dépasser 40 caractères. Ils ne doivent contenir que des caractères alphanumériques et des traits de soulignement, et doivent commencer par un caractère alphabétique.
  • Les noms de paramètres, y compris les paramètres d'article, ne doivent pas dépasser 40 caractères. Ils ne peuvent contenir que des caractères alphanumériques et des traits de soulignement, et doivent commencer par un caractère alphabétique.
  • Les valeurs de paramètres, y compris celles des paramètres d'article, ne doivent pas dépasser 100 caractères pour une propriété Google Analytics standard et 500 caractères pour une propriété Google Analytics 360.

    Cette limite ne s'applique pas aux paramètres session_id et session_number lorsque leurs valeurs sont fournies par les variables intégrées ID de session Analytics et Numéro de session Analytics correspondantes dans Google Tag Manager.

  • Les paramètres d'article peuvent comporter jusqu'à 10 paramètres personnalisés.

  • Le corps du post doit être inférieur à 130 Ko.

  • Les événements du protocole de mesure des applications envoyés à Google Analytics n'alimentent pas les audiences pour le Réseau de Recherche dans Google Ads pour les utilisateurs d'applications.

  • Certains noms d'événements, de paramètres et de propriétés utilisateur sont réservés et ne peuvent pas être utilisés. Pour en savoir plus, consultez Noms réservés.

Noms réservés

Le protocole de mesure comporte plusieurs noms réservés qui ne peuvent pas être utilisés pour les événements, les paramètres ni les propriétés utilisateur.

Voici des noms d'événements qui sont souvent source de confusion :

Pour connaître les exigences supplémentaires de chaque cas d'utilisation, consultez Cas d'utilisation courants.