Come usare il tracciamento lato server di Matomo

Come usare il tracciamento lato server di Matomo

Pubblicato il: 26/08/2022
Aggiornato il: 29/08/2022
Categorie
Tag

Abilitare il server-side tracking con Matomo

Con Matomo è possibile abilitare il server side analytics tracking e ottenere un monitoraggio del traffico più preciso e puntuale.

Server-Side Tracking vs Client-Side Tracking: in breve

Per dirlo in poche parole, il tracciamento lato client funziona sul browser dell'utente, generalmente tramite Javascript. Il vantaggio è che è possibile raccogliere determinate metriche in modo semplice e più leggero per il server.

Diversamente, il tracciamento lato server non usa Javascript ma viene effettuato direttamente, appunto, dal server stesso. Possiamo utilizzare ad esempio PHP per analizzare le visite che riceviamo dagli utenti.

Vi sono poi dei software di Log Analytics come Awstats o GoAccess, che analizzano i log del server per determinare il traffico degli utenti sulle nostre pagine web.

Il vantaggio più importante del server side tracking o della log analysis è che possiamo monitorare il traffico che arriva anche da quegli utenti che usano sistemi di AdBlock, o simili, che bloccano i tracciamenti Javascript.

Come impostare il server-side tracking di Matomo

In realtà, il server side analytics tracking di Matomo è semplice da utilizzare.

Prenderemo come riferimento la libreria PHP, che è tra i linguaggi più diffusi nella creazione di siti web.

  1. Scaricare MatomoTracker.php e PiwikTracker.php da Github oppure una differente libreria per il server side tracking
  2. Caricare i file MatomoTracker.php e PiwikTracker.php nel proprio server web, ad esempio nella cartella /public_html/matomo/, tramite Filezilla o altro File Manager con FTP
  3. Nel proprio applicativo web, aggiungere il seguente codice PHP in tutte le pagine, oppure nel template a seconda di quale strumento si sta usando:
# File template.php o simile, l'imporante è che questo codice venga caricato in tutte le pagine
$matomoSiteId = 1;
$matomoUrl = '{url-piattaforma-matomo}';
$matomoToken = '{inserisci-token}';
$matomoPageTitle = '';

require_once '{percorso-al-file}/MatomoTracker.php';

try {
    $matomoTracker = new MatomoTracker($matomoSiteId, $matomoUrl);
    $matomoTracker->setRequestTimeout(2);
    $matomoTracker->setTokenAuth($matomoToken);
} catch (Exception $e) {
}

# File pagina.php, per personalizzare il titolo della pagina da passare a Matomo

if (!empty($matomoTracker)) {
    $matomoTracker->doTrackPageView($matomoPageTitle);
}

Vediamo velocemente alcuni dettagli:

  • $matomoSiteId è l'id del sito configurato su Matomo, lo si può trovare nelle proprie impostazioni di Matomo, andando su Impostazioni > Siti web > Gestisci
  • $matomoUrl è l'url pubblico al quale si accede a Matomo, ad esempio https://matomo.tuositoweb.com
  • $matomoToken è un identificativo che deve essere configurato (vedi il prossimo paragrafo Configurare il Token Matomo)
  • $matomoPageTitle è il titolo della pagina che possiamo passare a Matomo, se usi un CMS o Framework dovrai trovare il modo per configurare questa variabile correttamente, mentre se usi singoli file PHP per ogni pagina dovrai configurarlo su ogni file
  • il require_once caricherà il file MatomoTracker.php, sostituisci {percorso-al-file} con il percorso dove trovare MatomoTracker.php, ad esempio potrebbe essere /var/www/html/website.com/vendor/matomo/MatomoTracker.php
  • $matomoTracker conterrà la classe MatomoTracker con le relative proprietà e metodi
  • setRequestTimeout serve perché, nel caso il nostro Matomo non stesse funzionando per qualche motivo, venga impostato un tempo limite per la richiesta, altrimenti rischiamo di rallentare di molto il caricamento della pagina
  • setTokenAuth imposta il token di autenticazione di Matomo
  • doTrackPageView è la funzione che invia l'evento PageView a Matomo, così come lo stesso evento viene configurato tramite Javascript nel client side. È obbligatorio passare alla funzione una stringa come titolo della pagina, che sarà poi usata da Matomo nel report delle visite
  • il blocco try/catch e l'if finale servono per prevenire la comparsa di messaggi di errore (Fatal error) di PHP qualora il server Matomo non fosse raggiungibile

Configurare il Token Matomo

Per configurare l'Auth Token da utilizzare in PHP, vai su Matomo nel menù Impostazioni > Personali > Sicurezza e in fondo troverai Auth Tokens, clicca sul pulsante Crea Nuovo Token.

Creare un nuovo Auth Token su Matomo
Creare un nuovo Auth Token su Matomo

Ti sarà richiesto di reinserire la tua password di amministratore Matomo, poi dovrai inserire una descrizione e generare il Token. Apparirà una stringa con un codice casuale, e potrebbe arrivarti una mail di notifica di sicurezza per l'azione appena eseguita.

Inserisci una descrizione per generare il token
Inserisci una descrizione per generare il token

Esempio di token: 2a96a7df4c6f09272bf445d1c753d4a8 (ogni token è univoco)

Il token di Matomo è stato generato
Il token di Matomo è stato generato

Dopo aver inserito il token nel codice PHP possiamo testare che il tracciamento stia funzionando correttamente, visitando il sito web pubblico e verificando che la sessione venga registrata su Matomo.

Posso usare contemporaneamente il tracking Javascript e Server-Side?

Sì, l'importante è rimuovere o commentare la riga Javascript che invia l'evento PageView a Matomo, altrimenti ci troveremmo a raccogliere visite doppie. Ho testato personalmente questa eventualità e può realmente verificarsi una duplicazione delle visite se si usa il "pageview tracking" sia tramite Javascript che tramite PHP.

Esempio di codice:

var _paq = window._paq = window._paq || [];
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
_paq.push(['enableHeartBeatTimer', 15]);
// La riga seguente è stata commentata per evitare doppie visite
// _paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
    var u = "https://matomo.yourwebsite.com/";
    _paq.push(['setTrackerUrl', u + 'matomo.php']);
    _paq.push(['setSiteId', '1']);
    var d = document,
        g = d.createElement('script'),
        s = d.getElementsByTagName('script')[0];
    g.type = 'text/javascript';
    g.async = true;
    g.src = u + 'matomo.js';
    s.parentNode.insertBefore(g, s);
})();

Noterai che ho usato anche enableHeartBeatTimer, è una funzione che permette un tracciamento più preciso inviando un ping ogni tot secondi (minimo 15) a Matomo per capire quanto tempo un utente rimane su una certa pagina. Consulta la documentazione Javascript di Matomo.

Potrai anche configurare su Matomo il tracciamento di Eventi, ad esempio se vuoi sapere su quali link cliccano gli utenti.

Attenzione che alcuni tracciamenti potrebbero venire bloccati dalla funzionalità Do Not Track di Firefox e altri browser, oppure da sistemi di Ad blocking.

AdBlocker e Do Not Track

La maggior parte degli AdBlocker (AdBlock, uBlock e simili) blocca il tracciamento effettuato da parte di Matomo. Ad esempio potrebbe venire bloccata la parola "matomo", quindi qualsiasi risorsa come matomo.js o matomo.php non sarà caricata.

Allo stesso modo, la funzionalità Do Not Track di Firefox blocca alcuni tipi di tracciamenti, se il browser dell'utente la utilizza e se il server usa il relativo Header.

Ho testato entrambi questi scenari e possono essere risolti con il tracking lato server. Rimane il fatto che il tracciamento tramite Javascript di alcuni eventi o azioni non funzionerà comunque. Il server side può anche essere configurato per tracciare degli eventi, ma questo richiede un lavoro in più.

Ad esempio, potremmo far passare tutti i nostri link tramite un unico script php che si chiamerà link.php e si occuperà di reindirizzare alla destinazione finale. Prima di farlo però, potrebbe inviare un evento a Matomo tramite PHP. Il problema principale di questo approccio, chiaramente, è che complica di molto la gestione dei link o di altre risorse, soprattutto per l'aumento della quantità di data-entry richiesto.

Considerazioni sulla privacy

Tracciare chi non vuole essere tracciato non è mai una buona scelta, però non per questo dobbiamo rinunciare al monitoraggio del traffico.

È chiaro che dobbiamo fare il possibile per rispettare la riservatezza e la privacy dell'utente. Se facciamo una raccolta dati a soli fini statistici con dati aggregati non ci sono problemi, ma se volessimo effettuare operazioni di profilazione, remarketing o simili sarà opportuno richiedere il consenso all'utente e attivare il tracking solo dopo aver ricevuto esplicito consenso.

Per fare un semplice esempio, possiamo configurare una pagina PHP che richiede il consenso all'utente e imposta un cookie tecnico se concesso.

Successivamente verificheremo l'esistenza del cookie in PHP e, se impostato, faremo partire il tracking:

if (!empty($_COOKIE['matomoTrackingConsent'])) {
    # File template.php o simile, l'imporante è che questo codice venga caricato in tutte le pagine
    $matomoSiteId = 1;
    $matomoUrl = 'https://matomo.yourwebsite.com';
    $matomoToken = '2a96a7df4c6f09272bf445d1c753d4a8 ';
    $matomoPageTitle = 'Titolo pagina';

    require_once '/var/www/html/yourwebsite/vendor/matomo/MatomoTracker.php';

    
    try {
        $matomoTracker = new MatomoTracker($matomoSiteId, $matomoUrl);
        $matomoTracker->setRequestTimeout(2);
        $matomoTracker->setTokenAuth($matomoToken);
    } catch (Exception $e) {
    }

    # File pagina.php, per personalizzare il titolo della pagina da passare a Matomo
    if (!empty($matomoTracker)) {
        $matomoTracker->doTrackPageView($matomoPageTitle);
    }
}

Facendo così perderemo comunque il primo accesso, perché non possiamo iniziare a tracciare l'utente prima di aver ricevuto il suo consenso!

Conclusioni

Ora il tuo tracciamento lato server di Matomo è configurato!

Se questo articolo ti è stato utile, seguimi su Facebook e iscriviti al canale Youtube! Se hai bisogno di supporto contattami in chat o via mail!

Leave a comment

I commenti dovranno essere approvati prima della pubblicazione. Potrebbero apparire dopo diverse ore.

Puoi usare un nome casuale, è utile per permettermi almeno di risponderti. Se scegli di lasciare la tua email, potrai ricevere una notifica quando rispondo al tuo commento.

Nessun commento è stato ancora inviato. Inizia la discussione condividendo la tua opinione!

*