通过测量协议将跟踪数据发送到Google Analytics时,客户端ID是什么?

Ala*_*ing 56 google-analytics google-analytics-api

我想使用Google的新测量协议从我的服务器而不是JavaScript发送跟踪事件.

此页面显示客户端ID是必需的:https: //developers.google.com/analytics/devguides/collection/protocol/v1/devguide#required

此页面说明它是可选的:https: //developers.google.com/analytics/devguides/collection/protocol/v1/parameters#visitor

另外,这些文档中定义的格式不同 - 第一页给出一个整数作为示例,只是说它是"一个唯一值",而第二个链接表示它应该是一个UUID.

如果我在后端发送用户ID或生成的UUID,Google会如何知道将该访问者链接到现有的访问者会话?好像我需要检索GA对现有用户的内部引用.

任何帮助表示赞赏 - 谢谢!

gre*_*reg 53

整数或UUID

cid是在第二个值相当于_utma当您使用的JavaScript跟踪cookie.在js跟踪中,它是一个随机整数(由...生成Math.round(2147483647 * Math.random())).但它被调整并以字符串形式发送:因此您可以使用两种格式(整数或UUID).

必需/可选

使用js跟踪时,Analytics服务器会忽略使用缺少的用户ID发送的请求.所以假设它是必需的.

将Web访问者与测量协议操作相关联

如果您要将后端用户与之前使用Google Analytics javascript跟踪的访问者相关联ga.js,您可以cid_utmaCookie中获取值.但我不推荐它; 每次更改(终端或浏览器更改,cookie清理等),您将失去与客户先前操作的链接.

更新

analytics.js当有人问不存在.cid现在存储在cookie中_ga.你可以在javascript中获得它:

ga(function(tracker) {
  var clientId = tracker.get('clientId');
});
Run Code Online (Sandbox Code Playgroud)

在写这篇文章时,当你从跟踪器获得clientId时,就像上面的代码一样,它不会给你一个UUID,而是两个随机的32位整数,格式为"XY".此实现可能在将来更改为UUID.

或者使用您自己的值设置它(如后端生成的UUID):

ga('create', 'UA-XXXXX-Y', {'clientId': 'your_client_id'});
Run Code Online (Sandbox Code Playgroud)

  • `clientId`代表一个客户端,如*device*或*client-side* - **而不是**用户.因此,它不应设置为后端UUID.谷歌使其可写的原因只是与测量协议一起使用.例如,要跟踪服务器端事件,您应该1.让您的js代码从ga获取clientId值2.将其发送到服务器(您可以将其存储在会话中供以后使用)3.使用该clientId服务器端 (18认同)
  • 哦,将后端用户与谷歌分析联系起来是尚未发布的`userId`的目的.快来了! (4认同)
  • 是不是将后端用户与之前由analytics.js跟踪的访问者链接起来的"测量协议"的要点之一,允许引荐人/广告系列/目标网页与以后的非网络结果相关联?我怀疑正确的方法是从一开始就提供你自己网站的`clientId`(使用https://developers.google.com/analytics/devguides/collection/analyticsjs/field-reference#clientId),这样就可以了可用于analytics.js的页内跟踪和您自己的后续测量协议操作. (2认同)

小智 6

在Rails中:

  def save_google_analytics_client_id
    if current_user && cookies["_ga"]
      client_id = cookies["_ga"].split(".").last(2).join(".")
      if current_user.google_analytics_client_id != client_id
        current_user.google_analytics_client_id = client_id
        current_user.save
      end
    end
  end
Run Code Online (Sandbox Code Playgroud)