La diffusione e l’aumento dell’utilizzo di strumenti di blocco pubblicità come AdBlock e blocco tracciamento come Ghostery inizia a portare problemi anche nel tracciamento della web analytics. Questi strumenti, soprattutto Ghostery, blocca l’esecuzione di strumenti come Google Tag Manager, Google  Analytics, Google Adwords, Hotjar e tantissimi altri.

Perdere traffico per il non tracciamento potrebbe sensibilmente darmi dei dati analitici non veritieri.

E se ti dicessi che esiste un #barbatrucco dove è possibile tracciare chi usa questi strumenti?

Tieniti pronto ecco la guida che ti spiega come tracciare chi usa Ghostery (qui invece trovi la guida su AdBlock).

Attenzione: l’implementazione è molto tecnica, in quanto utilizziamo una funzionalità legata fortemente a del codice.

Step 1 – inseriamo uno script di Tracking

Visto che Google Tag Manager viene disabilitato dal plugin, e noi vogliamo tracciare chi blocca Google Tag Manager, dobbiamo forzatamente implementare il codice a mano senza usare Google Tag Manager.

Copia il codice sottostante e inseriscelo subito dopo il tag <head> della pagina:

<script type="text/javascript">
    window.addEventListener('load', function()
    {
        if(window.ga && ga.create) 
        {
            console.log('Google Analytics caricato');
        } 
        else 
        {
            console.log('Google Analytics non caricato');    
        }
      
        if(window.google_tag_manager)
        {
            console.log('Google Tag Manager caricato');
        }
        else
        {
            console.log('Google Tag Manager non caricato');
        }
    }, false);
</script>

Inserire il codice che analizza se GTM e GA vengono bloccati

Per sicurezza cancella la cache del browser e ricarica la pagina.

A questo punto se avvete Ghostery abilitato dovreste visualizzare nella console degli sviluppatori di Chrome (F12 per attivarla o tasto destro “Ispeziona”) il messaggio di caricamento o meno degli script.

ghostery blocca GTM e GA

Console di sviluppo con avviso

 

Step 2 – usiamo il measurement protocol

Una volta che abbiamo identificato con questo script l’effettivo blocco di Google Tag Manager o di Analytcs possiamo tracciarlo in Google Analytics.
Aspetta, può sembrarti strano. Come riusciamo a tracciare in Google Analytics se viene bloccato?

La risposta semplice è attraverso il Measurement Protocol, ovvero il mezzo che è la base di come Google Analytics traccia.

Solitamente il sistema è utilizzare un pixel di immagine inserendo l’url di chiamata, ma se lo facciamo in modo diretto nel codice c’è una grande possibilità che questo venga bloccato.

E quindi come facciamo?

La soluzione è utilizzare uno script esterno, in altre parole creare un file esterno PHP (per esempio) che contenga la chiamata attraverso il measurement protocol. Chiameremo questo file: collect.php.

Il crea il file e inserisci all’interno il seguente codice:

<?php

header('Content-Type: image/png');
echo base64_decode('R0lGODlhAQABAIAAAAUEBAAAACwAAAAAAQABAAACAkQBADs');    

if(isset($_GET['tid'])) { $tid = $_GET['tid']; } else { $tid = 'UA-XXXXXX-X';}
if(isset($_GET['ec'])) { $ec = $_GET['ec']; } else { $ec = 'Bloccato';}
if(isset($_GET['ea'])) { $ea = $_GET['ea']; } else { $ea = 'Altro';}

$params = array(
'v' => 1,
'tid' => $tid,
'cid' => rand(1000000,9999999),
't' => 'event',
'ec' => $ec,
'ea' => $ea,
'ni' => '0',
'z' => rand(1000000,9999999),
);

$url = 'https://www.google-analytics.com/collect';
$content = utf8_encode(http_build_query($params));
$user_agent = '';

$ch = curl_init();
curl_setopt($ch,CURLOPT_USERAGENT, $user_agent);
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_HTTPHEADER,array('Content-type: application/x-www-form-urlencoded'));
curl_setopt($ch,CURLOPT_HTTP_VERSION,CURL_HTTP_VERSION_1_1);
curl_setopt($ch,CURLOPT_POST, TRUE);
curl_setopt($ch,CURLOPT_POSTFIELDS, $content);
curl_exec($ch);
curl_close($ch);

?>

 

Salva il file e inseriscilo nella root principale del sito (ad esempio: www.esempio.it/collect.php)

Step 3 – Aggiorniamo lo script inserito precedentemente

Ora che abbiamo creato lo script che invia il tracking a GA non ci resta che chiamarlo nel caso in cui Ghostery o altri plugin blocchi effettivamente l’esecuzione.

<script type="text/javascript">

    window.addEventListener('load', function()
    {
        var gaID = "UA-XXXXXX-X";
        if(window.ga && ga.create) 
        {
            console.log('Google Analytics caricato');

            var img = document.createElement('img');
            img.setAttribute('style','display:none;');
            img.src = '/collect.php?tid='+gaID+'&ec=Caricato&ea=Google%20Analytics&'+ (new Date).getTime();
            document.body.appendChild(img);    
        }
        else 
        {
            console.log('Google Analytics non caricato');

               var img = document.createElement('img');
            img.setAttribute('style','display:none;');
            img.src = '/collect.php?tid='+gaID+'&ec=Bloccato&ea=Google%20Analytics&'+ (new Date).getTime();
            document.body.appendChild(img);    
        }
      
        if(window.google_tag_manager)
        {
            console.log('Google Tag Manager caricato');

            var img = document.createElement('img');
            img.setAttribute('style','display:none;');
            img.src = '/collect.php?tid='+gaID+'&ec=Caricato&ea=Google%20Tag%20Manager&'+ (new Date).getTime();
            document.body.appendChild(img);    
        }
        else
        {
            console.log('Google Tag Manager non caricato');

            var img = document.createElement('img');
            img.setAttribute('style','display:none;');
            img.src = '/collect.php?tid='+gaID+'&ec=Bloccato&ea=Google%20Tag%20Manager&'+ (new Date).getTime();
            document.body.appendChild(img);    
        }
    }, false);
</script>

 

Dovete cambiare il valore UA-XXXXXX-X della variabile gaID con il vostro codice di tracking di Google Analytics.

A questo punto dovreste trovare sulla voce Eventi nella gestione tempo reale la lista dei caricamenti o blocchi di GTM e GA.

 

ghostery statistica analytics

 

Una piccola precisazione: gli eventi vengono sempre inviati ad ogni caricamento di pagina. Valuta quindi se hai la necessità di inviare questi eventi a GA.

Link utili

La guida è stata realizzata seguendo l’approccio di Marthijn Hoiting

Hai ancora qualche dubbio?
Chiedi pure qui sotto, sarò pronto a risponderti!

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *