欢迎访问我的博客,有问题可以在任意文章底部留言评论

如何使用 GA4 Measurement Protocol 追踪邮件打开?

Google Analytics 4 Haran 10年前 (2016-08-21) 9929次浏览 2个评论

更新时间:2026年8月13日

GA4只能自动记录用户进入网站后的行为。由于邮件打开没有点击链接时,网站上的GA4跟踪代码不会执行,所以GA4无法直接知道这封邮件是否被打开。

本文会说明如何使用GA4 Measurement Protocol和Cloudflare Worker实现邮件打开追踪,并解释它与邮件UTM、GA4会话及默认渠道组之间的区别。

什么是邮件打开追踪?

邮件打开追踪通常会在HTML邮件中嵌入一张不可见的1×1 Pixel图片,也称为Tracking Pixel。

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

邮件客户端或图片代理加载该图片时,会向图片地址发送请求。服务器收到请求后,即可将其记录为一次邮件打开。

需要注意:这记录的是图片请求,不一定等于收件人真实阅读邮件。Apple Mail Privacy Protection、Gmail图片代理及邮件安全扫描工具,都可能预先请求图片。

 

为什么使用GA4 Measurement Protocol?

浏览器中的GA4跟踪代码或GTM会向类似以下的地址发送请求:

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

复制这类请求、再放进邮件图片URL,技术上可能让GA4收到数据,但不建议这样做

原因是g/collect 属于GA4跟踪代码的浏览器传输机制,通常依赖浏览器Cookie、会话 ID、页面地址、Referrer与其他内部参数。邮件客户端并不是你的网站页面,不会运行gtag.js,也通常没有你网站的 _ga Cookie。

Measurement Protocol则是GA4官方提供的服务器端事件接口,用来发送服务器端和非标准网页互动事件,它作为事件记录,不会产生网站会话,也不会干扰原有的会话、参与度和渠道数据。

 

邮件打开跟踪的整体架构

Measurement Protocol需要由受控的服务端环境发送请求。这里使用Cloudflare Worker作为中间服务器:

如何使用 GA4 Measurement Protocol 追踪邮件打开?

具体流程如下:

  • 在邮件 HTML 中加入透明的 1×1 Tracking Pixel;
  • 邮件客户端或图片代理加载 Pixel;
  • Cloudflare Worker 收到图片请求;
  • Worker 读取请求中的邮件活动参数;
  • Worker 将请求转换为 Measurement Protocol 格式,并发送 email_open 到 GA4;
  • Worker 返回透明 GIF,完成图片加载。

注意:这个方案是无状态,也就是任何人知道你的请求,都可以请求它发送数据,解决方法是在Tracking Pixels上签名,密钥,Cloudflare Worker签名,密钥匹配到才发送。

实施步骤

步骤一:创建GA4 Measurement Protocol API Secret

在数据流页面中,点击「Measurement Protocol API 密钥」就可以看到管理界面:

如何使用 GA4 Measurement Protocol 追踪邮件打开?

点击右上角的“创建”就可以获得一个密钥值。

发送MP请求至少需要以下两个参数:

  • 密钥值:hT8GXWTRSKS728kpUskKhQ
  • 衡量ID:G-HZ4RDGTX66

 

步骤二:创建Cloudflare Worker与环境变量

在Cloudflare Dashboard中创建 Worker。

Cloudflare官方也建议使用Secret变量保存密码、API Key和其他敏感信息。

所以,在Cloudflare Worker 里点击「设置」——「添加变量」,新增以下两个值:

名称 类型
GA_MEASUREMENT_ID Variable 你的 G-XXXXXXXXXX
GA_API_SECRET Secret 刚创建的 Measurement Protocol API Secret

GA_API_SECRET必须选择 Secret,而不是普通 Variable。

创建Worker后,会有一个Worker地址为

https://ichdata-email-open-tracking.haran-huang.workers.dev

 

步骤三:写入Worker像素追踪代码

进入Edit code,粘贴以下代码:

代码的作用是向GA4发送email_open,返回透明 1×1 GIF,使邮件客户端能正常加载图片。

ctx.waitUntil() 会让 Worker 先尽快返回图片,再在后台完成向GA4发送事件的请求。

 

步骤四:在邮件HTML中加入 1×1 Pixel

Worker地址为:

https://ichdata-email-open-tracking.haran-huang.workers.dev

可以在邮件HTML底部加入:

<img style="display: block; width: 1px; height: 1px; border: 0; opacity: 0;" src="https://ichdata-email-open-tracking.haran-huang.workers.dev/?cid=815285605.1787152135&campaign_id=newsletter_20260821" alt="" width="1" height="1" />

如:

如何使用 GA4 Measurement Protocol 追踪邮件打开?

其中:

  • cid:这是必要参数,建议使用真实的 client_id;如果获取不到真client_id,可以每位收件人生成不同的随机、伪匿名cid
  • campaign_id:邮件活动标识,例如 newsletter_20260821

在HTML属性中,参数之间建议写成 &amp;,而不是直接写 &。

 

 

步骤五:发送测试邮件并验证

先向自己的邮箱发送测试邮件,再打开邮件。

检查顺序:

  • 确认邮件客户端没有显示破图
  • 查看Cloudflare Worker Logs,确认Worker收到GET请求
  • 在GA4中试试报告查看email_open事件是否出现

 

为什么email_open不会归为Email渠道?

GA4的默认渠道组主要基于网站会话的 source 和 medium 识别。

例如:utm_source=email和utm_medium=email,进入网站后,GA4 才会将该会话归为 Email。

而MP协议发送事件,实际是没有访问,所以默认是不会产生会话,也就不会归类为Email 渠道,实际上是划分到Unassigned

 

如何用UTM追踪邮件点击后的Email会话?

邮件打开和邮件点击是两种不同动作。

邮件链接应另外加上 UTM:

https://www.ichdata.com/ga4-guide?utm_source=email&utm_medium=email&utm_campaign=newsletter_20260821

这样可以得到两类不同数据:

用户行为 追踪方式 GA4 中的主要口径
打开邮件但未点击 MP 协议  email_open事件
点击邮件链接并进入网站 UTM Email 渠道会话、用户、转化

 

如何在GA4查看email_open?

可以先在GA4的事件报告查看:

如何使用 GA4 Measurement Protocol 追踪邮件打开?

如果需要按邮件活动拆分,应创建自定义维度去注册事件参数 email_campaign_id。


有疑问可以在底部留言
喜欢 (0)
发表我的评论
取消评论

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(2)个小伙伴在吐槽
  1. 老师您好,使用这个参数之后,在GA哪个位置查看邮件打开的数据?
    yukfai2018-11-25 23:13 回复 Mac OS X | Firefox浏览器 63.0
    • Haran
      渠道报告
      Haran2018-11-26 10:42 回复 Windows 7 | Chrome 65.0.3325.52