Google Analytics - 在单个HTTP请求中跟踪多个事件

8
我需要跟踪搜索结果中该项出现的次数(在Web应用程序中)。即用户搜索某些内容并获得前20个项目-每个第20个项目的1次访问被跟踪。 在另一页上,用户可以查看有关该项目的统计信息-它在搜索结果中显示了多少次。
我考虑使用Google Analytics Event Tracking来完成这个任务。例如,从Javascript:
ga('send', 'event', {
    eventCategory: 'item-category',
    eventAction: 'search',
    eventLabel: 'item-id',
});

但不幸的是,Google Analytics API 仅允许每个 HTTP 请求注册一个事件。这意味着对于每次搜索,将发送20多个HTTP请求。对于我们的要求来说,这相当低效。
我寻找了解决方法:
  1. 测量协议允许发送直接的HTTP请求,但是http://www.google-analytics.com/collect的GET和POST版本只能注册单个事件。
  2. Google数据批处理可能会有所帮助,但GData 已经过时,我不确定它是否支持Google Analytics事件数据。对于实验来说,它看起来相当笨重。
  3. 管理API报告API不支持上传事件数据。
  4. 使用ga.js(Google Analytics Tracking的先前版本)不可能:在一个HttpRequest中发布多个事件到Google Analytics

一个HTTP请求中是否可以注册多个Google Analytics事件?


但不幸的是,Google Analytics API每个HTTP请求只允许注册1个事件。这在分析文档中的哪里? - jk.
我刚刚测试了一下 - 每个“发送”调用都会产生新的HTTP请求到Google Analytics服务器。 - Vitaliy Shibaev
3个回答

0

0

使用以前版本的GA(ga.js)可以实现此功能:我可以同时跟踪多个Google Analytics事件吗?

而且,通用版本也可以实现: 在多个发送命令中设置参数

在某些情况下,您可能希望设置一个参数并使其在多个发送命令中保持不变。例如,如果您有一个网页,想要跟踪一个页面浏览和两个事件。

在上面的示例中,Google展示了设置特定页面参数的方法,也展示了发送多个事件的方法。


我不是在讨论为一个页面注册多个事件的问题 - 这是可以做到的。这是性能问题 - 每个“send”调用或每个推送的事件(在以前的 GA 版本中)都会产生新的往返到 GA 服务器。如果启用了某些网络分析器(例如浏览器开发人员工具),您可以通过使用链接中的代码进行测试来查看此行为。 - Vitaliy Shibaev

0

无法通过单个HTTP请求跟踪多个GA事件。

最后,我通过测量协议实现了服务器端事件注册。每个事件仍然需要向GA服务器发送1个HTTP请求,但不会影响最终用户。


你能详细说明一下你具体做了什么吗?我需要在我的 Web 应用程序中使用测量协议,但不想为每个事件发送请求。 - reubano
我们网站的访问者进行搜索。我们跟踪“项目已在搜索结果中显示”的事件,以收集每个项目在搜索结果中列出的频率统计数据。每当访问者运行搜索时,应注册10或20次事件。为了避免在客户端跟踪事件,我们在服务器上进行注册。从Javascript,我们发送单个HTTP请求到后端进行搜索。然后,在服务器上处理该请求,将所有要注册的事件放入队列中并返回。单独的线程监视队列并通过测量协议跟踪新事件。 - Vitaliy Shibaev
我明白了...所以与我的答案中的方法2非常相似(https://dev59.com/rH_aa4cB1Zd3GeqPzzCK#26409560),只是不使用批处理请求,其中一个请求是一个事件,而是在生成它们时向代理发送请求,然后将每个请求解析为单个搜索项事件。 - reubano
@VitaliyShibaev,你传递什么作为客户端ID(cid)参数?你能否在客户端从GA获取它或自己生成它?谢谢。 - MatteoSp
我通过tracker.get('clientId')在JS端获取客户端ID,然后将其传递给我的服务器API。保持用户交互历史记录的一致性非常重要(将从JS代码和后端代码注册的事件/页面视图与同一用户关联起来)。 - Vitaliy Shibaev

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