通过测量协议向Google Analytics(分析)发送跟踪数据时,客户端ID是什么?
我想使用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的内部引用到现有的用户。
任何帮助表示赞赏 – 谢谢!
整数或UUID
当您使用JavaScript跟踪时, cid
等同于_utma
cookie中的第二个值。 在js跟踪中,它是一个随机整数(由Math.round(2147483647 * Math.random())
生成Math.round(2147483647 * Math.random())
)。 但它是作为一个string进行编码和发送的:所以你可以使用两种格式(整数或UUID)。
必需/可选
通过js跟踪,分析服务器会忽略发送缺less用户标识的请求。 所以假设它是必需的。
将networking访问者与测量协议操作相链接
如果您想要将后端用户与以前使用Analytics(分析)javascript ga.js
进行跟踪的访问者关联起来,则可以从_utma
cookie获取cid
值。 但我不推荐它。 每次更改(terminal或浏览器更改,Cookie清理等)时,您将失去与客户先前操作的链接。
更新
提问时, analytics.js
不存在。 cid
现在存储在cookie _ga
。 你可以用JavaScript获得它:
ga(function(tracker) { var clientId = tracker.get('clientId'); });
在写这个的时候,当你从跟踪器中得到clientId的时候,就不会给你一个UUID,而是两个随机的“XY”格式的32位整数。 这个实现可能会在未来变成UUID。
或者用你自己的值来设置它(比如后端生成的UUID):
ga('create', 'UA-XXXXX-Y', {'clientId': 'your_client_id'});
在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
我使用快递和通用分析模块使用节点,并select使用_ga cookie中embedded的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