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:

32 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…

  23. Ciao Marco,
    vorrei porre un quesito che attualmente non riesco a risolvere.

    Ho un problema nel tracciamento della sorgente delle conversioni ecommerce.

    Il percorso è il seguente:

    Sito A (con analytics) -> Sito B (no analytics) con redirect -> Paypal -> Sito B (con tracciamento conversione con codice analytics Sito A)

    Il problema è che su analytics tutte le vendite risultano da paypal.com / referral.

    Ho provato ad implementare la modifica del UTM_NOOVERRIDE ma la situazione non è cambiata.

    Dove potrebbe essere il problema?

    Ti ringrazio in anticipo per la disponibilità.

  24. secondo me il problema è che non passi i cookie con la sorgente originale da A a B

  25. Grazie per la risposta.

    Quindi, in grosso modo, come mi consigli di procedere?

  26. difficile entrare nello specifico della tua implementazione senza vederla. E’ necessario usare le funzioni indicate nel post per passare correttamente i cookie con la sorgente originale della visita…

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