Google Analytics - 在单个 HTTP 请求中跟踪多个事件
Posted
技术标签:
【中文标题】Google Analytics - 在单个 HTTP 请求中跟踪多个事件【英文标题】:Google Analytics - track multiple events in single HTTP request 【发布时间】:2014-06-15 03:06:06 【问题描述】:我需要跟踪该项目在搜索结果中出现的次数(在网络应用程序中)。 IE。用户搜索某些内容并获得前 20 个项目 - 跟踪第 20 个项目中的每一个的 1 次访问。 在另一个页面上,用户可以看到项目的统计信息 - 它在搜索结果中显示的次数。
我考虑将Google Analytics Event Tracking 用于该任务。例如。来自javascript:
ga('send', 'event',
eventCategory: 'item-category',
eventAction: 'search',
eventLabel: 'item-id',
);
但不幸的是,Google Analytics API 只允许每 1 个 HTTP 请求注册 1 个事件。这意味着每次搜索都会发送 20 多个 HTTP 请求。这对我们的要求来说是非常无效的。
我正在寻找解决方法:
-
Measurement protocol 允许发送直接 HTTP 请求,但 http://www.google-analytics.com/collect 的 GET 和 POST 版本都只为每个请求注册一个事件。
Batch Processing in Google Data 可能会有所帮助,但 GData looks obsolete 我不确定它是否支持 Google Analytics 事件数据。对于实验来说,它看起来相当重量级。
Management API 和 Reporting API 不支持上传事件数据。
不能使用 ga.js(Google Analytics 跟踪的旧版本):Post Multiple Events within One HttpRequest to Google Analytics
是否可以为每个 1 个 HTTP 请求注册多个 Google Analytics 事件?
【问题讨论】:
But unfortunately Google Analytics API allows to register only 1 event per 1 HTTP request.
Analytics 文档中的哪个位置?
我刚刚对其进行了测试 - 每个“发送”调用都会向 Google Analytics 服务器产生新的 HTTP 请求。
【参考方案1】:
以前版本的 GA (ga.js) 可以做到这一点:Can I track multiple Google Analytics events at once?
而且,通用版本是可能的: Setting Parameters Across Multiple Send Commands
在某些情况下,您可能希望设置一个参数并让该值在多个发送命令中保持不变。例如,如果您有一个网页要跟踪一个网页浏览量和两个事件。
在上面的示例中,Google 演示了如何设置特定页面参数,但它也显示了发送多个事件。
【讨论】:
我不是在谈论为一页注册多个事件 - 这绝对是可能的。这就是性能问题 - 每个“发送”调用或每个推送事件(在以前的 GA 版本中)都会产生到 GA 服务器的新往返。如果您在启用了某些网络分析器(例如使用浏览器开发工具)的情况下测试链接中的代码,您会看到这种行为。【参考方案2】:单个 HTTP 请求无法跟踪多个 GA 事件。
最后,我通过Measurement Protocol实现服务器端事件注册。每个事件仍有 1 个对 GA 服务器的 HTTP 请求,但不会影响最终用户。
【讨论】:
你能详细说明你做了什么吗?我需要为我的网络应用使用 Measurement Protocol,但不想为每个事件发送请求。 我们网站的访问者进行搜索。我们跟踪事件“项目已显示在搜索结果中”以收集每个项目在搜索结果中列出的频率的统计信息。每次访问者运行搜索,应注册 10 或 20 个事件。为了避免跟踪事件客户端,我们在服务器上注册它。我们从 Javascript 向我们的后端发送每次搜索的单个 HTTP 请求。然后,在我们处理该请求的服务器上,将所有要注册的事件放入队列中并返回。单独的线程通过 Measurement Protocol 监视队列并跟踪新事件。 我明白了...与方法 2 of my answer 非常相似,只是不使用一个请求是一个事件的批处理请求,而是在生成请求时将请求发送到代理,然后每个请求都是解析为单个搜索项事件。 @VitaliyShibaev 您为客户端 ID (cid) 参数传递了什么?您是否能够从 ga 在客户端获取它或自己生成它?谢谢 我通过 tracker.get('clientId') 在 JS 端获取客户端 ID,然后将其传递给我的服务器 API。保持用户交互历史的一致性很重要(关联从 JS 代码和后端代码注册的事件/浏览量与同一用户)。【参考方案3】:我一直在尝试做同样的事情,但我只看到了 2 个解决方案:
-
对android SDK的Dispatch API进行逆向工程
写一个接受batch requests的intermediate log proxy,然后将各个请求直接转发到GA的Measurement Protocol
【讨论】:
以上是关于Google Analytics - 在单个 HTTP 请求中跟踪多个事件的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 GTM 在 Google Analytics 中设置自定义变量(NOT DIMENSION)?
javascript 在Classic或Universal Analytics中跟踪Google Analytics事件
google 如何在 Bigquery/Google-Analytics 中设置 fullVisitorId/Client ID?
javascript Javascript:Google Analytics Snipper + Google Analytics JS日志记录