2014-07-16 3 views
12

Abbiamo utilizzare l'API di analisi per scaricare gli esperimenti e variazioni, e fare la scelta di variazione per i nostri visitatori sul nostro finale (vale a dire gli esperimenti sul lato server, come descritto qui: https://developers.google.com/analytics/solutions/experiments-server-side)più esperimenti con API di Google Analytics

Quando un visitatore visita un URL che è in fase di sperimentazione e hanno una variazione selezionato, ottengono il javascript, come descritto come:

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

Questo sta lavorando bene. Vorremmo eseguire più esperimenti (ad esempio, un esperimento a livello di sito che coinvolge il menu e un esperimento specifico per la pagina), la selezione delle varianti e tutto funziona alla perfezione. Per l'utente, quando sono parte di molteplici esperimenti, che ricevono più chiamate di setChosenVariation in questo modo:

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

non riesco a trovare alcun motivo per cui questo non dovrebbe funzionare, ma nei risultati degli esperimenti, quando ciò accade, vediamo che tutti gli utenti vengono assegnati a un solo esperimento, sebbene entrambi gli esperimenti abbiano risultati (creando tassi di conversione> 100%).

conversion rate > 100%

C'è una spiegazione di questo comportamento (mi sento come forse la seconda chiamata è prevalente la prima chiamata?) E/o un modo corretto di fare questo?

Grazie molto

risposta

6

Facilità risposta non ha funzionato per me. Grazie all'estensione Google Analytics Debugger ho potuto vedere che entrambi quelli ga('send','pageview') stavano inviando dati sul secondo esperimento. Utilizzando synchronous call lavorato e ho finito con qualcosa di simile:

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

Abbiamo spostato lontano da GA ora (e la risposta di facilità non ha funzionato per noi o). Questa risposta sembra buona, ma non sono in grado di testarla – bencoder

+0

grazie! So che questa è una domanda molto vecchia, ma ho passato così tanto tempo a cercare risposte senza fortuna che ho deciso di pubblicare il mio risultato comunque. – basiam

+0

Non penso che sia effettivamente chiamato sync. Quello che ottieni sono in realtà due chiamate asincrone con i parametri dell'esperimento impostati in modo diverso. –

1

penso che si dovrebbe inviare i valori esperimento di Google Analytics quando si imposta una variazione scelta sotto ogni esperimento. codice come questo:

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

Mi rendo conto che è un po 'di una vecchia questione, ma di recente ho dovuto trovare una soluzione per anche questo problema e ho pensato di condividere il mio approccio con un paio di restrizioni del mondo reale lanciate in buona misura.

Ad alto livello il mio approccio funziona nel seguente modo:

  1. caricare il contenuto Esperimenti codice di API di Google
  2. Analytics di installazione e creare una seconda tracker (per lo stesso profilo) che verrà utilizzato solo per traccia il secondo esperimento concorrente che sto eseguendo.
  3. Personalizza il mio normale codice GA.
  4. Creare una funzione per verificare se la pagina in cui si trova attualmente l'utente è quella su cui sto eseguendo un determinato test e, in tal caso, trovare la variante scelta per quell'esperimento specifico, eseguirla e inviare le informazioni in il rilevatore GA pertinente con un evento personalizzato.

Sfortunatamente, ho dovuto adottare questo approccio poiché la piattaforma con cui stavo lavorando mi permetteva solo di apportare modifiche all'intestazione globale piuttosto che a qualsiasi tipo di base specifica della pagina. Quindi, come ho detto, controlla solo il tag URL canonico contro l'URL su cui sto facendo un 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>