首页 文章

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

提问于
浏览
55

我想使用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 回答

  • 53

    Integer or UUID

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

    Required/Optional

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

    Link web visitor with measurement protocol actions

    如果您要将后端用户与之前使用Google Analytics#2634387_跟踪的访问者相关联,您可以从 _utma Cookie中获取 cid 值 . 但我不是以前的行动 .

    Update

    当问到这个问题时, 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'});
    
  • 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
    
  • 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

相关问题