文章目錄
這一節來講講GA4中的Measurement Protocol API。
什麼是Measurement Protocol API?
Measurement Protocol API簡稱MP協議,它可以透過 HTTP 要求將離線資料直接傳送至GA4伺服器,藉此提升網站串流和應用程式串流的成效,通過Measurement Protocol API,開發人員可以:
- 連結線上和離線行為
 - 一併評估用戶端和伺服器端的互動
 - 傳送非標準使用者互動的事件 (例如離線轉換)
 - 從不支援自動收集功能的應用程式與應用程式傳送事件 (例如資訊站、手錶等)
 
Measurement Protocol API包含兩個部分,如下圖:
運送(查詢參數)
運送,官方幫助裡有時候也叫查詢參數,就是傳送資料的位置和方式,如https://www.google-analytics.com/mp/collect?measurement_id=${measurement_id}&api_secret=${api_secret},一定要加上密鑰值和評估ID
| 參數名稱 | 說明 | 
|---|---|
必填。透過 Google Analytics (分析) 使用者介面產生的 API Secret。如要建立新密鑰,請在 Google Analytics (分析) UI 中前往以下位置: 管理員 > 資料串流 > 選擇串流 > Measurement Protocol > 建立 因此,建議您只在貴機構中公開這些資料。如果您在用戶端部署 Measurement Protocol,應定期輪替 api_secret,以避免過度處理。 | 
|
| 必填。Firebase 應用程式 ID。Firebase 應用程式的 ID。可在 Firebase 控制台中找到: 專案設定 > 一般 > 您的應用程式 > 應用程式 ID  | 
|
| 評估 ID。資料串流的 ID。Google Analytics (分析) UI 位於: 管理員 > 資料串流 | 選擇串流 > 評估 ID  | 
酬載(訊息內文)
酬載,官方幫助裡有時候也叫訊息內文,就是傳送你的資料,關於酬載各參數的解釋函義如下:
| 金鑰 | 類型 | 說明 | 
|---|---|---|
string | 
必填。用於識別 Firebase 應用程式的特定安裝項目,這個值必須透過 Firebase SDK 擷取。
 這與網站   | 
|
string | 
必填。唯一識別網路用戶端的使用者執行個體。 | |
string | 
選用,使用者的專屬 ID。如要進一步瞭解這個 ID,請參閱 User-ID 進行跨平台分析。
 
  | 
|
number | 
選用,與事件建立關聯的 Unix 時間戳記 (以微秒為單位)。此設定只能用來記錄過去發生的事件。這個值可以透過 user_property 或事件時間戳記覆寫。根據資源的時區,活動最多可以回溯至 3 天。
這個值應以 micro 秒為單位,而非 毫秒秒。  | 
|
object | 
選用,評估的使用者屬性。詳情請參閱使用者屬性。 | |
boolean | 
選用,設為 true 表示這些事件不應用於個人化廣告。 | 
|
array | 
必填。事件項目陣列。每項要求最多可以傳送 25 個事件。請參閱所有有效事件的事件參考資料。 | |
string | 
必填。事件的名稱。查看所有選項的事件參考資料。 | |
object | 
選用,事件的參數。請參閱事件,瞭解每個事件的建議參數。 | 
酬載有如下限制:
- 要求最多可有 25 個事件。
 - 事件最多只能有 25 個參數。
 - 事件最多只能有 25 個使用者屬性。
 - 使用者屬性的名稱不能超過 24 個半形字元。
 - 使用者屬性的值不能超過 36 個半形字元。
 - 事件名稱不能超過 40 個字元,只能使用英文字母、數字和底線,且必須以字母為開頭。
 - 參數名稱 (包括項目參數) 不能超過 40 個字元,只能使用英文字母、數字和底線,且必須以字母為開頭。
 - 參數值 (包括項目參數值) 不能超過 100 個字元。
 - 項目參數最多只能有 10 個自訂參數。
 - 訊息內文必須小於 130 KB。
 
Measurement Protocol和Measurement Protocol API的區別
Measurement Protocol是通用版GA的叫法,Measurement Protocol API是GA4中叫法,Measurement Protocol API是Measurement Protocol是升級版,目前GA4中的Measurement Protocol API有如下優勢:
- 密鑰值:有密鑰值,有效減少機器流量
 - 更大的酬載:GA4的Measurement Protocol最大酬載是130KB,通用版的Measurement Protocol最大酬載是16KB
 - GA4 的 Measurement Protocol API 僅支援 
POST要求。 
但現在GA4中逐漸直接用Measurement Protocol取代Measurement Protocol API,後面文章中的Measurement Protocol指代Measurement Protocol API。
Measurement Protocol API 案例演示
假設要傳送 tutorial_begin 事件。
GA4中創建Measurement Protocol密鑰
Measurement Protocol的設定的位置在資料串流位置。
在GA4中点击「管理」——「資源設定」——「資料收集和修改」——「資料串流」,然后打开網頁串流詳情,點擊「Measurement Protocol API 密鑰」——「建立」,暱稱命名為“CRM”:
就可以獲取密鑰值:
- 
密鑰值:nOrc0q9_RiqPsqsjBxmj9A
 - 評估ID:G-3FK847CLRT (在 GA4 使用者介面中找到: 管理 > 資料串流 | 選擇串流 > 評估 ID)
 
傳送tutorial_begin事件
如要傳送 tutorial_begin 事件,從前端和伺服器發送的程式是不一樣的。
<span style="font-size: 10pt;">const measurement_id = `G-3FK847CLRT`;
const api_secret = `nOrc0q9_RiqPsqsjBxmj9A`;
fetch(`https://www.google-analytics.com/mp/collect?measurement_id=${measurement_id}&api_secret=${api_secret}`, {
  method: "POST",
  body: JSON.stringify({
    client_id: '123.456',
    events: [{
      name: 'tutorial_begin',
      params: {},
    }]
  })
});
</span>
傳送資料的位置:https://www.google-analytics.com/mp/collect?measurement_id=G-3FK847CLRT&api_secret=nOrc0q9_RiqPsqsjBxmj9A
Payload裡:
{
"client_id":"123.456"
"non_personalized_ads":false
"events":[
   {
      "name":"tutorial_begin"
   }
 ]
}
驗證事件
接下來就是驗證這個事件:
如果收到 HTTP 要求,Measurement Protocol 一律會傳回 2xx 狀態碼。如果酬載資料格式錯誤、酬載中的資料不正確或未由 Google Analytics (分析) 處理,Measurement Protocol 則不會傳回錯誤代碼。
GA4也提供了一個驗證工具:https://ga-dev-tools.appspot.com/ga4-event-builder/,接要傳送的資料填進入:
 然後就可以在下面看到RequestInfo(運送)和Payload(酬載):
點擊VALIDATE EVENT去驗證:

可以看到Event is valid,表示驗證成功。
驗證導入狀態
那麼可以返回到GA4中的即時報表中,可以在事件計數裡看到事件 tutorial_begin
常見問題:MP協議發送的事件歸因錯誤
如果你按照官方幫助去發送MP資料,那麼在GA4中看數據的時候會發現,MP協議傳送的的事件都劃分到not set,都歸因錯誤。
這是因為缺少engagement_time_msec 和 session_id,雖然這兩個參數是可選的,但如果要在報告中準確歸因,那麼就是必須的。
如果還出現not set,那就是時間問題,GA4只能處理3天內的數據,也就是超過3天的數據,在發送過去,是歸因不了的。
延伸閱讀:GA4 Measurement Protocol 常見問題(2023)








