2017-06-20 21 views
8

Używam test AB w witrynie w mojej witrynie e-commerce. Po ziem gości, przypisać im lokalnego przechowywania kluczy/wartości:AB Testowanie za pomocą lokalnej pamięci masowej i Google Analytics

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 
     });  
    } 
    } 



}); 

Po użytkownik sprawdza, mogę sprawdzić, która wersja są na i wysłać kolejną Analytics Event Google.

Moje zdarzenia konwersji w kasie są wyświetlane poprawnie. Ale dostaję tylko około 25% wydarzeń "Nowa wyjątkowa wizyta". Analytics pokazuje 12 000 odwiedzin witryny, ale mam tylko 3000 zdarzeń niestandardowych.

Która część mojego kodu powoduje tę rozbieżność i jak mogę wywołać zdarzenie podczas wszystkich odwiedzin?

Odpowiedz

4

To jest trochę ujęcie w ciemności, ponieważ uruchomiłem twój kod i zdarzenie uruchomi się za każdym razem (zakładam, że twój obiekt/funkcje działają Cookies), ale zastanawiam się, czy 12.000 numer może nie być poprawny ...

Czy ten fragment tutaj jest dokładnie taki, jaki jest w Twojej witrynie? dokładnie. Gdzie przesyłasz odsłonę GA? Pytam, ponieważ widzę, że wydarzenie następuje zaraz po funkcji create. Innym potencjalnym problemem z raportowaniem, który widzę, jest to, że wydarzenie ma charakter interaktywny, co oznacza, że ​​wpłynie na współczynnik odrzuceń, jeśli przesyłasz także odsłonę strony (co do której zakładam, że jesteś).

Co konkretnie masz na myśli, gdy powiesz 12 000 odwiedzin? Sesje?

Wysyłanie zdarzeń przed odsłukami stron zapewnia również kilka wymiarów strony docelowej: (not set). Oznacza to, że wydarzenie nie zostanie powiązane z żadną stroną docelową, a po wysłaniu odsłon również zwiększy liczbę użytkowników ... Jeśli widzisz więcej użytkowników niż sesji, które wskazywałyby, że to jest problem.

Niektóre rzeczy spróbować:

  • Wyślij odsłonę przed imprezą.
  • Ustaw zdarzenie jako zdarzenie niezwiązane z interakcją, korzystając z {nonInteraction: true}.
  • Inną rzeczą, którą można zrobić, jest umieszczenie zdarzenia tylko w trybie warunkowym - przesyłanie odsłon zawsze powinno się odbywać niezależnie od warunków przechowywania lokalnego.
  • Edytuj: Czekasz również na DOM gotowy do create. Przenieślibyśmy to do tagu <head>, więc wydarzenie jest jedyną rzeczą, która czeka na gotowy dokument.

<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 } 
 

 
});

sprawdzić, czy dostaje swoje metryki bliżej siebie, a następnie rozważyć ten alternatywny sposób śledzenia danych:

Być może wydarzenie tutaj nie jest najlepszym zolem ution całkowicie. To, co robisz, brzmi jak doskonały kandydat do korzystania z niestandardowego wymiaru z zakresu określonego dla użytkownika.

Zalecam utworzenie niestandardowego wymiaru o nazwie "Eksperyment cenowy" z zakresem użytkownika (ponieważ w przypadku eksperymentów GA użytkownik zawsze zobaczy tę samą odmianę po kolejnych sesjach), a następnie po funkcji create, zamień wydarzenie z tego:. ga('set', 'dimension1', version); (należy wymienić dimension1 rzeczywistą liczbę

Wreszcie wysłać odsłonę po ustawieniu wymiar (niestandardowe wymiary używać hit rodzajów być transportowane do 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>
.

Teraz po przejrzeniu dowolnego innego raportu można zastosować dodatkowy wymiar "Eksperymentu cenowego", a użytkownik będzie mógł wyświetlić wersję, którą zobaczył.

W ten sposób można uzyskać dane kontekstowe bez naruszania typów działań, które zmieniają dane raportowania.

Jeszcze raz przepraszam, jeśli to nie wyjaśnia dokładnie twojego problemu. Biorę podany przez ciebie fragment kodu dosłownie i wypełniając puste pola najlepiej jak potrafię.

+0

Dziękujemy! Zaimplementuję niestandardowy wymiar, który sugerujesz i monitorujesz wyniki –

Powiązane problemy