Sep 11 2008

funzioni: _setAllowLinker(), _link() e _LinkByPost()

Riprendendo il post precedente, dicevo che _setDomainName() andava impostato su “none” nel caso in cui si volesse avere il controllo completo dei casi in cui i visitatori avrebbero dovuto passare da un dominio a un altro mantenendo lo stesso cookie. Questa operazione è particolarmente importante quando i domini sono completamente differenti, e non sono solo uno il sottodominio dell’altro, ad esempio www.miosito.it e www.shopmiosito.com.

La funzione _setAllowLinker(booleano) permette di abilitare su Google Analytics la gestione manuale della migrazione dei cookie, e di default è disabilitata. Va invocata esplicitamente nel GATC insieme a _setDomainName() in questo modo:

<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-xxxxxx-x");
pageTracker._setDomainName("none");
pageTracker._setAllowLinker(true);
pageTracker._trackPageview();
</script>

sia sul sito origine sia sul sito destinazione. A questo punto è necessario aggiungere un pezzo di codice a ogni singolo link che porta da un dominio all’altro e che non vogliamo dia origine a una nuova visita (come appunto il caso di un carrello acquisti) con la funzione _link(url_destinazione), per esempio così:
<a href="http://www.shopmiosito.com/?negozio=scarperosse" onclick="pageTracker._link(this.href); return false;">inizia l'acquisto delle tue scarpe</a>

Bisogna notare che il cookie in questo caso è passato in ogni caso con una richiesta GET, e quindi è visibile nell’url del browser. Per passare da un sito a un altro usando una form, è necessario usare l’analoga funzione _linkByPost(oggetto_form), per esempio usando il codice:
<form action="http://www.shopmiosito.com/paginaprocesso.php" name="alcarrello" method="post" onsubmit="pageTracker._linkByPost(this)">

Condividi l'articolo:

28 Commenti

  1. Ciao
    sto cercando una soluzione a un problema e questo codice dovrebbe aiutarmi (se ho capito giusto)

    Devo monitorare due domini che sono in realtà lo stesso sito.Due siti copia (miosito.it e miosito.com) con cms unico e senza redirect. Come faccio a settare il filtro in modo che io possa leggere solo le visite dal .it?
    Grazie
    elena

  2. sono purtroppo costretto a risponderti che secondo me sarebbe più naturale, consigliato e facile fare un redirect :)

    Ma visto che escludi già tu questa possibilità: la soluzione più veloce mi sembra un filtro “cerca e sostituisci” che cambia l’host da .com a .it. A quel punto GA sommerà le visite delle pagine uguali (index con index, about con about, ecc.) a patto che ovviamente abbiano stesso URL tranne .it e .com

  3. Il metodo _link() funziona, ma i parametri sono passati in chiaro. E’ possibile utilizzare linkbypost() per nascondere i parametri applicandolo però ad un link semplice? Esistono altre soluzioni per passare i parametri non in chiaro?

  4. Salve, anzitutto complimenti per il sito e per gli articoli spiegati in modo davvero semplice e chiaro. Ma vorrei chiederti se possibile di affrontare questo problema.

    Ho un gruppo di sitiweb che vorrei monitorare con un solo codice di google analytics e possibile? Se si come puoi fare un esempio pratico completo?

    P.S.
    Vorrei monitorare le visite provenienti dai motori di ricerca google.it/com/fr/de/ google immagini
    e msn.it/com e msn immagini
    yahoo.it/com e yahoo immagini
    youtube.com e vimeo.com
    facebook.com e twitter.com, etc.. etc..

    calcola che i miei siti sono così:
    pippo.it
    pluto.de
    paperino.com
    e altri domini con estensione diversa .net,org,info,fr,de, co.uk etc.. etc..

  5. Leo: ho corretto questo articolo perché conteneva una inesattezza: il cookie viene passato in tutti i casi in chiaro, la scelta di link e linkbypost dipende solo dal metodo usato per inviare i visitatori all’altro sito. Quindi la risposta è no.

  6. angelo, è sufficiente impostare il codice di monitoraggio con le funzioni _setDomainName impostata sul dominio, _setAllowLinker(true) e – appunto – _link e _linkByPost nei link e form che trasferiscono il visitatore

  7. grazie, ma intendi così il codice per più domini:

    var _gaq = _gaq || [];
    _gaq.push(['_setAccount', 'UA-xxxxxxx']);
    _gaq.push(['_setDomainName', 'pippo.it']);
    _gaq.push(['_setDomainName', 'paperino.net']);
    _gaq.push(['_setDomainName', 'pluto.com']);

    _gaq.push(['_setAllowLinker', true]);
    _gaq.push(['_trackPageview']);

    (function() {
    var ga = document.createElement(‘script’); ga.type = ‘text/javascript’; ga.async = true;
    ga.src = (‘https:’ == document.location.protocol ? ‘https://ssl’ : ‘http://www’) + ‘.google-analytics.com/ga.js’;
    var s = document.getElementsByTagName(‘script’)[0]; s.parentNode.insertBefore(ga, s);
    })();

  8. no, ogni _setDomainName va sul dominio cui si riferisce

  9. scusa l’ignoranza ma non mi e chiaro, se puoi fare un’esempio preciso aiuterai i tuoi utenti a capire meglio.

  10. su pippo.it ci sarà

    var _gaq = _gaq || [];
    _gaq.push(['_setAccount', 'UA-xxxxxxx']);
    _gaq.push(['_setDomainName', 'pippo.it']);
    _gaq.push(['_setAllowLinker', true]);
    _gaq.push(['_trackPageview']);

    su paperino.net invece

    var _gaq = _gaq || [];
    _gaq.push(['_setAccount', 'UA-xxxxxxx']);
    _gaq.push(['_setDomainName', 'paperino.net']);
    _gaq.push(['_setAllowLinker', true]);
    _gaq.push(['_trackPageview']);

    e così via…

  11. Ciao Marco,
    innanzitutto complimenti per il blog, poi volevo chiederti: devo monitorare l’utente su una piattaforma e-commerce che è su un altro dominio. Se trasferisco i cookie sull’altro dominio, le specifiche per l’e-commerce tracking (addtrans, additem, track trans) come vanno impostate?
    Grazie

  12. non hanno bisogno di nessun settaggio particolare, se i cookie sono stati passati bene!

  13. nel senso che non è necessario metterli nemmeno sul primo sito o che i dati sono riposti nei cookie quindi non c’è bisogno di ripeterli nel secondo dominio? Grazie dell’aiuto :)

  14. le tre funzioni che citi vanno SOLO nella thankyou del dominio dove avviene la transazione. i dati delle sorgenti sono nei cookie, quindi una volta assicurati che le funzioni preposte al loro trasferimento funzionano correttamente, il tracciamento è completo.

  15. grazie mille!Sei stato gentilissimo ed esaustivo :)

  16. Ciao Marco.
    facendo un analisi SEO di questo sito http://www.conf artigianato.toscana.it.(confartigianato è tutt’attaccato, ndt). Nel fare l’analisi del codice html ho notato che chi ha creato il sito ha piazzato il codice GA all’interno del tag , tra la riga 40 e la riga 54. NE hai una vaga idea per cui sia stato messo li? Io sinceramente non lo capisco. Inoltre riesci a capire perche abbiano messo i codici per un monitoraggio cross domain, senza che poi i parametri fossero settati?
    Grazie Luca

  17. no, bisognerebbe chiederlo a chi ha fatto il sito. La posizione del codice in realtà è ininfluente, ma per buona norma è meglio spostarlo nell’header. Quanto al corss domain, senza sapere se vi sono, o vi erano, domini collegati è difficile dare un giudizio…

  18. ;) grazie

  19. Ciao Marco,
    la mia domanda è: che succede se il form che passa i dati da un sito all’altro è contenuto in un iframe? Il _linkbypost funziona lo stesso? O ci sono altre soluzioni?

  20. non ho mai provato, va testato. Di base dovrebbe funzionare, tuttavia ci sono alcune variabili da tenere in considerazione: la pagine del frame è nello stesso dominio, o in un sottodominio, o in un sito differente? a seconda della risposta, può variare la configurazione e il “giro del fumo” che devono fare i cookies

  21. Grazie per la risposta Marco.
    Dunque, nello specifico la situazione è questa: ho un sito A con un form di prenotazione e un sito B in cui si arriva dopo aver compilato il form. Il form nel sito A è contenuto in un iframe del sito B…detto così sembra complicato (!)…ma se così stanno le cose, secondo te il _linkbypost può funzionare?

  22. in questo caso forse non ce n’è bisogno, se crei l’iframe con _getlinkerurl il cookie dovrebbe già essere passato correttamente. Se invece lo crei senza, allora dovrebbe funzionare, ma ripeto è il caso di testarlo per bene perché ci sono un paio di failure point da verificare…

Trackbacks

  1. una rettifica sui cookie · Google Analytics in 30 secondi
  2. Due codici di monitoraggio nella stessa pagina · Google Analytics in 30 secondi
  3. Uso di _setVar() su più domini · Google Analytics in 30 secondi
  4. Profili e account-somma · Google Analytics in 30 secondi
  5. _setXDomain su GAaddons • Google Analytics in 30 secondi
  6. Automatizzare il passaggio tra domini • Google Analytics in 30 secondi

Scrivi un Commento