Google Analytics v4测量协议 - 如何发送技术和获取数据

6

背景:

我正在追踪移动应用程序的获取数据。某些链接通过我的网站重定向到App Store或Google Play商店,在那里Google Analytics会收集有关这些重定向的数据。

移动应用程序还利用了一种名为“应用剪辑(App Clips)”的新iOS功能,它基本上是一个应用程序片段,用户无需通过商店下载即可打开。当应用程序片段启动时,“中间人”重定向网站将不会被打开。

为了获得Android和iOS获取的连贯数据,我希望通过测量协议直接从“应用剪辑”触发并收集page_view事件。

问题:

GA v4测量协议API处于Alpha版。实际上,文档中缺少page_view事件,但仍然可以发送。

我想要理解如何在请求中填充事件参数以发送“技术”和“获取”类别所需的数据。这意味着至少需要包括用户代理数据、确切的设备型号、推广活动、媒介和来源。

{
    "client_id": "<what_goes_here?>",
    "timestamp_micros": "1627192577008000",
    "non_personalized_ads": false,
    "events": [
        {
            "name": "page_view",
            "params": {
                "page_title": "App Clip",
                "language": "en-us",
                "page_location": "https://example.com/x?utm_campaign=my_campaign",
                "screen_resolution": "1170x2532",
                //"page_referrer": ""
                "page_path": "/x?utm_campaign=my_campaign"
            }
        }
    ]
}

我不想在App Clip中使用Firebase SDK,原因有两个:

  1. 我希望App Clip轻量化,并且苹果公司不鼓励使用第三方库。
  2. 我无法确保发送screen_view将呈现与page_view相同的分析深度(相同的参数)。

GA4没有页面浏览量或屏幕浏览量,它只有事件。 GA4与通用分析和Firebase分析完全不同。 - Linda Lawton - DaImTo
GA v4有事件名称page_view和screen_view,请参见上面的示例代码和GA UI。 - user2530062
同样的问题,但是针对使用服务器端跟踪(通过自定义域隐藏跟踪器拦截分析数据)的Web应用程序。我们所做的是将GA4属性链接到BigQuery(使用每日导出选项)。在自定义事件中,我们正在为应用程序名称、操作系统名称、操作系统版本、浏览器名称等设置自定义“user_properties”。然后,我们可以使用这些自定义“user_properties”在BigQuery中分析结果。最终,在分析网站上,技术数据、人口统计数据等为空。但是,如果我们有这些数据的自定义替代品,那又有谁会在意呢? - Vlad
1个回答

3
客户端ID是由前端gtag脚本生成的谷歌客户端ID。例如,假设您有一个标签管理器或只是向您的网站添加了分析标签。这会在浏览器上生成一个cookie(默认情况下命名为_ga_<ID> - 其中ID可以在设置分析属性时检索到。注意:您可以轻松自定义cookie的名称)。此cookie包含客户端ID。当您通信到后端API以触发事件时,您需要转发此值,可以通过直接包含cookie在API调用中或通过使用JS(它不是HttpOnly)读取cookie并将该值与其他参数一起发送来实现。cookie值类似于GS1.2.163179xxxx.18.0.163179xxxx.0,然后提取客户端ID并将其添加到有效载荷中。在我们的ruby / rails代码中,我们使用以下方法提取客户端ID。
google_analytics_client_id = context[:controller].request.cookies[Settings.google_analytics_prefix]&.split('.')&.last(2)&.join('.')

接下来,您可以将其发送到测量协议。我们的代码如下:

def event_payload(user:, event_name:, google_analytics_client_id:, event_params: {}, event_time:)
  {
    user_id: user.id.to_s,
    timestamp_micros: (event_time.to_f * 1_000_000).to_i,
    non_personalized_ads: false,
    user_properties: {
      your_property: { value: user.some_property },
    },
    client_id: google_analytics_client_id,
    events: [
      { name: event_name }.tap do |h|
        h[:params] = event_params if event_params.any?
      end,
    ],
  }
end

我不确定这是否有效,因为我们似乎在自己的方面遇到了问题(它确实为用户创建了事件,但是他们无法正确获取UTM归因),但也许与限制有关。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接