Tracciamento Analitico: Raccolta Eventi con Priorità alla Privacy
Questo articolo spiega come tracciamo il comportamento degli utenti rispettando la privacy ed evitando il traffico bot.
Il Problema: Comprendere il Comportamento degli Utenti
Dobbiamo sapere:
-
Quali pagine visitano gli utenti
-
Quali prodotti visualizzano
-
Da dove proviene il traffico (Google Ads, organico, social)
-
Quali campagne guidano le conversioni
Ma dobbiamo evitare:
-
Tracciare bot e crawler
-
Memorizzare informazioni di identificazione personale (PII)
-
Violare le normative sulla privacy
La Soluzione: Tracciamento Lato Client + Lato Server
Lato Client: Tracciamento JavaScript
ID Visitatore: ID casuale memorizzato in un cookie (365 giorni)
ID Sessione: ID casuale memorizzato in sessionStorage (fino alla chiusura del browser)
Parametri campagna: Estratti dall'URL e memorizzati in sessionStorage
Parametri tracciati:
-
gclid- Google Click ID (Annunci di ricerca) -
gbraid- Google Ads click ID (Annunci Shopping) -
wbraid- Google Ads click ID (iOS) -
fbclid- Facebook click ID -
srsltid- Google organic search result ID -
utm_source,utm_medium,utm_campaign,utm_term,utm_content
Memorizzazione: I parametri vengono memorizzati nei cookie (30 minuti) per l'attribuzione dei clic su WhatsApp/telefono
Lato Server: Arricchimento
Il server arricchisce gli eventi con:
Dati GeoIP: Paese, regione, città dall'indirizzo IP
Analisi User-Agent: Browser, Sistema Operativo, tipo di dispositivo
Timestamp: Ora del server (UTC)
Rilevamento Bot: Filtra gli user-agent noti di bot
Tipi di Evento
Visualizzazione pagina: Un utente visita una pagina
Visualizzazione prodotto: Un utente visualizza una pagina prodotto
Aggiungi al carrello: Un utente aggiunge un prodotto al carrello
Checkout: Un utente avvia il checkout
Acquisto: Un utente completa un acquisto
Clic WhatsApp: Un utente clicca sul pulsante WhatsApp
Clic telefono: Un utente clicca su un numero di telefono
Flusso dei Dati
sequenceDiagram
participant User
participant JS as JavaScript
participant API as /api/analytics
participant Firehose as Kinesis Firehose
participant S3
User->>JS: Visita pagina
JS->>JS: Estrae parametri URL
(gclid, utm_*, ecc.)
JS->>JS: Memorizza in sessionStorage
JS->>API: POST evento + parametri
API->>API: Arricchisce con GeoIP
API->>API: Analizza User-Agent
API->>API: Filtra bot
API->>Firehose: Invia evento arricchito
Firehose->>S3: Memorizza nel bucket analyticsRilevamento Bot
Filtriamo il traffico bot utilizzando più segnali:
Pattern User-Agent: Stringhe note di bot (Googlebot, Bingbot, ecc.)
Pattern comportamentali: Troppo veloci, troppe richieste
JavaScript mancante: I bot spesso non eseguono JS
Cookie di esclusione: tv_exclude=true interrompe tutto il tracciamento
Protezione della Privacy
Nessun PII: Non memorizziamo mai nomi, email, numeri di telefono
IP anonimizzati: Ultimo ottetto rimosso prima della memorizzazione
Nessun tracciamento cross-site: I cookie sono solo di prima parte
Rinuncia (Opt-out): Gli utenti possono impostare il cookie di esclusione
Conservazione dati: Gli eventi vengono eliminati dopo 90 giorni
Caricamento Condizionale dei Pixel
Carichiamo i pixel di tracciamento solo quando rilevanti:
Pixel Google Ads: Solo se sono presenti gclid, gbraid o wbraid
Pixel LinkedIn: Solo se è presente msclkid
Pixel Facebook: Solo se è presente fbclid
Vantaggio: Caricamento pagine più veloce, minore sovraccarico di tracciamento
Rilevamento della Fonte di Traffico
Rileviamo la fonte di traffico dai parametri URL:
Google Ads: gclid, gbraid, wbraid → utm_source=google_ads
Google Organico: srsltid → utm_source=google_search
Facebook: fbclid → utm_source=facebook
LinkedIn: msclkid → utm_source=linkedin
Diretto: Nessun parametro → utm_source=direct
Tracciamento delle Conversioni
Tracciamo le conversioni attraverso l'imbuto:
Visualizzazione prodotto → Aggiungi al carrello → Checkout → Acquisto
Ogni passo include:
-
ID Visitatore (per l'attribuzione)
-
ID Sessione (per l'analisi della sessione)
-
Parametri campagna (per il calcolo del ROI)
-
SKU Prodotto (per l'analisi del prodotto)
Tracciamento dei Contatti Lead
Quando gli utenti ci contattano (WhatsApp, telefono, email), catturiamo:
Metodo di contatto: WhatsApp, telefono, email
Parametri campagna: Dai cookie (finestra di 30 minuti)
Contesto prodotto: Su quale pagina prodotto si trovavano
Vantaggio: Attribuisce conversioni offline a campagne online
Limitazione della Frequenza (Rate Limiting)
L'endpoint analytics ha una limitazione di frequenza:
Limite: 100 richieste ogni 10 minuti per IP
Vantaggio: Previene abusi e inondazioni da bot
Memorizzazione
Gli eventi vengono memorizzati in S3 tramite Kinesis Firehose:
Formato: Righe JSON (un evento per riga)
Partizionamento: Per data (anno/mese/giorno/ora)
Compressione: Gzip
Conservazione: 90 giorni
Interrogazione
Gli eventi vengono interrogati tramite AWS Athena:
Schema: Definito in Glue Data Catalog
Query: SQL sui dati in S3
Casi d'uso: ROI campagne, popolarità prodotti, fonti di traffico
Riferimenti
Concetti Tecnici
-
Web analytics - Wikipedia
-
Privacy by design - Wikipedia
Servizi AWS
-
Kinesis Firehose - Documentazione AWS
-
Athena - Documentazione AWS
Articoli Correlati
- Architettura Multi-Server - Dove viene eseguita l'analisi
Riepilogo
Il nostro sistema di analisi traccia il comportamento degli utenti rispettando la privacy:
Lato client:
-
✅ Estrae i parametri campagna dall'URL
-
✅ Memorizza in sessionStorage (scopo sessione)
-
✅ Memorizza in cookie (30 min per l'attribuzione)
-
✅ Invia eventi all'API
Lato server:
-
✅ Arricchisce con GeoIP e User-Agent
-
✅ Filtra il traffico bot
-
✅ Invia a Kinesis Firehose
-
✅ Memorizza in S3 (partizionato per data)
Privacy:
-
✅ Nessun PII memorizzato
-
✅ IP anonimizzati
-
✅ Solo cookie di prima parte
-
✅ Rinuncia (opt-out) disponibile
-
✅ Conservazione di 90 giorni
Caricamento condizionale:
-
✅ Pixel Google Ads solo se è presente gclid
-
✅ Pixel LinkedIn solo se è presente msclkid
-
✅ Pixel Facebook solo se è presente fbclid
Questo approccio bilancia approfondimenti, privacy e prestazioni.