首页 文章

通过具有Universal Analytics的域运行GA实验,链接器可以工作但实验代码忽略clientId

提问于
浏览
3

一直试图让这个工作几周 . 任何帮助是极大的赞赏 .

我最近已升级到Universal Analytics,并设法使用_2521321成功设置跨域跟踪,但在将用户重定向到实验的域部分时,我无法让我的Analytics Experiment传递 _ga 变量 .

Setup

  • 这两个域都有两个跟踪器,一个( t0 ),它们共享 [UA-xxxxxxx-5] 和一个( domainUniqueTracker ),它们记录到该特定域唯一的trackingId(主域为 [UA-xxxxxxx-1] ,新实验域为 [UA-xxxxxxx-14] ) .

  • 链接器加载在 t0 上以启用跨域共享 .

  • 链接器加载了一系列域,包括我试图通过实验发送流量的域 .

  • 在共享trackingId [UA-xxxxxxx-5] 上创建实验 .

Context

我的公司有一个名为LIME Pro的产品,我们到目前为止已经在我们公司的网页上有了相关信息 . 现在,作为一项实验,我们在一个单独的域上创建了一个关于系统的单页,他们希望看到哪个页面(旧的或新的)吸引了大多数潜在客户 .

公司网页内的旧产品页面(安装在那里的实验代码)http://www.lundalogik.se/crm-system/lime-pro/

单独域上的新产品页面(与跟踪器上的主域名共享trackingId t0http://www.lime-pro.se

Problem

如果我访问www.lundalogik.se并从那里点击指向新的外部站点的常规链接(虚拟页面 lundalogik.se/experiment/ 上的常规锚点链接) clientId 已在URL中成功传递,并且外部站点的跟踪器识别此并开始使用 clientId .

但是,如果我浏览到安装了实验代码的页面,我将被重定向到外部站点,而不会传递clientId,因此外部站点的跟踪器会生成一个新的clientId .

感谢和抱歉长篇文章,想尽可能详细地解释 .

2 回答

  • 0

    UA中的各种链接器函数将_ga添加到传出链接(表单,框架等) . 由于重定向发生在实验javascript中,客户端ID无法添加到网址(这在某种程度上似乎是对谷歌部分的疏忽 - 似乎他们没有预料到您的用例,即跨域的内容实验) .

    我有一些未经考验的想法可以贡献,也许你可以在其中一个之上构建一个解决方案 .

    1)在实验代码触发之前,将客户端ID推送到window.document.location.hash . 至少在Chrome中,这不会导致重新加载(据我所知,从查看网络选项卡) . 由于散列现在是url的一部分,因此当重定向触发时它应该被发送 . 然后,您需要在接收页面上使用一个脚本来检查客户端ID的哈希,并将其传递给分析(如果存在) .

    2)基本相同,只有这一次使用pushState方法(https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Manipulating_the_browser_history),它应该允许您提供查询参数而无需重新加载 .

    3)使变体页面成为主域中的页面 . 而不是任何内容放在那里的javascscript从cookie读取clientId并重定向到另一个域

    4)与3相同,只有服务器端(不要忘记在重定向中包含内容实验参数)

    正如我所说,这基本上是在大声思考,但它可能提供解决方案的线索 .

  • 0

    我很抱歉只有半个答案,但是在我完全开始工作之前,我从上面得到了命令 . 希望对于那些想要做同样事情的人来说,它仍然会有所帮助 .

    如果您完成接收部分,请在此处发布您的代码,我将更新此答案/奖励您的答案 .

    好吧这里什么都没有..


    发送方工作并将clientId添加到哈希值,并在实验进行跨域重定向时成功传输 .

    PAGE WITH EXPERIMENT 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"

    • 检查现有的cookie 2.1 . (存在)通过"; "拆分cookie,找到"_ga"并用上面的哈希替换它的值(首先删除"#")2.2 . (不存在)在域级别创建一个新cookie并设置"_ga=(hash-value)"

    • 启动谷歌分析跟踪器,它将承担访客之前已经访问过该页面并从cookie中接受了client-id

    • 活得长久,繁荣昌盛

    所以,再次抱歉,答案只是部分完成,但希望有人会从中受益 .

    或者至少不要假设他们像我在无法工作时那样疯狂:) .

    如果社区希望我当然会删除“已接受的答案”,如果这被认为是不好的做法(这只是我在SO网络上的第二篇文章) .

相关问题