jsw*_*wrr 6 javascript google-analytics google-tag-manager
要将 client_id 从一个域传递到另一个域,Google 支持向作为跨域跟踪设置一部分的传出链接添加“链接器”参数。此链接器参数包含client_id, session_id(我相信,有关 Google Ads 的信息,例如gclid)和基本指纹 + 时间戳。在接收域上,如果浏览器指纹匹配并且时间戳不是太远,则传递的client_id和session_id会存储在第二域上的第一方 cookie 中并随后使用。
使用analytics.js(GA-UA),您可以轻松执行以下操作,手动修饰 URL:
function decorateUrl(urlString) {
var ga = window[window['GoogleAnalyticsObject']];
var tracker;
if (ga && typeof ga.getAll === 'function') {
tracker = ga.getAll()[0]; // Uses the first tracker created on the page
urlString = (new window.gaplugins.Linker(tracker)).decorate(urlString);
}
return urlString;
}
Run Code Online (Sandbox Code Playgroud)
然而,当仅加载 gtag 时,window.ga并且window.gaplugins未定义。据我所知,目前没有记录的方法可以使用 gtag 的链接器参数手动生成链接。
在 Google 的文档中,他们建议手动设置链接器。(https://support.google.com/analytics/answer/10071811?hl=en#zippy=%2Cmanual-setup)但这有几个缺点,例如我必须创建一个自定义的“指纹”逻辑(以便修饰的URL不共享),例如不包含 Google Ads 信息。不管怎样,我想使用内部 gtag 逻辑来装饰 URL。
gtag 会自动装饰a标签(一旦单击),这些标签会导致 GA4 数据流设置中指定的跨域跟踪域(例如“test.com”),但我特别需要手动装饰 URL(即没有立即重定向到他们)。我考虑过执行以下操作:
a使用要装饰的 URL创建一个虚拟的隐藏标签onclick='event.preventDefault();'function decorateUrlGtag(urlString) {
var tempAnchorEl = document.createElement("a");
tempAnchorEl.setAttribute("type", "hidden");
tempAnchorEl.setAttribute("href", urlString);
tempAnchorEl.setAttribute("onclick", "event.preventDefault(); return false");
document.body.appendChild(tempAnchorEl);
tempAnchorEl.click();
var urlWithLinker = tempAnchorEl.href;
tempAnchorEl.remove();
return urlWithLinker;
}
Run Code Online (Sandbox Code Playgroud)
这也不起作用,因为 gtag 似乎没有注册该tempAnchorEl.click();调用。如果我手动单击链接,URL 将按预期进行修饰。
此处概述的解决方案(Google Analytics gtag.js Manually add the linker cross-domain parameter to URLs)也不适用于我:
ga)您是否 (1) 知道是否有一种方法可以使用我忽略的 gtag 手动生成链接器参数,(2) 知道如何使我的“hacky”解决方案发挥作用,或者 (3) 有另一种可能的解决方案?
我还没有理解这个解决方案,我不确定它能直接回答你的问题,但 Simo 确实在这里给出了如何配置 GA4 跨域跟踪的概述:
他将问题分解为几个步骤,但没有详细说明。他提供了一段代码:
“...您还可以将 URL 参数值直接加载到 GA4 配置中,如下所示:
gtag('config', 'G-12345', {
// Namespace roll-up trackers
cookie_prefix: 'roll-up',
// Pull in the Client ID from the URL
client_id: (new URLSearchParams(document.location.search)).get('client_id'),
// Pull in the Session ID from the URL
session_id: (new URLSearchParams(document.location.search)).get('session_id')
});
Run Code Online (Sandbox Code Playgroud)
”
希望有帮助!
| 归档时间: |
|
| 查看次数: |
1807 次 |
| 最近记录: |