Jan 24 2010

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

Setdomainname() e AdWords

autore: categoria: javascript

Google Analytics è pensato per essere usato nella maniera più semplice possibile; ci sono margini di miglioramento, certo, ma nella maggior parte dei casi le cose funzionano da sole, quasi come per magia. Poiché però il web è vasto, e le casistiche possibili sono pressoché infinite, alcune volte c’è bisogno di indagare e capire perché gli ingranaggi si inceppano: è il caso di questo post di Brian Kats su VKI studios, relativo all’uso di setdomainname(), initdata() e le campagne Adwords, e a casi in cui il sito che si sta monitorando compare come referrer di se stesso, falsando quindi l’attribuzione della campagna.

Gli scenari più comuni per questo errore sono:

  1. non state usando _seDomainName() su nessuna pagina:

    – il dominio principale (mywidgets.com) non viene rediretto al sottodominio www (www.mywidgets.com). I visitatori potrebbero digitare l’indirizzo sbagliato e poi cliccare su link all’URL completo, generando un referrer inconsistente
    – si usano sottodomini in modo che il navigatore passi da uno all’altro e viceversa.
    – ci sono redirect inconsistenti tra il dominio principale e i sottodomini
    Soluzioni:
    – costringere il webmaster/provider/sistemista a redirezionare il dominio principale sul sottodominio www
    – seguire le best practice seguenti

  2. C’è un misto di chiamate a urchin.js e ga.js, risultato di:

    – Una migrazione dal vecchio codice

  3. – La migrazione di pagine che usavano il vecchio codice su un sito col nuovo codice
    – La migrazione di specifiche pagine (thank you page, ad esempio)
    – L’uso di urchin.js per Google Website Optimizer su un sito che usa ga.js (o viceversa)
    Soluzione:
    – La vecchia variabile _udn deve essere trasformata nell’equivalente funzione per ga.js _setDomainName() (es: e.g.: _udn =”.MyWidgets.com” diventa _setDomainName(“.MyWidgets.com”))

  4. Effettuare test con Google Website Optimizer e usare un codice differente dal resto del sito.

    Soluzione:
    – Correggere il codice di GWO per usare _setDomainName() in modo appropriato (si vedano gli esempi in fondo)

  5. Ordine incorretto delle funzioni _set* e di _initData() o altre funzioni che inviano dati a Google Analytics (ecommerce, eventi e la funzione _setVar()).

    – _initData() è deprecata e l’uso è opzionale. In ogni caso, tutte le funzioni che inviano dati a GA la invocano internamente. Questo è il motivo per cui non è più necessario specificarla.
    – Il suo scopo è quello di creare l’oggetto di tracciamento e (ri)creare i cookie __utm*
    – _initData() fa questo lavoro secondo le impostazioni esistenti al momento in cui è chiamata. Tutte le funzioni _set* seguenti vengono ignorate
    Soluzione:
    – tutte le funzioni _set* (a parte _setVar()) devono essere chiamate prima di qualsiasi funzione che contenga la chiamata interna a _initData(), altrimenti le loro impostazioni saranno ignorate.

  6. Inconsistenze generali tra le pagine, risultato di manutenzione evolutiva, programmatori o webmaster multipli e altri casi che possono presentarsi nella normale vita di un progetto web

Perché adWords viene derubato della paternità della visita

  • Nell’esempio seguente, _initData() è responsabile della creazione di un set di cookie per il sottodominio www.mywidgets.com, perché _setDomainName(“.mywidgets.com”) viene invocata troppo tardi:
    var pageTracker = _gat._getTracker("UA-987654321-99");
    pageTracker. _initData();
    pageTracker._setDomainName(".MyWidgets.com"); // ordine errato
    pageTracker._trackPageview();

    Il cookie registra la campagna “IloveWidgtes” così:

    Name: __utmz
    Value: 187400622.1251739746.1.1.utmcsr=google|utmccn=ILoveWidgets|utmcmd=cpc
    Host: www.MyWidgets.com
  • In una pagina successiva, il seguente codice crea un altro set di cookie in “.mywidgets.com”
    var pageTracker = _gat._getTracker("UA-987654321-99");
    pageTracker._setDomainName(".MyWidgets.com"); // correct order
    pageTracker._initData();
    pageTracker._trackPageview();
    
    Name: __utmz
    Value: 18180582.1251739746.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)
    Host: .MyWidgets.com
  • Se venisse registrato un obiettivo o una transazione ecommerce adesso, la campagna AdWords sarebbe “derubata” e la conversione sarebbe attribuita a “traffico diretto”. L’uso di funzioni che invocano _initData() prima di _setDomainName() ha lo stesso effetto.
    
    Sbagliato:
    var pageTracker = _gat._getTracker("UA-987654321-99");
    pageTracker. _setVar("Leads");
    pageTracker._setDomainName(".MyWidgets.com");
    pageTracker._trackPageview();
    
    Corretto:
    var pageTracker = _gat._getTracker("UA-987654321-99");
    pageTracker._setDomainName(".MyWidgets.com");
    pageTracker. _setVar("Leads");
    pageTracker._trackPageview();

Best pratices raccomandate:

  1. usare un solo file .js con il codice di Google Analytics e richiamarlo da tutte le pagine. E’ il modo migliore per evitare problemi di inconsistenza
  2. Usare sempre _setDomainName(“.mywidgets.com”), sia che abbiate sottodomini sia che non li abbiate
  3. Usare sempre le funzioni _set* prima di quelle che invocano _initData() (le funzioni che tracciano le pagine, gli eventi, setVar e le funzioni ecommerce)

Condividi l'articolo:

Scrivi un Commento