Inviare eventi Measurement Protocol a Google Analytics

Questa guida spiega come inviare eventi di stream web e di app Measurement Protocol di Google Analytics a un server Google Analytics, in modo da poter visualizzare gli eventi Measurement Protocol nei report di Google Analytics.

Gli identificatori e i parametri richiesti per le richieste Measurement Protocol dipendono dall'invio di eventi a uno stream web o a uno stream di app.

  • Per gli stream web (in genere instrumentati con gtag.js o Google Tag Manager), utilizzi measurement_id nell'URL della richiesta e client_id nel corpo JSON per identificare l'istanza utente. client_id deve corrispondere all'ID generato dal tag Google Analytics sul tuo sito web.
  • Per gli stream di app (strumentati con l'SDK Firebase), utilizzi firebase_app_id nell'URL della richiesta e app_instance_id nel corpo JSON, forniti dall'SDK Google Analytics for Firebase.

Questa guida fornisce esempi per entrambi gli scenari.

Componenti chiave della richiesta per tipo di stream

Componente Stream web (gtag.js/GTM) Stream di app (Firebase)
Parametro URL dello stream di dati measurement_id firebase_app_id
Parametro URL API secret Obbligatorio Obbligatorio
Campo del corpo JSON dell'ID dispositivo client_id app_instance_id

Scegli la piattaforma che vuoi visualizzare in questa guida:

Questa scheda mostra le istruzioni per l'invio di eventi dal server che corrispondono all'attività utente in uno stream web taggato con gtag.js o Google Tag Manager. Tieni presente che queste richieste utilizzano measurement_id e client_id.

Prerequisiti

Per inviare eventi utilizzando Measurement Protocol, devi disporre di identificatori specifici dalla tua proprietà Google Analytics o dal tuo progetto Firebase.

API secret

Il api_secret viene utilizzato per autenticare le tue richieste. È fondamentale mantenere segreto questo segreto.

Per creare un nuovo secret:

  1. Vai a Google Analytics e naviga fino al tuo account e alla tua proprietà.
  2. Fai clic su Amministrazione in basso a sinistra.
  3. In Raccolta e modifica dei dati, fai clic su Stream di dati.
  4. Seleziona lo stream di dati web o app.
  5. Fai clic su API secret di Measurement Protocol.
  6. Fai clic su Crea.
  7. Inserisci un nickname per il secret e fai clic su Crea.
  8. Copia il valore secret.

ID misurazione

measurement_id identifica il tuo stream web. È diverso dal tuo ID stream. Di solito inizia con G-.

Per trovare l'ID misurazione:

  1. Vai a Google Analytics e naviga fino al tuo account e alla tua proprietà.
  2. Fai clic su Amministrazione in basso a sinistra.
  3. In Raccolta e modifica dei dati, fai clic su Stream di dati.
  4. Seleziona il tuo stream web.
  5. Copia l'ID misurazione dal riquadro Dettagli stream.

Formattazione della richiesta

Measurement Protocol di Google Analytics supporta solo le richieste HTTP POST.

Per inviare un evento, utilizza il seguente formato:

POST /mp/collect?measurement_id=<var>MEASUREMENT_ID</var>&api_secret=<var>API_SECRET</var> HTTP/1.1
HOST: www.google-analytics.com
Content-Type: application/json

PAYLOAD_DATA

Nei parametri di query dell'URL della richiesta devi fornire quanto segue (per informazioni dettagliate su come trovare o creare questi valori, consulta la sezione Prerequisiti):

  • api_secret: l'API secret per autenticare la richiesta.
  • measurement_id: l'ID misurazione associato al tuo stream web.

Devi fornire un corpo della richiesta nel formato corpo POST JSON per il Measurement Protocol. Ecco un esempio:

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

Devi fornire client_id nel corpo della richiesta per associare gli eventi a un'istanza specifica del client web. Per saperne di più su client_id e su come recuperarlo, consulta la documentazione di riferimento di client_id.

Anche se session_start è un nome evento riservato, la creazione di un nuovo session_id crea una nuova sessione senza la necessità di inviare session_start. Scopri come vengono conteggiate le sessioni.

Prova

Ecco un esempio che puoi utilizzare per inviare più eventi contemporaneamente. Questo esempio invia un evento tutorial_begin e un evento join_group al server Google Analytics, include informazioni geografiche utilizzando il campo user_location e include informazioni sul dispositivo utilizzando il campo device.

const measurementId = "MEASUREMENT_ID";
const apiSecret = "API_SECRET";

fetch(`https://www.google-analytics.com/mp/collect?measurement_id=${measurementId}&api_secret=${apiSecret}`, {
  method: "POST",
  headers: {
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    client_id: "CLIENT_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"
    }
  })
});

Override del timestamp

Measurement Protocol utilizza il timestamp primo che trova nel seguente elenco per ogni evento e proprietà utente nella richiesta:

  1. Il timestamp_micros dell'evento o della proprietà utente.
  2. Il timestamp_micros della richiesta.
  3. L'ora in cui Measurement Protocol riceve la richiesta.

L'esempio seguente invia un timestamp a livello di richiesta che si applica a tutti gli eventi e alle proprietà utente nella richiesta. Di conseguenza, Measurement Protocol assegna un timestamp di requestUnixEpochTimeInMicros agli eventi tutorial_begin e join_group e alla proprietà utente customer_tier.

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

L'esempio seguente invia un timestamp a livello di richiesta, un timestamp a livello di evento e un timestamp a livello di proprietà utente. Di conseguenza, il Measurement Protocol assegna i seguenti timestamp:

  • tutorialBeginUnixEpochTimeInMicros per l'evento tutorial_begin
  • customerTierUnixEpochTimeInMicros per la proprietà utente customer_tier
  • requestUnixEpochTimeInMicros per l'evento join_group e la proprietà utente 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"
    }
  }
}

Comportamento di convalida per eventi passati e proprietà utente

Gli eventi e le proprietà utente possono essere retrodatati fino a 72 ore. Se il valore di timestamp_micros è precedente a 72 ore fa, Measurement Protocol accetta o rifiuta l'evento o la proprietà utente nel seguente modo:

  • Se validation_behavior non è impostato o è impostato su RELAXED, il Measurement Protocol accetta l'evento o la proprietà utente, ma sostituisce il timestamp con quello di 72 ore prima.
  • Se validation_behavior è impostato su ENFORCE_RECOMMENDATIONS, Measurement Protocol rifiuta l'evento o la proprietà utente.

Gli eventi inviati utilizzando Measurement Protocol che devono essere uniti o elaborati insieme agli eventi raccolti dall'SDK Google Analytics for Firebase o da gtag.js devono essere ricevuti da Google Analytics entro 48 ore dal timestamp originale dell'evento lato client. Gli eventi ricevuti in un secondo momento potrebbero non essere elaborati come previsto, in particolare per scopi come l'attribuzione delle conversioni.

Limitazioni

Le seguenti limitazioni si applicano all'invio di eventi Measurement Protocol a Google Analytics:

  • Le richieste possono avere al massimo 25 eventi.
  • Gli eventi possono avere al massimo 25 parametri.
  • Gli eventi possono avere al massimo 25 proprietà utente.
  • I nomi delle proprietà utente non possono superare i 24 caratteri.
  • I valori delle proprietà utente non possono superare i 36 caratteri.
  • I nomi degli eventi devono avere una lunghezza massima di 40 caratteri, possono contenere solo caratteri alfanumerici e trattini bassi e devono iniziare con un carattere alfabetico.
  • I nomi dei parametri, inclusi i parametri articolo, non devono superare i 40 caratteri, possono contenere solo caratteri alfanumerici e trattini bassi e devono iniziare con un carattere alfabetico.
  • I valori dei parametri, inclusi i valori parametro articolo, non devono superare i 100 caratteri per una proprietà Google Analytics standard e i 500 caratteri per una proprietà Google Analytics 360.

    Questo limite non si applica ai parametri session_id e session_number quando i loro valori vengono forniti dalle variabili integrate ID sessione Analytics e Numero sessione Analytics in Google Tag Manager.

  • I parametri articolo possono avere un massimo di 10 parametri personalizzati.

  • Il corpo del post deve avere dimensioni inferiori a 130 kB.

  • Gli eventi Measurement Protocol per app inviati a Google Analytics non vengono utilizzati per creare segmenti di pubblico della rete di ricerca in Google Ads per gli utenti di app.

  • Alcuni nomi di eventi, parametri e proprietà utente sono riservati e non possono essere utilizzati. Per maggiori dettagli, consulta la sezione Nomi riservati.

Nomi riservati

Measurement Protocol ha diversi nomi riservati che non possono essere utilizzati per eventi, parametri o proprietà utente.

I seguenti nomi di eventi sono punti di confusione comuni:

Per i requisiti aggiuntivi di ogni caso d'uso, consulta Casi d'uso comuni.