2014-07-16 13 views
12

używamy API analityki ściągnąć eksperymentów i zmian, a nie wybór zmienności dla naszych gości po naszej stronie (czyli eksperymenty po stronie serwera, jak opisano tutaj: https://developers.google.com/analytics/solutions/experiments-server-side)Wielokrotne eksperymenty z Google Analytics API

Kiedy użytkownik odwiedza URL, który jest pod eksperymentowania i mają wybraną odmianę, dostają javascript, jak opisano następująco:

<script> 
cxApi.setChosenVariation(1, 'a9BcDEFgHijKl8mON-Opqw'); 
</script> 

ta działa poprawnie. Chcielibyśmy uruchomić wiele eksperymentów (na przykład eksperyment obejmujący całą witrynę z menu i eksperymentem specyficznym dla strony), wybór odmian i wszystko działa dobrze na naszym końcu. Do użytkownika, gdy są one częścią wielu eksperymentów, dostają wiele połączeń z setChosenVariation tak:

<script> 
cxApi.setChosenVariation(1, 'a1BcDEFgHijKl2mON-3pqr'); 
cxApi.setChosenVariation(1, 'z9YxWVVuTsrPl8oNM-7lkj'); 
</script> 

nie mogę znaleźć żadnego powodu, dlaczego nie powinno to działać, ale w wynikach eksperymentów, gdy tak się stanie, widzimy wszystkich użytkowników przypisanych tylko do jednego eksperymentu, chociaż oba eksperymenty dają wyniki (tworzenie współczynników konwersji> 100%).

conversion rate > 100%

Czy istnieje wytłumaczenie tego zachowania (czuję się chyba drugie połączenie jest nadrzędne pierwsze połączenie?) I/lub właściwy sposób to zrobić?

Dzięki bardzo

Odpowiedz

6

Łatwa odpowiedź nie działa dla mnie. Dzięki rozszerzeniu Google Analytics Debugger mogłem zobaczyć, że zarówno ci ga('send','pageview') wysyłali dane o drugim eksperymencie. Korzystanie synchronous call pracował i skończyło się z czymś takim:

var sendExperiment = function(tracker, experimentVar, experimentId) { 
    cxApi.setChosenVariation(experimentVar, experimentId); 
    tracker.send('event', 'experiment', 'view',{'nonInteraction': 1}); 
} 

ga(function(tracker) { 
sendExperiment(tracker, 1, 'a1BcDEFgHijKl2mON-3pqr'); 
sendExperiment(tracker, 2, 'z9YxWVVuTsrPl8oNM-7lkj'); 
}); 
+1

Mamy odsunięte od GA teraz (i odpowiedź Łatwość nie udało nam albo). Ta odpowiedź wygląda dobrze, ale nie jestem w stanie jej przetestować – bencoder

+0

dzięki! Wiem, że to naprawdę stare pytanie, ale spędziłem tyle czasu szukając odpowiedzi bez powodzenia, że ​​zdecydowałem się opublikować mój wynik. – basiam

+0

Nie sądzę, że jest to tak naprawdę nazywane synchronizacją. To, co dostajesz, to właściwie dwie wywołania asynchroniczne z innymi ustawionymi parametrami eksperymentu. –

1

myślę, że należy wysłać wartości eksperymentu do Google Analytics, kiedy ustawić wybraną odmianę pod każdym doświadczeniu. Kod:

cxApi.setChosenVariation(1, 'a1BcDEFgHijKl2mON-3pqr'); 
ga('send', 'pageview'); 
cxApi.setChosenVariation(1, 'z9YxWVVuTsrPl8oNM-7lkj'); 
ga('send', 'pageview'); 
0

Zdaję sobie sprawę, że jest to nieco starej pytanie, ale ja niedawno musiał wymyślić rozwiązanie tego problemu również i pomyślałem, że dzielę podejście kilka wtrętów z prawdziwego świata wrzuconych na dobre.

Na wysokim poziomie moje podejście działa w następujący sposób:

  1. Załaduj Eksperymentowanie z treścią kodu API Google
  2. Ustawienia Analytics i utworzyć drugą trackera (dla tego samego profilu), który będzie używany tylko do śledzić drugi równoległy eksperyment, który prowadzę.
  3. Dokonaj personalizacji mojego zwykłego kodu GA.
  4. Utwórz funkcję, aby sprawdzić, czy strona, na której aktualnie się znajduje, jest tą, na której uruchomiłem dany test, a jeśli tak, znajdź wybraną odmianę dla tego konkretnego eksperymentu, wykonaj ją i wyślij informację z powrotem do odpowiedni tracker GA ze zdarzeniem niestandardowym.

Niestety, musiałem przyjąć takie podejście, ponieważ platforma, z którą pracowałem, pozwoliła mi tylko wprowadzić zmiany w nagłówku globalnym, a nie w oparciu o jakąkolwiek stronę. Tak jak wspomniałem, po prostu sprawdza kanoniczny tag URL pod adresem URL, na którym przeprowadzam test.

<!-- Load the regular Content Experiments JS API without any ID parameters --> 
 
<script src="//www.google-analytics.com/cx/api.js"></script> 
 

 
<!-- Setup Google Analytics --> 
 
<script> 
 
    (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ 
 
    (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), 
 
    m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) 
 
    })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); 
 

 
    // Create the first regular tracker like you normaly would 
 
    ga('create', 'UA-XXXXXXXX-1', 'auto', {'allowLinker': true, 'siteSpeedSampleRate': 90}); 
 
    // Create the second named tracker just for experiments 
 
    ga('create', 'UA-XXXXXXXX-1', 'auto', 'experimentTracker'); 
 

 
    //Setup all of the regular customizations for the regular tracker if you need to 
 
    ga('require', 'linker'); 
 
    ga('require', 'linkid', 'linkid.js'); 
 
    ga('require', 'ec'); 
 
    ga('require', 'displayfeatures'); 
 
    ga('linker:autoLink', ['example.com','domain2.com'], false, true); 
 

 
    // Send the pageview like normal for the regular tracker 
 
    ga('send', 'pageview'); 
 
</script> 
 

 
<script> 
 
    // Define the different experiments you wish to run and the page 
 
\t var experimentOneID = "a1BcDEFgHijKl2mON-3pqr"; 
 
\t var \t experimentTwoID = "z9YxWVVuTsrPl8oNM-7lkj"; 
 
\t var experimentOneURL = "http://www.example.com/experiment-1/"; 
 
\t var experimentTwoURL = "http://www.example.com/experiment-2/"; 
 

 
    var runContentExperiment = function(experimentID) { 
 
    // Ask Google Analytics which variation to show the user and specify the experiment ID. 
 
    var chosenVariation = cxApi.chooseVariation(experimentID); 
 
    // Set the chosen variation for GA 
 
    cxApi.setChosenVariation(chosenVariation, experimentID); 
 

 
    // Here is where we have the page specific code changes you might want to make 
 
    if (experimentID === experimentOneID) { 
 
     var pageVariations = [ 
 
     function() {}, // Original: Do nothing. This will render the default HTML. 
 
     function() { // Variation 1 of Experiment 1 
 
      // Do Something here in experiment 1 
 
     } 
 
     ]; 
 
     pageVariations[chosenVariation] 
 
     ga('send', 'event', 'Content Experiment', 'View', experimentID, { 'nonInteraction': 1 }); 
 
    } 
 
    else if (experimentID === experimentTwoID) { 
 
     var pageVariations = [ 
 
     function() {}, // Original: Do nothing. This will render the default HTML. 
 
     function() { // Variation 1 of Experiment 2 
 
      // Do Something here in experiment 2 
 
     }, 
 
     function() { // Variation 2 of Experiment 2 
 

 
     } 
 
     ]; 
 
     pageVariations[chosenVariation] 
 
     ga('experimentTracker.send', 'event', 'Content Experiment', 'View', experimentID, { 'nonInteraction': 1 }); 
 
    } 
 
    } 
 

 
    // Check the canonical URL of the page and make sure it matches the one we want 
 
    var canonical = document.querySelector("link[rel='canonical']").href; 
 
    if (canonical === experimentOneURL) { 
 
    $(function() { 
 
     runContentExperiment(experimentOneID); 
 
    }); 
 
    } 
 
    else if (canonical === experimentTwoURL) { 
 
    $(function() { 
 
     runContentExperiment(experimentTwoID); 
 
    }); 
 
    } 
 
</script>

Powiązane problemy