Feb 27 2009

HelpSemaforoQuesto semaforo indica il livello difficoltà del post
semaforo verde - articolo per tutti semaforo giallo - articolo avanzato semaforo rosso - articolo per esperti

Due codici di monitoraggio nella stessa pagina

autore: categoria: codice di monitoraggio

Lego gemelliUna delle domande che mi viene rivolta più spesso – e che noto essere un evergreen tra le frasi di ricerca dei visitatori in arrivo – riguarda la presenza di due o più codici di monitoraggio di Google Analytics sulla stessa pagina/sito. Con la vecchia versione dello script, quella che fa riferimento a urchin.js, le cose erano leggermente più complicate di adesso, ma non ne parleremo. Cosa aspettate ad aggiornare il GATC a ga.js? 🙂

Poiché il nuovo codice di monitoraggio è scritto seguendo la logica della programmazione a oggetti, per inviare i dati a due profili differenti è sufficiente creare due distinti oggetti di tracciamento. In GA gli oggetti di tracciamento sono quelli identificati dalla riga di codice
var pageTracker = ...

In effetti quando nei post ci si riferisce a pageTracker si commette una imprecisione: quello è il nome dell’unico oggetto creato per definizione dal codice che Google ci mette a disposizione, ma nulla vieta di cambiargli nome o, appunto, crearne più d’uno. Ecco allora che un codice fatto così:


<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>

<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-12345-1");
pageTracker._trackPageview();

var MarcoTracker = _gat._getTracker("UA-99999-3");
MarcoTracker._trackPageview();
</script>

è perfettamente legale e funzionante, ed invierà i dati all’account 12345 profilo 1 e 99999 profilo 3. Se la necessità è quella di inviare dati a più di due account si procederà di conseguenza creando ulteriori oggetti di tracciamento con nomi differenti. Questi oggetti sono (o meglio, dovrebbero essere, ma lo vediamo più tardi) completamente indipendenti l’uno dall’altro, per cui è possibile aggiungere funzioni al primo piuttosto che al secondo.

Nella realtà le cose sono leggermente differenti, e Lunametrics ci spiega perché: nonostante i codici di tracciamento facciano riferimento ad account differenti, i cookie – che ricordo sono scritti in base al dominio e non all’account Analytics – sono gli stessi per tutti e due (o più) oggetti di tracciamento.
Tra i casi di “sicuro insuccesso” relativi alla presenza di più codici di monitoraggio in una stessa pagina, Lunametrics ne cita tre che vale la pena di riportare:

1 – Codici differenti


var pageTracker = _gat._getTracker("UA-11111-1");
pageTracker._setAllowHash(false);
pageTracker._setAllowLinker(true);
pageTracker._trackPageview();

var MarcoTracker = _gat._getTracker("UA-22222-1");
MarcoTracker._trackPageview();

Nell’esempio di Lunametrics il primo oggetto di tracciamento include le funzioni _setAllowHash e _setAllowLinker e il secondo no. In questo caso i due oggetti tentano di scrivere lo stesso cookie con intenzioni e formati diversi.

2 – Pagine differenti

Nel caso in cui uno dei due codici non sia inserito in tutte le pagine, magari in seguito a una condizione if impostata male o non realizzata, alcune pagine vengono tracciate in un account e in un altro no. Il codice di tracciamento “in difetto” vedrà i cookie che erano originariamente stati creati da una pagina che non ha quel codice. La prima pageview registrata dal secondo codice avrà informazioni di referrer diverse, poiché penserà di essere la prima pagina della visita mentre in realtà è la seconda, e così via…

3 – Segmenti personalizzati in base a _setvar()

Il segmento personalizzato “Valore definito dall’utente” viene impostato tramite la funzione _setVar() e immagazzinato nel cookie __utmv. Siccome i due codici usano gli stessi cookie, un segmento personalizzato creato dal primo codice è automaticamente creato e disponibile anche per il secondo. Questo comporta l’impossibilità di avere, ad esempio, un valore impostato su “loggato/non loggato” per il primo oggetto e “maschio/femmina” per il secondo. Poiché l’esecuzione di javascript è sequenziale nella pagina, il secondo codice sovrascriverà sempre il cookie e l’unica informazione disponibile per il segmento, alla visita/pagina successiva, sarà quella impostata dal quell’oggetto di tracciamento.

Se decidete di implementare più codici di monitoraggio di Google Analytics su uno stesso sito, o una stessa pagina, dovete prestare attenzione alle possibili conseguenze.
[photo credit: oskay su flickr]

Condividi l'articolo:

18 Commenti

  1. Salve Marco, ho letto il post ed è molto interessante. Ho fatto subito una prova e ho riscontrato che mentre le visite sono perfettamente identiche fra i due profili, gli obiettivi no. Ho impostato un monitoraggio su un link nella pagina che ha il doppio codice e su analytics ho inserito l’obiettivo in entrambi i profili, risultato, l’obiettivo viene contato solo su un profilo.

  2. è naturale. devi richiamare la funzione per tracciare il link ANCHE per il secondo oggetto di monitoraggio. Mantenendo i nomi degli oggetti come nel post, viene così
    pageTracker._trackPageview(‘obiettivo’);MarcoTracker._trackPageview(‘obiettivo’)

  3. Provo immediatamente…grazie mille!!!!

  4. Ciao Marco, ma avere in uno stesso sito sia il codice vecchio urchin.js che quello nuovo di GA crea problemi? Grazie ciao Carla

  5. si, è un caso sconsigliato da Google stessa!

  6. Ciao!
    La mia è più che altro una curiosità:
    ma se inserisco due volte lo stesso identico codice in una pagina cosa succede? Raddoppiano tutti i dati??

    Ciao!!

  7. Ciao, non mi sono dimenticato di risponderti! Pensavo che la risposta fosse banale, ma ho messo su un esperimento e le cose non vanno come dovrebbero. Se non sto prendendo una cantonata, ci faccio un post 😀

  8. Ciao Marco,
    se ho 2 codici diversi (ma identici come caratteristiche e finalità) e uno è collegato ad Adwords ci sono dei problemi di incoerenza dei dati Adwords, secondo te?

  9. direi di no. Adwords è collegato all’account e al profilo, non al codice di monitoraggio.

  10. Grazie, mi è venuto i l dubbio a sentire un sedicente consulente adwords che mi voleva far rimuovere il mio codice per lasciare solo il suo… 😉

  11. Ottimo post era proprio quello che stavo cercando e mi è tornato utilissimo!!!!

  12. Ciao Marco,
    con l’attuale versione del codice di monitoraggio, è possibile fare la stessa operazione descritta in questo post?

  13. cosa succede se invece il vecchio sito ha un codice di google analytics e viene buttato, ma ancora attivo nell’accaunt del primo webmaster e ne creo uno nuovo per il nuovo sito?

  14. niente, il vecchio account vedrà 0 visite

  15. Una domanda: ma avere due codici in uno stesso sito penalizza dal punto di vista del posizionamento?

  16. direi proprio di no. come può influire?

  17. Salve Marco, sto lavorando su un sito wordpress. Su Google Webmaster Tools devo inserire lo stesso dominio con e senza www. Quello con www l’ho scelto come preferito. Come faccio a verificare quello senza www? Devo inserire il codice di tracciamento per la seconda volta? Se sì dove precisamente? Grazie mille!

Scrivi un Commento