このガイドでは、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 では、リクエスト内の各イベントについて、次のリストで最初に見つかったタイムスタンプが使用されます。
- イベントの
timestamp_micros
。 - リクエストの
timestamp_micros
。 - 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 広告で検索ユーザーは入力されません。
各ユースケースの追加要件については、一般的なユースケースをご覧ください。