已经尝试了几个星期了。如有任何帮助,不胜感激。
我最近升级到通用分析,并成功地与autoLinker
建立了跨域跟踪,但当将用户重定向到实验的域部分时,我无法让我的分析实验通过_ga
变量。
- 两个域都有两个跟踪器,一个(
t0
),他们共享[UA-xxxxxxx-5]
和一个(domainUniqueTracker
),记录到一个trackingId唯一的特定域([UA-xxxxxxx-1]
主域和[UA-xxxxxxx-14]
新的实验域)。 - 在
t0
上加载链接器以实现跨域共享。 - 链接器加载了一系列域,包括我试图通过实验发送流量的域。
- 实验创建在共享trackingId
[UA-xxxxxxx-5]
上
上下文/strong>
我的公司有一个产品叫LIME Pro,我们到现在为止在我们公司的网页上有关于它的信息。现在,作为一个实验,我们在一个单独的域上创建了一个关于系统的页面,他们想看看哪个页面(旧的或新的)吸引了最多的线索。
公司网页内的旧产品页面(在那里安装了实验代码)http://www.lundalogik.se/crm-system/lime-pro/
单独域上的新产品页面(在跟踪器t0
上与主域共享trackingId)http://www.lime-pro.se
如果我访问www.lundalogik.se并从那里点击到新的外部站点的正常链接(假页面lundalogik.se/experiment/
上的正常锚链接),clientId
在URL中成功传递,外部站点的跟踪器识别到这一点并开始使用clientId
。
但是,如果我浏览到安装实验代码的页面,我将被重定向到外部站点,而没有传递clientId,因此外部站点的跟踪器生成新的clientId。
谢谢和抱歉的长帖子,想解释尽可能多的细节,我可以。
UA中的各种链接器函数将_ga添加到传出链接(表单,帧等)。由于重定向发生在实验javascript中,客户端id不能添加到url(这在某种程度上似乎是谷歌部分的疏忽-似乎他们没有预料到你的用例,即跨域的内容实验)。
我有一些未经测试的想法可以贡献,也许你可以在其中一个的基础上构建一个解决方案。
1)在实验代码触发之前,将客户端id推送到window.document.location.hash。至少在Chrome中,这不会导致重新加载(据我所知,从查看网络选项卡)。由于哈希值现在是url的一部分,当重定向触发时,它应该被发送。然后,在接收页面上需要一个脚本来检查clientID的散列,如果存在,则将其传递给分析。
2)基本相同,只是这次使用pushState方法(https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Manipulating_the_browser_history),它应该允许您提供查询参数而无需重新加载。
3)使变异页成为主域名内的页面。而不是任何内容,在那里放一个javascript从cookie读取clientId并重定向到其他域
4)与3相同,只是服务器端(不要忘记在重定向中包含内容实验参数)
正如我所说的,这基本上是自言自语,但它可能为解决方案提供线索。
我很抱歉只有一半的答案,但我从上面得到命令,在我得到它完全工作之前放下这个。希望它仍然会对那些想要做同样事情的人有所帮助。
如果你做接收部分完成,请在这里发布你的代码,我会更新这个答案/奖励你的答案。
OK here goes nothing.
发送端工作并将clientId添加到哈希中,当实验进行跨域重定向时成功传输
PAGE WITH experimental CODE
在运行实验代码之前执行这个。
var z, y, x = document.cookie.split("; ");
for (var i = 0; i < x.length; i++) {
y=x[i].split("=");
if (y[0] == "_ga") window.location.hash = y[1];
}
PAGE ON CROSS DOMAIN
这是我在接到命令放下这个之前从未到过的地方。但是你可以这样做:
- 检查
window.location.hash
是否包含clientId (window.location.hash.substr(0,3) == "#GA"
) - 检查是否存在cookie2.1. (exists) split cookie by ";,找到"_ga"并将其值替换为上面的哈希值(首先删除"#")2.2. (不存在)在域级别创建一个新的cookie,并设置"_ga=(哈希值)"
- 启动google分析跟踪器,它会假设访问者之前已经访问过该页面,并从cookie中接受客户端id
- 繁荣昌盛
所以,再次抱歉,答案只是部分完成,但希望有人能从中受益。
或者至少不要假设他们像我一样生气,因为我不能让它工作:)。
如果社区愿意,如果这被认为是不好的做法,我当然会删除"接受的答案"(这只是我在SO网络上的第二篇文章)。