2017-06-20 53 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

謝謝!我將實施您建議的自定義維度並監視結果 –

相關問題