Measurement Protocol イベントを Google アナリティクスに送信する

このガイドでは、Google アナリティクス Measurement Protocol のウェブとアプリのストリーム イベントを Google アナリティクス サーバーに送信し、Measurement Protocol イベントを Google アナリティクスのレポートで確認できるようにする方法を説明します。

このガイドで説明を希望するプラットフォームを選択してください。

リクエストを整形する

Google アナリティクス Measurement Protocol でサポートされるのは、HTTP POST リクエストのみです。

イベントを送信するには、次の形式を使用してください。

POST /mp/collect HTTP/1.1
HOST: www.google-analytics.com
Content-Type: application/json

PAYLOAD_DATA

リクエスト URL には、必ず次の情報を含めてください。

  • api_secret: Google アナリティクス管理画面で生成される API Secret

    新しい Secret を作成するには、[管理] > [データの収集と修正] > [データ ストリーム] > ストリームを選択 > [Measurement Protocol API シークレット] > [作成] の順にクリックします。

  • measurement_id: ストリームに関連付けられた測定 ID。この ID は、Google アナリティクス管理画面の [管理] > [データ ストリーム] > ストリームを選択 > [測定 ID] で確認できます。

    measurement_id は、ストリーム ID ではありません。

Measurement Protocol では、JSON POST 本文形式でリクエスト本文を指定する必要があります。次の例をご覧ください。

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

session_start予約済みのイベント名ですが、新しい session_id を作成すると、session_start を送信しなくても新たなセッションを作成できます。セッション数のカウント方法を理解しましょう。

試してみる

複数のイベントを一度に送信する例を次に示します。この例では、tutorial_begin イベントと join_group イベントを Google アナリティクス サーバーに送信し、user_location フィールドを使用して地理情報を含め、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",
  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"
    }
  })
});

タイムスタンプをオーバーライド

Measurement Protocol では、リクエスト内の各イベントについて、次のリストで最初に見つかったタイムスタンプが使用されます。

  1. イベントの timestamp_micros
  2. リクエストの timestamp_micros
  3. Measurement Protocol がリクエストを受信した時刻。

次の例では、リクエスト内のすべてのイベントに適用されるリクエスト レベルのタイムスタンプを送信します。その結果、Measurement Protocol では tutorial_begin イベントと join_group イベントの両方に requestUnixEpochTimeInMicros のタイムスタンプが割り当てられます。

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

次の例では、リクエスト レベルのタイムスタンプとイベント レベルのタイムスタンプの両方を送信します。その結果、Measurement Protocol は tutorial_begin イベントに tutorialBeginUnixEpochTimeInMicros のタイムスタンプを割り当て、join_group イベントに requestUnixEpochTimeInMicros のタイムスタンプを割り当てます。

{
  "timestamp_micros": requestUnixEpochTimeInMicros,
  "events": [
    {
      "name": "tutorial_begin",
      "timestamp_micros": tutorialBeginUnixEpochTimeInMicros
    },
    {
      "name": "join_group",
      "params": {
        "group_id": "G_12345",
      }
    }
  ]
}

制限事項

Measurement Protocol イベントを Google アナリティクスに送信する際には、次の制限が適用されます。

  • リクエスト内で指定できるイベントは 25 個までです。
  • イベント内で指定できるパラメータは 25 個までです。
  • イベント内で指定できるユーザー プロパティは 25 個までです。
  • ユーザー プロパティ名は半角 24 文字(全角 12 文字)以下にする必要があります。
  • ユーザー プロパティ値は 36 文字以下で指定する必要があります。
  • イベント名は半角 40 文字以下にして、先頭を英字にする必要があります。使用できる文字は英数字とアンダースコアのみです。
  • アイテム パラメータなどのパラメータ名は半角 40 文字以下にして、先頭を英字にする必要があります。使用できる文字は英数字とアンダースコアのみです。
  • アイテム パラメータなどのパラメータ値は、標準の Google アナリティクス プロパティの場合は 100 文字以下、Google アナリティクス 360 プロパティの場合は 500 文字以下にする必要があります。
  • アイテム パラメータに指定できるカスタム パラメータの数は 10 個までです。
  • POST 本文は 130 KB 未満にする必要があります。
  • Google アナリティクスに送信されるアプリの Measurement Protocol イベントでは、アプリユーザーについて、Google 広告で検索ユーザーは入力されません。

各ユースケースの追加要件については、一般的なユースケースをご覧ください。