如何在Laravel应用中通过Measurement Protocol发送GA4事件至Google Analytics
在Laravel中发送GA4事件替代UA的实现方案
GA4 使用的是Measurement Protocol v2,和UA的请求端点、参数结构差异很大,以下是对应UA事件的GA4实现代码:
Http::asJson()->post('https://www.google-analytics.com/mp/collect', [ 'measurement_id' => config('services.google.analytics.tids.ga4.all'), 'api_secret' => config('services.google.analytics.api_secret'), 'client_id' => (string) $cid, 'events' => [ [ 'name' => $action, // 可自定义事件名,比如结合分类:"{$category}_{$action}" 'params' => [ 'category' => $category, 'label' => $label, 'value' => $value ] ] ] ]);
关键参数说明(对比UA):
- 端点从
https://www.google-analytics.com/collect改为https://www.google-analytics.com/mp/collect - UA的
tid(跟踪ID)替换为GA4的measurement_id(格式为G-XXXXXX,从GA4后台数据流中获取) - UA的
cid对应GA4的client_id,用法完全一致 - 新增
api_secret:需要在GA4数据流的「测量协议API密钥」选项中生成,用于身份验证 - 事件结构重构:UA的
ec(分类)、ea(动作)、el(标签)、ev(值)不再是顶级参数,而是要放到events数组的params中;name字段为GA4事件名称,可根据业务需求自定义(比如直接用原UA的动作名,或结合分类命名)
注意事项:
- 确保GA4数据流已启用测量协议功能
- 事件名称建议遵循GA4规范:小写字母、下划线分隔,避免空格和特殊字符
- 可在GA4的「实时」报告中实时验证事件是否发送成功
- 若需批量发送多个事件,只需在
events数组中添加更多事件对象即可
内容的提问来源于stack exchange,提问作者Ben
相关产品推荐
相关产品推荐

