我想使用谷歌的新的测量协议从我的服务器,而不是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我的后台,如何将谷歌知道该访问者链接到现有访客会话? 好像我需要找回GA的内部参考,以现有的用户。
任何帮助表示赞赏 - 谢谢!
整数或UUID
该cid
是在第二个值相当于_utma
当您使用的JavaScript跟踪cookie。 在JS跟踪,它是一个随机整数(由生成Math.round(2147483647 * Math.random())
但strored,并将其作为一个字符串:这样你就可以使用这两种格式(整数或UUID)。
必需/可选
随着JS跟踪,与丢失的用户ID发送的请求是通过分析服务器忽略。 因此,假设它是必需的。
链接网站访问与测量协议的行动
如果你想你的后端用户先前与分析的JavaScript跟踪访问者链接ga.js
,就可以得到cid
从价值_utma
饼干。 但我不建议这样做; 每次改变时间(终端或浏览器的变化,饼干清洗等),你将失去与客户的先前动作的链接。
更新
该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
我使用与快递和通用,分析模块节点,然后选择使用嵌入在_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
文章来源: What is the client ID when sending tracking data to google analytics via the measurement protocol?