2017-06-20 56 views
8

我在我的电子商务网站上运行全网AB测试。访客的土地后,我为它们分配一个本地存储键/值:使用本地存储和Google Analytics进行AB测试

function isLocalStorageNameSupported() { 
    var testKey = 'test', storage = window.localStorage; 
    try { 
    storage.setItem(testKey, '1'); 
    storage.removeItem(testKey); 
    return true; 
    } catch (error) { 
    return false; 
    } 
} 

$(function() { 

    if(isLocalStorageNameSupported()){ 
     var version = Cookies.get("version"); 

     if (version == null) { 

     if (Math.random() >= 0.5){ 
      Cookies.set("version", "A"); 
      var version = "A" 
     }else{ 
      Cookies.set("version", "B"); 
      var version = "B" 
     } 

     ga('create', 'UA-XXXXXXXX-1', 'auto'); 
     ga('send', { 
      hitType: 'event', 
      eventCategory: 'Pricing Experiment', 
      eventAction: 'New Unique Visit', 
      eventLabel: version, 
      eventValue: 0 
     });  
    } 
    } 



}); 

,在访客检查出来,我查他们是在哪个版本和发送另一个谷歌分析事件。

我的结帐转换事件显示正常。但我只获得了25%的“新独特访问”活动。 Analytics(分析)显示该网站有12000次访问,但我只有3000次我的自定义事件。

其中我的代码部分是造成这种差距,我怎么能火上所有访问的事件吗?

回答

4

这是在黑暗中拍摄的,因为我已经运行了你的代码,每次触发事件(我假设你的Cookies对象/函数正在工作),但是我想知道的是如果12,000号码可能不正确...

是这里的代码段究竟是您的网站正在运行什么?你在哪里发送GA综合浏览量?我问,因为我看到事件是在您的create功能后立即。我看到的另一个潜在的报告问题是,该事件是交互式的 - 意味着它会影响您的跳出率,如果您也发送综合浏览量(我假设你是)。

明确你是什么意思指标时,你说12000次访问?会议?浏览量前

发送事件也会给你一堆(not set)着陆页的尺寸。这意味着该事件不会与任何着陆页相关联,并且当页面浏览被发送时,它也会增加您的用户数量......因此,如果您看到的用户多于会话,则表明这是一个问题。

有些事情尝试:

  • 事件之前发送浏览量。
  • 使用{nonInteraction: true}将事件设置为非交互事件。
  • 我会做的仅仅是把conditional-的create和浏览量发送中的事件的另一件事应该总是不管localStorage的情况发生。
  • 编辑:您还在等待DOM准备好create。我将它移动到<head>标签上,以便事件成为等待文档准备就绪的唯一事件。

<head> 
 
    <script> 
 
\t  //Your preferred method of loading analytics.js here... 
 
\t  ga('create', 'UA-XXXXXXXX-1', 'auto'); \t \t 
 
\t  ga('send', 'pageview'); 
 
    </script> 
 
</head>

function isLocalStorageNameSupported() { 
 
\t var testKey = 'test', storage = window.localStorage; 
 
\t try { 
 
\t \t storage.setItem(testKey, '1'); 
 
\t \t storage.removeItem(testKey); 
 
\t \t return true; 
 
\t } catch (error) { 
 
\t \t return false; 
 
\t } 
 
} 
 

 
$(function() { 
 
\t 
 
\t if(isLocalStorageNameSupported()){ 
 
\t \t var version = Cookies.get("version"); 
 
\t \t if (version == null) { 
 
\t \t \t if (Math.random() >= 0.5){ 
 
\t \t \t \t Cookies.set("version", "A"); 
 
\t \t \t \t var version = "A" 
 
\t \t \t }else{ 
 
\t \t \t \t Cookies.set("version", "B"); 
 
\t \t \t \t var version = "B" 
 
\t \t \t } 
 
\t \t \t 
 
\t \t \t ga('send', 'event', 'Pricing Experiment', 'New Unique Visit', version, 0, {nonInteraction: true}); \t \t \t 
 
\t \t } 
 
\t } 
 

 
});

看看是否能得到您的指标紧密联系起来,再考虑跟踪数据的这种替代方式:

也许一个这里的事件并不是最好的解决方案完全。您所做的事听起来像是将自定义维度作用于用户的绝佳选择。

我建议创建一个名为“定价实验”的用户范围的自定义维度(因为使用GA实验,用户将在相继的会话中始终看到相同的变化),然后在您的create函数之后,替换事件与此: ga('set', 'dimension1', version);(请务必与实际数量,以取代dimension1

最后,在设置的尺寸(自定义尺寸使用打类型被运送到GA)之后发送网页浏览

<head> 
 
\t <script> 
 
\t \t //Your preferred method of loading analytics.js here... 
 
\t \t ga('create', 'UA-XXXXXXXX-1', 'auto'); 
 
\t \t 
 
\t \t if(isLocalStorageNameSupported()){ 
 
\t \t \t var version = Cookies.get("version"); 
 
\t \t \t if (version == null) { 
 
\t \t \t \t if (Math.random() >= 0.5){ 
 
\t \t \t \t \t Cookies.set("version", "A"); 
 
\t \t \t \t \t var version = "A" 
 
\t \t \t \t }else{ 
 
\t \t \t \t \t Cookies.set("version", "B"); 
 
\t \t \t \t \t var version = "B" 
 
\t \t \t \t } 
 
\t \t \t \t 
 
\t \t \t \t ga('set', 'dimension1', version); \t \t \t 
 
\t \t \t } 
 
\t \t } 
 
\t \t 
 
\t \t ga('send', 'pageview'); 
 
\t \t 
 
\t \t function isLocalStorageNameSupported() { 
 
\t \t \t var testKey = 'test', storage = window.localStorage; 
 
\t \t \t try { 
 
\t \t \t \t storage.setItem(testKey, '1'); 
 
\t \t \t \t storage.removeItem(testKey); 
 
\t \t \t \t return true; 
 
\t \t \t } catch (error) { 
 
\t \t \t \t return false; 
 
\t \t \t } 
 
\t \t } 
 
\t \t 
 
\t </script> 
 
</head>

现在,当您查看任何其他报告时,可以应用“定价实验”的次级维度,并且您将能够显示他们看到的版本。

这样您就可以获取上下文数据,而不会改变报告指标的匹配类型。

再一次,我很抱歉,如果这不是完全说明你的问题 - 我正在采取你提供的片段,尽我所能填写任何空白。

+0

谢谢!我将实施您建议的自定义维度并监视结果 –

相关问题