如何使用 Google Analytics 为第 3 方网站创建跟踪像素?

How to create tracking pixel with Google Analytics for 3rd party site?

我们需要跟踪在第 3 方网站上发生的转化。我们唯一可以放在那个网站上的是一个图像像素,也许还有一些关于何时触发它的 JS 逻辑。

我知道可以使用 Measurement Protocol 触发转换:https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters#visitor

理想情况下,我只需要给第 3 方一个 IMG url 就可以了。问题是 CID(唯一客户端 ID)。

我可以尝试通过 URL 参数将 CID 从我们的站点传递给第三方。然而,在很多情况下它是不可用的(例如,IMG pixcel 将在电子邮件中,目标 URL 在印刷文献中)或第 3 方不愿意经历麻烦。以这种方式传递此 CID 是最佳做法吗?

我可以尝试生成一个 CID,但我找不到一个非常简单的方法来做到这一点,例如 var CID = generateCID()。第 3 方网站在页面上有自己的 GA。我可以只获取他们的 Google Analytics CID 并在图像像素 URL 中使用它吗?

最好的方法是什么?谢谢!

如果第 3 方站点已经 analytics.js 运行,那么最好使用该客户端 ID。您可以通过以下方式获得它:

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

如果 analytics.js 不是 运行,或者如果您由于某种原因无法访问 ga 变量,您可以随机生成客户端 ID。这大约是 Google 所做的。它是一个随机的 31 位整数,附加了当前日期字符串:

var cid = Math.floor(Math.random() * 0x7FFFFFFF) + "." +
          Math.floor(Date.now() / 1000);

只是为了补充@Philip Walton 的出色回答,Google 根据 official Documentation.

,Analytics 期望随机 UUID(版本 4)作为客户端 ID

Client ID

Required for all hit types.

This anonymously identifies a particular user, device, or browser instance. For the web, this is generally stored as a first-party cookie with a two-year expiration. For mobile apps, this is randomly generated for each particular instance of an application install. The value of this field should be a random UUID (version 4) as described in http://www.ietf.org/rfc/rfc4122.txt

@broofa 提供了一种在 JavaScript here 中生成符合 RFC4122 的 UUID 的简单方法。为了完整起见,在这里引用它:

'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
    var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);
    return v.toString(16);
});