Measurement Protocol 是甚麼? 如何透過GA4的Measurement Protocol在特定無法埋設GA4代碼的情境等,可以發送指定的事件? 這一篇想要透過Measurement Protocol – MP通訊協定,來進行GA4的事件發送。
Measurement Protocol 基本上就是像https請求的方式,對GA4的伺服器進行傳遞「瀏覽內容、電商資訊、推薦來源等」。另外也可以透過Python,來實作一個MP的事件發送工具,我的網站很早就蓋好了這工具,也歡迎你直接使用 :)。
章節內容
GA4是如何收到事件

從這張圖最上方可以看到,發送端有「WebClient, Server, Mobile Client」。橫向是講解Client如何與Server溝通,縱向為講解三個發送端分別帶入甚麼資料,給GA4伺服器,後續GA4接收終端,再分別將資料分派給GA、DATA API、BQ。
圖片來源:GA4官方文件
Measurement Protocol 實例
這次會透過官方提供的–Event Builder工具,來進行Measurment 的事件發送操作。文章後面我也會展示PYTHON怎麼打造一個Measurement的工具。

Measurement Protocol 必備資料
使用Measurement Protocol – MP時,有4個必備「ga_session_id, client_id, event_timestamp, api_secret, measurment_id」。
- ga_session_id:為判別使用者的來源/媒介,他會接續一開始使用者進入時,被GA4設定好的ga_session_id,如果缺少那來源媒介就會not set。
- client_id:GA4用於記錄使用者的判別方式。這一個資料可以從BigQuery中的user_pseudo_id 撈取,也可以透過指定JS在前端、GTM中直接撈取。
- event_timestamp:事件時間戳,為時間單位標示方式的一種,經常出現在程式語言、BigQuery也會出現,用於給機器讀取時間格式資料。這一個資料也得從BigQuery進行撈取。另外如果你想要將時間戳轉換成人類易懂的時間表示,你也可以上網搜尋「timestamp convert」。
- api_secret:你可以從GA4「設定」 > 「資料串流」> 「你要發送的資源」> 「Measurement Protocol 密鑰」(下方圖一) > 「申請一組API KEY」 (下方圖二) 。


- measurment_id:則是你的GA4資源代碼。
BigQuery撈取session_id

透過BigQuery的查詢,可以在這邊看到Client_id;也就是對應BigQuery的user_pseudo_id。ga_session_id, event_stamp也可以在BigQuery中拿到。
Event_Builder設定
打開Event_builder填入以上必要的資料。

本次範例以share事件作為範例,直接將這個事件傳入GA4。另外注意timestamp_micros會攸關事件的順序。例如page_view不可能發生的比session_start還要早。所以務必對齊事件的發生順序;把傳送事件timestampe設定 > 前一個事件的timestampe。資料透過MP傳入的,就會藉於兩個事件的順序當中。

Session_id則是在事件層級中維度填入。

確認GA4即時報表

如果在Event Build事件發送出去有看到「Event is valid」,並且有發送至GA4,就可以前往GA4的即時報表查看該事件。

你也可以看到裡面自帶一個ga_session的參數。
利用Python製作MP事件工具
透過前端請求的API,我們可以直接利用這個cURL – 來進行PYTYON的請求。目前的請求方式都是使用post。簡單來說,就是在請求的時候,帶上一些資料,例如網頁標題、購買產品名、推薦來源等參數。
https://analytics.google.com/g/collect?


以下也整理一些常見的參數,當然你也可以直接透過瀏覽器的f12,看一下GA4還有哪一些參數能用,進而帶入到自己寫的python程式中。
- tid = gid
- cid = client_id
- dl = page_location
- dt = page_title
- sr = screen resolution
- cu = currency (電子商務事件)
- en = event_name
- epn.value = event_value
- pr1: product1 price
- ep.transaction_id = transasionID
- shippint = shipping
注意,下方程式碼由於放在網路關係,因此沒有將dict做好分類;程式碼無經過排版。實際做的時候,其實可以讓這邊的資料美化一些。但由於這個範例所夾帶的都是大量數據參數,所以你可能會覺得看起來非常凌亂,但仔細看他還是會有規則的。
import requests as req
header = {'path': f'/g/collect?v=2&tid={gid}&cid={cid1},{cid2}&sr=1829x1029&uaa=x86&uab=64&uapv=15.0.0&uaw=0&_s=5&cu={currency}&sid={sid}&seg=1&en={event}&_c=1&_ee=1&pr1={total}&quantity={quantity}&epn.value={total}&_et=380&dl={page_location}&pr1={name}', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36'}
data={ 'tid': f'{gid}', 'cid': f'{cid1},{cid2}', 'dl':f'{page_location}', 'dt': f'{page_title}',}
gareq = req.post(f'https://analytics.google.com/g/collect?v=2&tid={gid}&cid={cid1}.{cid2}&sr=1829x1029&uaa=x86&uab=64&uamb=0&uam=&uap=Windows&uaw=0&_s=5&cu={currency}&sid={sid}&seg=1&epn.value={total}&en={event}&_c=1&_ee=1&dl={page_location}&pr1={name}',data=data,header=header)
總結

隔天就可以看到透過Measurment Protocol發送的事件出現在GA4。不管你是透過ga提供的event_builder來進行事件發送,或者是透過Python直接本地事件發送。不外乎一個原則就是帶參數,告訴GA4這個事件是甚麼、來自哪裡….等。
唯一不同的是PYTHON進行發送不需要apikey,只需要MeasurmentID。務必使用python的時候,也先確認好自己帶的參數正不正確,以免將GA4的資料弄髒。
更多文章
Looker Studio
- Looker Studio教學|Looker Studio 公式|電商指標
- Looker Studio教學|5個Looker Studio 混和資料功能
- Looker Studio 教學|指標維度是甚麼
- Looker Studio 教學|數據工程師帶你從0學Looker Studio
- Looker Studio教學|導入臉書廣告數據|Adveronix 免費工具
GA4
- GA4教學| 數據保留多久? 延長GA4數據保留時間?
- GA4教學|Measurment Protocol 實例
- GA4教學|GA4 如果有Not Set該怎麼辦
- GA4教學|GA4閾值門檻|GA4資料不正確
- GA4教學|GA4常見來源判定順序
- GA4教學|如何處理GA4重複事件
- GA4教學|自訂探索報表使用解說介紹|洞察來源unassigned
- GA4教學|GA4報表出現Unassigned如何解決
- GA4教學|排除金物流網域|Referrer必備知識
- GA4教學| 一定要知道的GA4資料設定
GTM
- GTM教學|GTM觸發條件常失敗
- GTM教學|設定 Consent Mode 同意聲明模式
- GTM教學|GTM問題總整理
- GTM教學|設定臉書像素|常見Meta問題總整理
- GTM教學|WordPress表單驗證事件|GA4追蹤教學
- GTM教學|手動設定GCP SERVER伺服器配置
- GTM教學|臉書像素重複事件怎麼解決
- GTM教學|GTM常用變數中文解說
- GTM教學|伺服器追蹤|自訂網域追蹤
- GTM教學|伺服器追蹤教學4|Http解說
- GTM教學|追蹤來自部落格轉換成效
- GTM教學|伺服器追蹤教學3 | Facebook轉換Capi設定
- GTM教學|伺服器追蹤教學2 | GA4事件設定
- GTM教學|伺服器追蹤教學 | 伺服器配置設定
- GTM教學|Tiktok廣告電子商務埋設大全3|廣告代碼埋設
- GTM教學|Tiktok廣告電商埋設2
- GTM教學|廣告電商埋設1|電商必要參數抓取
- GTM教學|電商埋設5|GA4電商埋設
- GTM教學|電子商務埋設大全4|GA4電子商務完整埋設
- GTM教學|GTM電商埋設3|抓取ItemName
- GTM教學|GTM電商埋設2|抓取ItemID
- GTM教學|電商埋設1|抓取Value
- GTM教學|提升廣告成效|Adblocker阻擋原理
- GTM教學|GTAG部署方式三大整理
- GTM教學|Google Ads 強轉換 | 購買金額
- GTM教學|自訂網址追蹤|不是只有「UTM」才能做網址追蹤
- GTM教學|AutoEvent追蹤使用者點選的圖片
- GTM教學|CSS Selector抓取表格的值
- GTM教學|了解網站熱門頁面|GTM追蹤點擊事件
- GTM教學|埋設事件|確認GA4有無收到事件
- GTM教學|自訂網址追蹤|不是只有「UTM」才能做網址追蹤
- GTM教學|3分鐘檢查GA4事件重複錯誤
- GTM教學|GA4電子商務事件埋設範本
- GTM教學|DOM抓取電商中的轉換價值
- GTM教學|新的GTM容器一定要做這設定
- GTM教學|設定GA4事件大全
- GTM教學|推薦GTM範本|全新DataLayer寫入方式
- GTM教學|網站計時器埋設|抓出使用者進站停留時間
- GTM教學|如何辨別是否網站為SPA站
- GTM教學|名單型網站追蹤|Thankyou Page 填寫表單事件
- GTM教學|網站通話追蹤|臉書私訊、加LINE
- GTM教學|自訂網址追蹤|不是只有「UTM」才能做網址追蹤
BigQuery
- BigQuery教學|BigQuery預測GA4數據
- BigQuery教學|視覺化報表怎麼製作
- BigQuery教學|基礎必備語法|免費BigQuery資料導入
- BigQuery教學|串接BIgQuery | BIgQuery費用