Jul 02 2009

Initdata e tracciamento eventi

autore: Marco Cilia categoria: codice di monitoraggio

In passato vi ho descritto l’uso della funzione _trackEvent(), utile per usare il tracciamento degli eventi sulle pagine ed evitare di generate troppe pagine virtuali o per tracciare comportamenti complessi dell’utente indipendentemente dalla sua attività (ad esempio per tenere traccia degli eventi in AJAX, che tipicamente non ricaricano la pagina e quindi non generano un nuovo invio di dati a Google Analytics).

Un caso un po’ anomalo è capitato ad un utente del forum di supporto: venablc ha bisogno di chiamare la funzione _trackEvent() senza richiamare anche _trackPageview(), probabilmente perché sta inviando i soli dati degli eventi ad un altro profilo e non vuole vedere le pagine viste; omettendo semplicemente la chiamata il codice non funziona e la consolle degli errori javascript riporta un laconico errore di “oggetto non definito”.

La soluzione al problema è resuscitare la defunta funzione _initData(), soppressa qualche tempo fa. L’oggetto che manca a _trackEvent infatti viene creato da _initData(), che a sua volta è richiamata automaticamente da _trackPageview(). Ma nessuno ci vieta di chiamarla esplicitamente, evitando di inviare i dati della pagina vista ma consentendo a _trackEvent() di funzionare regolarmente!
[ovviamente quanto detto vale per il caso specifico e può essere adattato alle vostre esigenze senza dimenticare quanto detto in questo altro post: o initData ce l'avete in tutte le pagine o non ce l'avete in nessuna, per quanto riguarda il profilo che raccoglie i dati]


Jun 29 2009

Violato il codice di GA? ovviamente no!

autore: Marco Cilia categoria: javascript

Una delle più accese discussioni nel forum ufficiale e nella twittersfera ultimamente è quella relativa ad un presunto problema di sicurezza del codice di Google Analytics, per cui i visitatori vengono infettati. Un ottimo riassunto della questione la fa Stéphane Hamel sul suo blog.

Il problema non è relativo al codice di GA, ma prende di mira il codice di GA. In sostanza attraverso un accesso non autorizzato allo spazio sul server che ospita il sito, viene introdotta una regular expression javascript nel codice del sito in grado di cambiare la chiamata a http://www.google-analytics.com/ga.js in ttp://91.212.65.148/ga.js. Questo file poi esegue un’altro script php che sfrutta una vulnerabilità di Adobe Reader per infiltrarsi nei PC dei visitatori. Come già detto, questo non è un problema di Google Analytics, ma è un problema che prende di mira Google Analytics per via del fatto che è molto usato sui siti (ricordate? più del 50% dei diecimila siti più popolari secondo Alexa) di tutto il mondo.

Il modo migliore per capire se si ha a che fare con il problema è dare un’occhiata al codice sorgente di una propria pagina: se il codice di GA è sempre il solito, come lo conosciamo, non c’è problema; Se al contrario sono presenti caratteri strani ( @ # $ eccetera) allora è il caso di preoccuparsi. Nel qual caso è bene pulire il proprio PC con antivirus, antitrojan e antispyware, cambiare le password FTP del sito (e magari usare sFTP (secure File Transfer Protocol) invece del normale FTP, e reincollare il codice corretto di GA, che trovate ovviamente in modifica del profilo -> verifica stato


Jun 26 2009

Come leggere il sorgente javascript di GA

autore: Marco Cilia categoria: javascript

gajsQuello che vedete nell’immagine qui a fianco è un pezzo del codice sorgente del javascript di Google Analytics, per capirsi quello che è visibile all’indirizzo http://www.google-analytics.com/ga.js. Si tratta del file contenente tutte le funzioni di base che permettono al codice di catturare ed inviare i dati che poi leggiamo nei nostri report.

A tutti gli effetti è un normale file javascript, ma per contenerne le dimensioni gli ingegneri di Google hanno fatto due cose: hanno eliminato gli spazi superflui e gli “a capo” e hanno chiamato tutte le variabili e le funzioni con nomi di lettere, due cose che gli esseri umani non fanno mai quando scrivono codice, per leggibilità e manutenzione, ma che non dà nessun fastidio ai computer che le istruzioni le eseguono.

Se per caso avete necessità di leggere il sorgente, perché volete capire cosa fa una certa funzione, perché volete estenderla o per curiosità, è indubbiamente più utile far tornare almeno gli spazi e i ritorni di riga, visto che non è possibile riassegnare alle funzioni nomi parlanti in modo automatico. Per avere un file leggibile basta andare all’url del sorgente, selezionarlo tutto e copiarlo, e poi incollarlo nello strumento Javascript Beautifier, che ce ne renderà una versione decisamente più digeribile per i nostri occhi. Le prime righe ad esempio diventano:

var _gat = new Object({
    c: "length",
    lb: "4.3.1",

il che tra l’altro mi fa notare al volo che la versione corrente dello script è passata da 4.3 a 4.3.1. Probabilmente in concomitanza con l’introduzione di Bing tra i motori di ricerca riconosciuti.

[tnx to AnalyticsPros]


Jun 23 2009

Keep it simple

autore: Marco Cilia categoria: filtri

Bruno Munari
Keep it simple, stupid è una locuzione anglosassone che viene spesso indicata tramite il suo acronimo K.I.S.S. e significa “falla semplice, stupido”. Viene spesso associata al mondo dell’informatica, dove il grado di complicazione tende a salire molto velocemente e dove esistono sempre soluzioni e accorgimenti che, con molto lavoro in più, riescono a fare quello che ci prefiggiamo.

Bruno Munari, che di informatica penso ne sapesse ben poco, diceva in un suo celebre scritto:

Complicare è facile, semplificare è difficile. Per complicare basta aggiungere, tutto quello che si vuole: colori, forme, azioni, decorazioni, personaggi, ambienti pieni di cose. Tutti sono capaci di complicare. Pochi sono capaci di semplificare.
Piero Angela ha detto un giorno è difficile essere facili. Per semplificare bisogna togliere, e per togliere bisogna sapere cosa togliere

e questa è la frase che riporto sempre quando parlo con qualcuno delle famigerate regular expression di Google Analytics. Prendiamo questo caso reale dal forum di assistenza inglese:

Filter: Exclude traffic from IP addresses in the range of 1 to 9 and 11 to 255.
Filter design: ^(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[2-9][0-9]|1[1-9]|[0-9])\.
Result in Google: 0 page views.

Che gli IP possibili sono solo 256 (da 0 a 255) spero sia chiaro anche all’autore, altrimenti serve un ripassino di base sulla tecnica di internet, e non ha senso lanciarsi a fare un filtro senza sapere cosa e come si deve filtrare. Ora, assunto che la regola sia chiara, perché mai fare un filtro complicato per escludere tutti gli IP da 1 a 9 e da 11 a 255?

Fai un filtro che include solo 0 o 10! eccolo:
(0|10)
:)


Jun 19 2009

Novità AdWords/Analytics

autore: Marco Cilia categoria: generale

Mi sembra di intravedere una certa regolarità negli upgrade ad Analytics da parte di Google; a giro si dedica alll’interfaccia, alle funzionalità e all’integrazione. Direi che questo è il periodo dell’integrazione, e infatti abbiamo due novità relative ad AdWords nel giro di pochi giorni.

La prima è che adesso si possono importare gli obiettivi di conversione e le transazioni e-commerce da Analytics ad AdWords, per ottimizzare le campagne direttamente dentro ad esso e poter usare lo strumento di ottimizzazione delle campagne. Stiamo parlando però, ovviamente, di obiettivi che ricevono traffico (e conversioni) da campagne AdWords.
I passi da effettuare per avere questa integrazione sono abbastanza semplici: per prima cosa è necessario abilitare la condivisione dei dati almeno con i prodotti Google (”Solo con altri prodotti Google”), dal menu Modifica dell’account -> Condividi i miei dati Google Analytics, dopodiché dall’interfaccia AdWords, pagina delle conversioni, cliccare su “collega obiettivi e transazioni di Analytics”, selezionare quali obiettivi importare dalla lista e salvare.

La seconda novità è che Google ha sanato una situazione che si era venuta a creare a Marzo, quando per motivi di sicurezza venne richiesto che l’import dei costi AdWords verso Analytics fosse possibile solo dopo aver collegato i due account. Coloro i quali avevano gli account collegati, avevano l’auto tagging delle campagne ma non applicavano l’import dei costi si erano ritrovati a vedere come diretto del traffico che in realtà veniva da AdWords. Da oggi questo problema non si presenta più e il traffico torna ad essere conteggiato come mezzo cpc e sorgente google.


Jun 16 2009

Super cookie con tutte le sorgenti di una conversione

autore: Marco Cilia categoria: javascript

supercookieGiovanni mi segnala per email un articolo molto molto interessante per chi ha il cruccio del last cookie win / first cookie win. Ricordo infatti a tutti che Google Analytics è un sistema “last cookie win”, in cui la conversione viene attribuita all’ultima sorgente che ha portato la visita, con alcune regole specifiche per il traffico diretto. Altri sistemi invece preferiscono la logica del “first cookie win” (e su GA possiamo impostarla sulle campagne taggate tramite il parametro no_override), ma quale che sia la logica applicata il difetto che tutti riconoscono è quello di non consentire di tenere traccia di tutte le diverse sorgenti che hanno contribuito a formare nel cliente la decisione di convertire.

So che alcuni sistemi stanno provando (non l’ho mai provato, e correggetemi se sbaglio, ma mi pare che sitovivo abbia una soluzione di questo tipo) a sviluppare logiche miste di attribuzione di una conversione a più sorgenti, ma da oggi grazie al lavoro di un Google Analytics Authorized Consultant possiamo avere qualcosa di similare – ancorché abbastanza di base – per tracciare tutte le sorgenti che hanno concorso ad una conversione: loro lo chiamano “super cookie“.

Questo super cookie si occupa di raccogliere il referrer di ogni visita, di salvarlo in un nuovo cookie chiamato _utmcw e di chiamare la funzione _setVar() impostando il valore di questo cookie come parametro della funzione stessa. I vari referrer non vengono sovrascritti ma messi in coda e separati da un carattere |.
Attraverso un rapporto personalizzato, composto almeno dal parametro “totale completamenti all’obiettivo” e della dimensione “valore definito dall’utente”, avremo modo di verificare tutte le sorgenti che hanno generato conversioni, nella forma (e nell’ordine esatto) ad esempio di:

direct|google(organic)(keyword1)|yahoo(organic)(keyword2)|direct|referral(www.sitoesterno.it)

che ad esempio si riferisce ad una conversione avvenuta alla quinta visita, la prima delle quali diretta (digitazione dell’url o bookmark, ad esempio), la seconda da google con ricerca keyword1, la terza da yahoo con ricerca keyword2, la quarta diretta e la quinta tramite un link dal sito sitoesterno.it. Tramite il super cookie si possono ad esempio conoscere esattamente TUTTE le parole chiave e le frasi che sono state cercate dall’utente prima di convertire

Il punto forte di questo script è che ricostruisce da solo la sorgente, evitando il problema della discrepanza di scrittura del cookie quando avvengono due referral nella stessa sessione di cui vi ho già parlato.

Il punto debole, come ho fatto notare nel post degli autori, è che non è previsto (ma non saprei nemmeno come implementare) un meccanismo di pulizia del super cookie, che continua ad essere aggiornato anche dopo la conversione. Per un visitatore regolare che non pulisce mai i cookie c’è il rischio che esso si gonfi senza sosta. Un punto intermedio è che il supercookie traccia e scrive solo visite provenienti dalle sorgenti “standard”, quindi traffico diretto, referral, ricerche organiche e CPC. Per tracciare anche le campagne, ad esempio le campagne email taggate, il sorgente javascript dello script andrebbe modificato, e sono sicuro che essendo GAAC loro possono sicuramente farvi avere un preventivo per questa operazione :)

L’utilizzo dello script è abbastanza semplice. si tratta di scaricare il file dal post linkato, aprire il file cw-algorithm.js e modificare la riga 7
var __ignore = "www.ignore.co.uk";
inserendo l’indirizzo del sito che ospita lo script. Dopodiché caricare i due file sul server web e modificare il codice di tracciamento di Analytics come segue:


<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" src="/cw-setup.js"></script> 
 
<script type="text/javascript"> 
var cookieTracker = _gat._getTracker("UA-XXXXXX-X");
cookieTracker._trackPageview();
</script> 
 
<script type="text/javascript" src="/cw-algorythm.js"></script> 
 
<script type="text/javascript"> 
cookieTracker._setVar(ConversionWorks);
</script> 
 
<script type="text/javascript"> 
var pageTracker = _gat._getTracker('UA-XXXXXX-X');
pageTracker._trackPageview();
</script> 

sostituendo ai vari UA-XXXXXX-X il vostro numero di UA. Notare che la parte di codice riferita a cookieTracker non è un errore, e serve a non sporcare i vostri cookie di default con i valori del super cookie.

In definitiva mi sembra un’aggiunta utile a chi non è soddisfatto del modo in cui vengono attribuite le conversioni alle sorgenti, e una fonte di informazioni utili a prescindere per tutti gli altri. Se il vostro “Valore definito dall’utente” (e/o la vostra funzione _setVar() ) è vuoto, questo può sicuramente essere un sistema valido per usarlo.

Post originale su conversion works e pacchetto da scaricare

image credit: conversionworks.co.uk


Jun 15 2009

Premi e conferenze

autore: Marco Cilia categoria: generale

Avevo iscritto questo blog alla competizione “miglior blog tecnico” con la speranza di fare bene, e perché no di vincere, ma mai avrei pensato di avere addirittura due menzioni :)

Google Analytics in 30 secondi è risultato terzo miglior blog tecnico in classifica generale, con un punteggio medio di 7,16, e ha avuto un riconoscimento speciale extra-concorso per

essersi riuscito a ritagliare, e con ottimi risultati, uno spazio importante all’interno di un argomento apparentemente “non sfruttabile” in alcun modo.

Quando nel post del primo compleanno del blog dicevo che le soddisfazioni che questo spazio mi dà sono tante e variegate, mi riferivo anche a cose come questa :)

Visto che siamo in tema di segnalazioni, il 19 e 20 giugno a Milano presso l’aula Zappa dell’università Bocconi si terrà la GTconference, dedicata ai professionisti e alle piccole medie imprese. Da un lato ringrazio l’organizzazione per l’opportunità che non riesco a sfruttare e dall’altro consiglio a tutti di dare un’occhiata al programma della due giorni e ai relativi relatori, perché sicuramente troverete qualcosa di utile da ascoltare e imparare per migliorare il vostro business online :)


Jun 11 2009

A cosa serve “nomi host” nel report Eventi?

autore: Marco Cilia categoria: generale

Il report “nomi host” all’interno del gruppo di rapporti riguardanti gli eventi ha la medesima funzione del suo omonimo all’interno della sezione dei visitatori. Con un distinguo fondamentale, però.
I nomi host rilevati nella sezione visitatori sono relativi alle pagine del sito, e possono essere utili in caso di script che viene eseguito su più domini, o su sottodomini, per analizzarli separatamente. Oppure, come abbiamo visto in passato, per verificare che qualcuno non abbia copiato il nostro codice di monitoraggio e ci stia inquinando le statistiche.

I nomi host rilevati nella sezione eventi hanno lo stesso scopo, ovvero verificare e tracciare quale sia il nome dell’host (dominio o IP del server) dal quale gli eventi sono partiti. Lo scopo di debug in questo caso può essere trasformato in un vantaggio analitico: nello script per monitorare i video l’account al quale inviare i dati è un parametro che va scritto esplicitamente, ma nessuno ci vieta di scolpirlo – ad esempio – dentro al codice flash prima che sia compilato in un .swf. In quel modo tutti gli eventi scatenati da quell’oggetto verrebbero registrati dall’account scelto dall’autore, senza possibilità di intervento da parte degli utenti, e il report “nomi host” servirebbe appunto per scremare i vari domini ove questi eventi avvengono.

Se ancora non riuscite a visualizzare un uso possibile di questa cosa, forse non avete mai prodotto un banner in flash :)
Usando gli eventi e scolpendo il codice dentro al banner è possibile monitorare l’andamento del banner su tutti i siti dove esso è ospitato senza bisogno di chiedere al proprietario del sito l’accesso alle sue statistiche. Il mondo ha sempre bisogno di fiducia, ma difendersi dai furbi che gonfiano e sgonfiano le statistiche per il proprio interesse è sempre un’opzione valida.
Un uso analogo può essere di fare la stessa cosa dentro a un giochino in flash, che spesso viene copiato e spacciato su un altro sito come originale; usando gli eventi e i nomi host possiamo sapere esattamente chi (e quanto) sta usando il gioco che abbiamo sviluppato con fatica.


Jun 08 2009

Eventi per tutti, e allora traccia i tuoi video!

autore: Marco Cilia categoria: generale

Il 4 giugno Google ha reso disponibile a tutti gli account il tracciamento degli eventi; prima di allora l’attivazione era casuale e poteva capitare di avere il pannello dei report “monitoraggio eventi” in alcuni account e di non averlo in altri.

Il grande pregio degli eventi è quello di generare interazioni con l’utente che sono registrabili dentro a Google Analytics ma che non necessitano di pagine “virtuali” per essere conteggiate, e che quindi non alterano il totale di quel valore e i suoi derivati. Tramite gli eventi si possono monitorare fino a 500 azioni per sessione di visita e tipicamente queste azioni sono comportamenti degli utenti che avvengono su una stessa pagina, per cui non avrebbe senso creare della pagine finte. L’esempio più tipico è la visualizzazione di un video, che viene menzionato anche nel post sul blog ufficiale rimandando a questo articolo di Inside RIA

E allora traccia i tuoi video con videotracker di Goanalytics.info

Insieme a un amico abbiamo lavorato molto per realizzare un oggetto che fosse di facile utilizzo e permettesse a tutti di godere dei vantaggi del tracciamento degli eventi in Google Analytics: il risultato è visibile nella pagina apposita della nuova sezione di Download, che raccoglie tutto il materiale utile che metto e metterò a disposizione.

Sostanzialmente l’oggetto ha bisogno di due informazioni: a quale account inviare gli eventi e dove si trova il video da mostrare. La vera potenza, secondo me, è che gli si passa l’url di un video di Youtube lui lo mostra (e traccia) ugualmente! Certo non si possono avere gli stessi grafici di Youtube Insights o le informazioni demografiche, ma sino a quando non ci sarà l’integrazione YT-GA questo mi sembra un buon compromesso, pur senza avvicinarsi neppure lontanamente ad una qualche forma di video analytics.

L’oggetto è naturalmente alla release 1.0, ma sono benvenuti richieste e commenti. In un primo momento teneva traccia del secondo in cui avveniva qualsiasi cosa, ma mi sono preso reso conto che le informazioni erano sovrabbondanti e non davano nessun “di più” all’analisi. Ma se naturalmente hai un’idea per migliorarlo, dopo averlo provato, sei il benvenuto nei commenti della pagina!

Un’ultima cosa: come potete notare il progetto è donationware: il tempo che spendo io su questo blog è già ripagato in varie forme, ma per sviluppare questo oggetto (che è scritto in ActionScript di Flash, di cui non so praticamente niente) mi sono fatto aiutare da un amico. Ci lavoriamo da mesi nei ritagli di tempo, ma il fatto che siano ritagli non cambia la somma totale di tempo che gli abbiamo dedicato; in fondo alla pagina trovate un pulsante “donate” di Paypal, che è direttamente collegato all’account del mio amico, e che può servire a fargli capire se e quanto il suo lavoro è apprezzato :)

Traccia i tuoi video .flv e Youtube su Google Analytics! Istruzioni e download


Jun 03 2009

Aggiungi momentaneamente Bing tra i motori

autore: Marco Cilia categoria: generale

Bing.com, il nuovo motore di ricerca di Microsoft che nei piani andrà a sostituire Live search, è online da qualche giorno, anche se ufficialmente parte oggi. Non passerà molto tempo e Google provvederà ad inserirlo nella lista dei motori riconosciuti automaticamente dallo script, ma nel frattempo – se si vuole trattarlo effettivamente come un motore e non perdere traccia delle keyword usate dai navigatori – è necessario aggiungere temporaneamente una riga al codice di tracciamento. La funzione da usare la conosciamo già, è _addOrganic, e la riga da inserire è:

pageTracker._addOrganic("bing.com", "q");

la riga va inserita prima della chiamata a trackpageview(), e andrà tolta quando Google farà la modifica al codice di ga.js. Se nel nuovo motore siete primi per molte keyword e prevedete un’ondata di visite vi conviene fare la modifica. Se siete comunque curiosi, fatela ugualmente. Altrimenti potete aspettare che Google Analytics faccia tutto da sè, e non è nemmeno da escludere che una volta fatta la modifica Google riprocessi i dati di tutti per riflettere le visite da bing.com; è una cosa che se non ricordo male è stata fatta quando fu rilasciato il browser Chrome, anche se allora si giocava tutto “in casa” :)

Update 14 giugno
: come nota giustamente Stefano, Bing è riportato tra i motori di ricerca. A quanto vedo dai miei report a partire dal sabato 6 giugno, quindi non c’è stata nessuna rianalisi del pregresso.




Ads

banner YoYoformazione

pubblicità su questo sito