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

时间:2013-01-09 02:20:04

标签: 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对现有用户的内部引用。

感谢任何帮助 - 谢谢!

3 个答案:

答案 0 :(得分:53)

整数或UUID

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

<强>必需/可选

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

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

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

<强>更新

当提出问题时,analytics.js不存在。 cid现已存储在Cookie _ga中。你可以用javascript获取它:

ga(function(tracker) {
  var clientId = tracker.get('clientId');
});

在编写本文时,如果您从跟踪器获取clientId,就像上面的代码一样,它不会给你一个UUID,而是两个随机的32位整数,格式为“X.Y”。此实现可能在将来更改为UUID。

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

ga('create', 'UA-XXXXX-Y', {'clientId': 'your_client_id'});

答案 1 :(得分: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

答案 2 :(得分:3)

我正在使用带有快速和通用分析模块的节点,并选择使用嵌入在_ga cookie中的cid而不是生成我自己的cid服务器端。

我的server.js看起来像这样......

app.use(function(req, res, next) {
  if(req.session && (!req.session.cid) && req.cookies._ga){
    //Use the cid already embedded in the _ga cookie and save to session so I can access from socket routes
    var gaSplit = req.cookies._ga.split('.');
    req.session.cid = gaSplit[2] + "." + gaSplit[3];
  };
  next();
});  

然后,我可以这样做..

ua = require('universal-analytics')
var visitor = ua('UAXXX', req.session.cid)

HTH