Nov 23 2011

HelpSemaforoQuesto semaforo indica il livello difficoltà del post
semaforo giallo - articolo avanzato

Tracciare Google Immagini, una volta per tutte

autore: Marco Cilia categoria: javascript tag: , , ,

Il tema di come tracciare Google Images esiste da quando esiste Analytics, è un tema ricorrente e le soluzioni proposte variano nel tempo a seconda dello spirito, dell’autore e dei cambiamenti di Google stesso. Al momento il dominio images.google è stato incluso nella lista predefinita dei motori di ricerca a partire da Agosto, quindi le ricerche fatte da lì sono già tracciate insieme alla keyword e finiscono nel report SORGENTI DI TRAFFICO -> SORGENTI -> RICERCA -> RISULTATI ORGANICI (per distinguerli dagli altri potete usare la dimensione secondaria o fare un segmento avanzato con SORGENTE contiene images.google).

Restano invece escluse le visite fatte sul motore “classico” dopo aver selezionato “immagini” dalla colonna di sinistra (quelle cioè con parametro tbm=isch che generano poi un referrer di tipo www.google.it/imgres).
La soluzione più facile e definitiva, posto che non ci interessi analizzare le due cose separatamente, è quella di intercettare quel particolare referrer e di usare la funzione di sovrascrittura del referrer per ricondurlo ad una forma già nota a Google Analytics, in questo modo (fonte help forum, con modifiche perché images.google.com è adesso un motore già riconosciuto):


var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXXXX-X']);

var ref = document.referrer; 
if ((ref.search(/google.*imgres/) != -1)) { 
  var regex = new RegExp("\.google\.([^\/]+)(.*)"); 
  var match = regex.exec(ref); 
  _gaq.push(['_setReferrerOverride', 'http://images.google.' + match[1] + unescape(match[2])]); 
}

_gaq.push(['_trackPageview']);

questo in pratica riscrive completamente il dominio www.google.it e lo trasforma in images.google.it nel caso in cui sia una ricerca fatta sul motore generale.

Così com’è lo script non fa distinzione tra le varie declinazioni dei motori nazionali, quindi images.google.it, images.google.com e tutti gli altri finiscono dentro un unico record che si chiama images.google. Se si ha il desiderio o la necessità di distinguere i top level domain sarà necessario aggiungere dopo _setReferrerOverride un’altra riga:


_gaq.push(['_addOrganic', 'images.google' + match[1], 'q', true]);

Il true in fondo è obbligatorio e, ve lo ricordo, consente di aggiungere il nuovo motore in cima alla lista di quelli conosciuti invece che in fondo, in modo che abbia la priorità su quelli predefiniti.


Apr 13 2011

HelpSemaforoQuesto semaforo indica il livello difficoltà del post
semaforo giallo - articolo avanzato

funzioni: _setReferrerOverride (e tracciare al volo la ricerca immagini)

autore: Marco Cilia categoria: funzioni tag: , ,

Una funzione che non ho mai menzionato su questo blog è _setReferrerOverride(url), che serve a sovrascrivere il referrer estratto automaticamente da Google Analytics prima che esso venga passato ai server per l’analisi. Perché si dovrebbe fare una cosa simile? Ad esempio un motivo valido può essere che per qualche problema tecnico che non riuscite a risolvere immediatamente – mentre i dati stanno venendo registrati sbagliati – il referrer non è quello atteso. Questa funzione vi permette di ripristinare quello corretto.

La funzione accetta come parametro una sola stringa, che deve essere l’url del referrer (reale o fittizio) che decidete di impostare per quella pagina, o per quella singola chiamata del codice di tracciamento.

_gaq.push(['_setReferrerOverride', 'http://www.referrerfinto.it/parametro=2]);

Un caso reale e molto pratico in cui si usa questa funzione è ad esempio per tracciare completamente lato codice – quindi senza usare filtri e profili-copia, le ricerche fatte su Google Images. E’ sufficiente usare questo codice


<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-xxxxxxxx-x']);
var ref = document.referrer;  //prendo il referrer
if (ref.search(/images.google/) != -1 && ref.search(/prev/) != -1) { //se contiene sia images.google sia /prev/
var regex = new RegExp("images.google.([^\/]+).*&prev=([^&]+)"); //scrivo la regex per estrarre i due valori
var match = regex.exec(ref); // la eseguo
_gaq.push(['_clearOrganic']); //pulisco la lista dei motori di ricerca
_gaq.push(['_addOrganic','images.google.'+match[1],'q']); // aggiungo un unico motore di ricerca (google immagini)
_gaq.push(['_setReferrerOverride', 'http://images.google.'+match[1]+unescape(match[2])]); //sovrascrivo il vecchio referrer con quello apposito
}

_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);
})();
</script>

(l’autore originale dello script era Joost De Valk nel forum ufficiale, poi è stato modificato per renderlo asincrono da un altro utente)

Non male, no? :)