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

GA4如何追蹤EDM郵件開啟率?

Google Analytics Haran 2年前 (2024-06-04) 2751次瀏覽 0條留言

GA4只能自動記錄使用者進入網站後的行為。由於郵件開啟時若沒有點擊連結,網站上的GA4追蹤碼就不會執行,因此GA4無法直接得知這封郵件是否已被開啟。

本文將說明如何運用GA4 Measurement Protocol搭配Cloudflare Worker 實作郵件開啟追蹤,並釐清它與郵件UTM、GA4工作階段及預設管道群組之間的差異。

什麼是郵件開啟追蹤?

郵件開啟追蹤(Email Open Tracking)通常會在HTML郵件中嵌入一張不可見的1×1像素圖片,也稱為追蹤像素(Tracking Pixel)

<img src="https://example.com/pixel.gif" width="1" height="1" alt="">

當郵件用戶端或圖片代理伺服器載入該圖片時,會向圖片網址發送請求。伺服器收到請求後,即可將其記錄為一次郵件開啟。

需特別留意:此方式記錄的是圖片請求,不一定等同於收件人確實閱讀郵件。Apple郵件隱私保護(Mail Privacy Protection)、Gmail 圖片代理及郵件安全掃描工具,都可能預先請求圖片,導致開啟數據被高估。

 

為什麼要使用GA4 Measurement Protocol?

瀏覽器中的GA4追蹤碼會向以下的網址發送請求:

https://www.google-analytics.com/g/collect

理論上,複製這類請求並放進郵件圖片網址,技術上可能讓GA4收到資料,但不建議這樣做

原因在於 g/collect屬於GA4追蹤碼的瀏覽器傳輸機制,通常依賴瀏覽器Cookie、工作階段 ID、頁面網址、參照網址(Referrer)及其他內部參數。郵件用戶端並非你的網站頁面,不會執行 gtag.js,也通常沒有您網站的 _ga Cookie。

Measurement Protocol則是GA4官方提供的API,專門用來發送伺服器端及非標準網頁互動事件。它作為事件記錄,不會產生網站工作階段,也不會干擾原有的工作階段。

郵件開啟追蹤的整體架構

Measurement Protocol需要由受控的伺服器端環境發送請求。本文採用Cloudflare Worker作為中介伺服器。

具體流程如下:

  • 在郵件HTML中加入透明的1×1追蹤像素;
  • 郵件用戶端或圖片代理載入該像素;
  • Cloudflare Worker收到圖片請求;
  • Cloudflare Worker讀取請求中的郵件活動參數;
  • Cloudflare Worker將請求轉換為Measurement Protocol格式,並發送email_open事件至GA4;
  • Cloudflare Worker回傳透明GIF,完成圖片載入。

⚠️ 安全性提醒:此方案為無狀態設計,理論上任何人只要知道你的Worker網址與參數格式,都可以發送請求。建議的因應方式是在追蹤像素網址中加入簽章(signature)金鑰驗證機制,確保只有Cloudflare Worker驗證通過的請求才會發送資料。

實作步驟

步驟一:建立GA4Measurement Protocol API密鑰

在GA4中点击「管理」——「資源設定」——「資料收集和修改」——「資料串流」—— 點擊你的網頁串流 ——「Measurement Protocol API 密鑰」——「建立」,暱稱命名為“EDM Tracking”:

GA4如何追蹤EDM郵件開啟率?

完成後即可獲得:

  • 密鑰值:kzHJFDslRO2Ry-eiayrCYA
  • 評估ID:G-3FK847CLRT (在GA4使用者介面中找到: 管理 > 資料串流 | 選擇串流 > 評估 ID)

 

步驟二:建立Cloudflare Worker與環境變數

在Cloudflare Dashboard中建立 Worker。

Cloudflare官方建議使用Secret變數來儲存密碼、API Key及其他敏感資訊。

因此,在Cloudflare Worker中點擊「設定」→「新增變數」,加入以下兩個值:

名稱 類型
GA_MEASUREMENT_ID 變數(Variable) 你的 G-XXXXXXXXXX
GA_API_SECRET 機密(Secret) 剛才建立的Measurement Protocol API密鑰

注意:GA_API_SECRET 必須選擇 Secret 類型,而非一般的 Variable。

建立Worker後,會獲得一組Worker網址,例如:

https://****.haran-huang.workers.dev

 

步驟三:寫入Worker像素追蹤程式碼

進入「Edit code」,貼上以下程式碼:

這段程式的作用是向GA4發送email_open 事件,回傳透明的1×1 gif,讓郵件用戶端能正常載入圖片。

 

步驟四:在郵件HTML中加入1×1像素

Worker 網址範例:

https://***.haran-huang.workers.dev

可在郵件HTML底部加入:

<img src="https://***.haran-huang.workers.dev?cid=123456.789012&campaign_id=newsletter_20260921" width="1" height="1" style="display:none;" />

參數說明:

參數 說明
cid 必要參數。建議使用真實的 client_id;若無法取得,可為每位收件人生成不同的隨機/偽匿名 cid
campaign_id 郵件活動識別碼,例如 newsletter_20260921

HTML 編碼提醒:在HTML屬性中,參數之間的 & 建議寫成 &amp;,而非直接使用 &,以確保符合 HTML 規範。

 

步驟五:發送測試郵件並驗證

先向自己的信箱發送測試郵件,再開啟郵件。

檢查順序:

  • 確認郵件用戶端沒有顯示破圖(圖片載入失敗)
  • 查看 Cloudflare Worker 日誌(Logs),確認 Worker 有收到 GET 請求
  • 在 GA4 的「即時報表」或事件報表中,查看 email_open 事件是否出現

如何在GA4中查看email_open?

你可以先在GA4的事件報表中查看 email_open 事件。

如果需要按郵件活動進行拆分分析,應建立自訂維度來註冊事件參數 email_campaign_id,之後即可在報表中依活動別進行區隔與比較。

為什麼email_open不會歸類為Email管道?

GA4 的預設管道群組主要依據網站工作階段的source和medium進行識別。

例如:當使用者帶著 utm_source=email 和 utm_medium=email 進入網站時,GA4才會將該工作階段歸類為 Email 管道。

而透過 Measurement Protocol 發送的事件,實際上並沒有「造訪」網站,因此預設不會產生工作階段,自然也就不會歸類為 Email 管道——實際上這些事件會被歸類到Unassigned

如何用UTM追蹤郵件點擊後的Email工作階段?

郵件開啟郵件點擊是兩種不同的行為。

郵件中的連結應另外加上UTM參數:

https://www.haranhuang.com/?utm_source=email&utm_medium=email&utm_campaign=newsletter_20260921

這樣可以獲得兩類不同的數據:

使用者行為 追蹤方式 GA4 中的主要數據口徑
開啟郵件但未點擊 Measurement Protocol email_open 事件
點擊郵件連結並進入網站 UTM 參數 Email 管道工作階段、使用者、轉換


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

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

  • 顯示名稱*
  • 電子郵件地址*
  • 個人網站網址