Google Analytics 4 - 在不使用 gtag.js 或 firebase 的情况下使用测量协议 API

fur*_*y12 15 analytics google-analytics measurement-protocol google-analytics-4

是否可以使用 GA4 测量协议将事件发送到 Google Analytics,并在 GA 仪表板中查看和分析它们,而无需使用gtag.jsGA4 或任何其他前端脚本?用例是一些事件被发送到我的服务器,我将通过 API 将这些事件推送到 GA。

让我想到的一件事是官方的Measurement Protocol API 说:

为了使事件有效,它必须具有已用于从 gtag.js 发送事件的 client_id。您需要在客户端捕获此 ID 并将其包含在对测量协议的调用中。在向您的酒店发送事件时,我们使用“client_id”作为 client_id。您需要将其替换为来自 gtag.js 的真实 client_id。

https://developers.google.com/analytics/devguides/collection/protocol/ga4/verify-implementation?client_type=gtag#client_send

这表明只有具有有效client_id来源的事件gtag.js才会被计数。我对随机生成进行了一些实验client_ids,发现我能够在RealtimeGA4 控制台的部分(该Event count by Event name部分)中看到我的事件,但所有其他部分都是空的,并且该Users in last 30 min部分始终显示 0。

有人可以向我解释为什么它为零以及这样的用例是否有效?谢谢

cra*_*ock 8

无需 gtag.ja 或 Firebase SDK 即可直接使用 GA4。它不受支持,因此需要一些工作。我们在桌面应用程序中运行得相当好。有几件事需要做。

  1. 如其他地方所述,必须使用“_et”参数设置“engagement_time_msec”参数。这是现在与前一个事件之间的毫秒数。

  2. 客户端id“cid”有特定的格式;它应该是:

    “随机数(10).unixTimeStamp()”

  3. 会话 ID“sid”格式为:

    “随机数(10)”

  4. 需要设置“_z”参数。我认为这是一个缓存破坏者。深入查看 gtag.js 代码,它是“CCD”的 url 安全 Base64 编码,它始终生成值“ccd.v9b”

  5. 页面哈希参数“_p”可以设置为这个;不完全确定它是否正确,但它有效。

    “随机字符串(3).随机字符串(3)”

  6. 在您使用的任何框架/库中设置“User-Agent”HTTP 请求标头。GA4 使用它来确定许多事情,包括操作系统。您需要根据本地设备信息创建一个虚假的用户代理。这是我们在 Windows 11 x64 上使用的:

    “myco.testapp/4.0.0(Windows NT 10.0;Win64;x64)”

  7. IP 将从 Web 请求中获取,这是地理位置数据的来源。

由于一个完整的工作示例相当于 1,000 字的文档;这是一个带有参数“animal=dog”的“测试”事件:

https://www.google-analytics.com/g/collect?cid=0078745494.1659679529&_et=364&_p=pfJ.Aev&seg=1&sid=2678664821&tid=G-???&ul=en&v=2&_z=ccd.v9b&en=test&ep.animal=dog
Run Code Online (Sandbox Code Playgroud)


小智 7

太长了;博士

您可以在 client_id 中使用任何值,只要它唯一标识用户(我们使用 GUID/UUID),但似乎您还需要在 user_id 中发送一个值。我们对两者使用相同的值。

此外,您还需要添加“engagement_time_msec”参数才能获取要注册的任何用户指标。

更长的答案:

我们正在尝试做同样的事情,即将所有事件从服务器发送到 GA4 测量协议,以便它不依赖于当前用户的 GDPR cookie 设置。

目前,我们对 Universal Analytics 媒体资源执行此操作没有出现任何问题,但 Google 似乎正在尝试通过限制 GA4 中测量协议的范围来防止将来发生这种情况,同时迫使所有人在 2023 年 7 月 1 日之前迁移到该协议。请参阅https://developers.google.com/analytics/devguides/collection/protocol/ga4#full_server-to-server的文档,其中指出:

虽然可以仅使用测量协议将事件发送到 Google Analytics,但可能仅提供部分报告。测量协议的目的是增强通过 gtag、GTM 或 Firebase 收集的现有事件。

我们有一些与 GA4 一起工作的东西,因为事件正在正确地在 GA4 属性上注册,使用客户端 ID,该 ID 只是我们在自己的站点 cookie 中定义的 GUID/UUID。因此,客户端 ID 中可以使用任何值,只要它能够唯一标识用户即可。相同的值用于填充 user_id 参数。

发送事件时,实时事件详细信息显示在 GA4 仪表板上,但用户指标直到我们还填充了“engagement_time_msec”参数后才显示,如/sf/answers/5003778391/中所述

我们在获取用户位置和平台详细信息等方面仍然存在问题,这些信息以前是通过传递 IP 地址和用户代理自动填充的,但在 GA4 中似乎不再起作用。

我们还通过测量协议传递页面加载计时事件,但同样,这些功能似乎已在 GA4 中删除。