有問題可以在文章底部留言

GA4 Measurement Protocol API 完整教學

Google Analytics Haran 4年前 (2022-11-14) 5867次瀏覽 2條留言

更新時間:2026年6月4日

本篇將介紹GA4中的重要功能之一:Measurement Protocol API。

透過 Measurement Protocol API,你可以將離線資料、CRM資料或伺服器端事件直接傳送至GA4,突破瀏覽器與App SDK的限制,實現更完整的數據蒐集與分析。

什麼是Measurement Protocol API?

Measurement Protocol API(簡稱MP協定)是一套由GA4提供的 API,可透過HTTP Request將事件資料直接傳送至GA4伺服器。

藉由MP協定,開發人員可以:

  • 串聯線上與線下行為資料
  • 同時衡量客戶端(Client-side)與伺服器端(Server-side)互動
  • 傳送離線轉換事件
  • 從不支援自動追蹤功能的裝置傳送事件(例如資訊看板、智慧手錶、IoT 裝置等)

例如:

  • 客服電話成交
  • 門市消費紀錄
  • CRM 會員資料
  • ERP 訂單資訊

都可以透過MP協定回傳至GA4。

Measurement Protocol API 的組成

Measurement Protocol API 主要由兩個部分組成:

  • 運送(Transport)
  • 酬載(Payload)

如下圖:

GA4 Measurement Protocol API 完整教學

運送(查詢參數)

官方文件有時也稱為「查詢參數」,決定資料要傳送到哪裡,以及使用哪些驗證資訊。

範例:

https://www.google-analytics.com/mp/collect?measurement_id=${measurement_id}&api_secret=${api_secret}

其中:

參數名稱 說明
api_secret 必填。Measurement Protocol API 密鑰
firebase_app_id App 資料串流的 Firebase App ID
measurement_id 網頁資料串流的評估 ID

 

酬載(訊息內文) 

酬載(Payload)也就是 HTTP POST Request 的內容。

真正要傳送到 GA4 的事件資料都放在這裡。

主要參數如下:

金鑰 類型 說明

app_instance_id

string 必填。用於識別 Firebase 應用程式的特定安裝項目,這個值必須透過 Firebase SDK 擷取。

這與網站 client_id 不同

client_id

string 必填。唯一識別網路用戶端的使用者執行個體。

user_id

string 選用,使用者的專屬 ID。如要進一步瞭解這個 ID,請參閱 User-ID 進行跨平台分析

user_id 只能包含 utf-8 字元。

timestamp_micros

number 選用,與事件建立關聯的 Unix 時間戳記 (以微秒為單位)。此設定只能用來記錄過去發生的事件。這個值可以透過 user_property 或事件時間戳記覆寫。根據資源的時區,活動最多可以回溯至 3 天。

這個值應以 micro 秒為單位,而非 毫秒秒。

user_properties

object 選用,評估的使用者屬性。詳情請參閱使用者屬性。

non_personalized_ads

boolean 選用,設為 true 表示這些事件不應用於個人化廣告。

events[]

array 必填。事件項目陣列。每項要求最多可以傳送 25 個事件。請參閱所有有效事件的事件參考資料。

events[].name

string 必填。事件的名稱。查看所有選項的事件參考資料。

events[].params

object 選用,事件的參數。請參閱事件,瞭解每個事件的建議參數。

Measurement Protocol AP的限制

使用 Measurement Protocol API 時需注意以下限制:

項目 限制
每次請求事件數 25 個
每個事件參數數量 25 個
每個事件使用者屬性數量 25 個
使用者屬性名稱長度 24 個字元
使用者屬性值長度 36 個字元
事件名稱長度 40 個字元
參數名稱長度 40 個字元
參數值長度 100 個字元
Item 自訂參數數量 10 個
Payload 大小 130 KB

此外:

  • 事件名稱只能包含英文字母、數字與底線
  • 必須以英文字母開頭

Measurement Protocol與Measurement Protocol API的差異

許多人會發現官方文件有時寫Measurement Protocol ,有時則寫Measurement Protocol API ,其實兩者指的是不同版本。

項目 Universal Analytics GA4
名稱 Measurement Protocol Measurement Protocol API
API Secret
最大 Payload 16KB 130KB
HTTP 方法 GET、POST POST
安全性 較低 較高

目前Google已逐漸將GA4文件統一簡稱為Measurement Protocol ,因此後續看到Measurement Protocol,通常都是指GA4的 MP 協定。

Measurement Protocol API 實作範例

假設要傳送 tutorial_begin 事件。

GA4中創建Measurement Protocol API密鑰

Measurement Protocol API的設定的位置在資料串流位置。

在GA4中点击「管理」——「資源設定」——「資料收集和修改」——「資料串流」,然后打开網頁串流詳情,點擊「Measurement Protocol API 密鑰」——「建立」,暱稱命名為“CRM”:

GA4 Measurement Protocol API 完整教學

就可以獲取密鑰值:

GA4 Measurement Protocol API 完整教學

  • 密鑰值: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"
   }
 ]
}

 

 

驗證事件是否正確

當 MP 協定收到請求時,即使資料有誤,通常仍會回傳: 2xx 成功狀態碼。如果酬載資料格式錯誤、酬載中的資料不正確或未由 Google Analytics (分析) 處理,Measurement Protocol 則不會傳回錯誤代碼。

GA4也提供了一個驗證工具:https://ga-dev-tools.appspot.com/ga4-event-builder/,接要傳送的資料填進入:

GA4 Measurement Protocol API 完整教學

然後就可以在下面看到RequestInfo(運送)和Payload(酬載):GA4 Measurement Protocol API 完整教學

點擊VALIDATE EVENT去驗證:

GA4 Measurement Protocol API 完整教學

可以看到Event is valid,表示驗證成功。

驗證資料是否進入GA4

那麼可以返回到GA4中的即時報表中,可以在事件計數裡看到事件 tutorial_begin,即表示資料已成功寫入 GA4。

GA4 Measurement Protocol API 完整教學

 

 

常見問題FAQ

被劃分到Unassigned管道

有些人可能留意到,通過Measurement Protocol發送的資料都被劃分到Unassigned管道,如:

GA4 Measurement Protocol API 完整教學

或工作階段來源、媒介,廣告顯示為(not set)

有兩個原因:

  • 缺少ga_session_id參數,就會被劃分到Unassigned管道,ga_session_id存儲在 Cookie _ga_<container-id>
  • 時間間隔超過3天:GA4的MP協定最多只能回補3 天內發生的事件,超過 3 天的資料即使成功送達,也可能無法正確建立工作階段與流量歸因

 

GA4記錄到的Client ID是不完整

你發送的: 1103448851.1680533058
GA4記錄到的: 1103448851.1680533
可能是發送的client ID是number格式,而實際上Client ID是string的才對。

如果您在操作上仍有任何疑問,歡迎留言交流,或加入:Google Analytics 4交流社團發問
Like (0)
發佈我的留言
取消留言
表情 贴图 加粗 删除线 居中 斜体

Hi,*为發佈留言必須填寫。

  • 顯示名稱*
  • 電子郵件地址*
  • 個人網站網址
(2)个小伙伴在留言
  1. 你好,首先感謝你的很多文章,都非常詳細且有幫助。 想問下,Measurement Protocol API網路上很少文章,是什麼原因還是其他替代方案更好用?
    Jason002025-11-25 16:30 Reply Windows 10 | Chrome 142.0.0.0
    • 主要是使用技術門檻與比較高,需要大量開發
      Haran2025-11-25 17:02 Reply Mac OS X | Chrome 142.0.0.0