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 analytics

Rilevamento 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, wbraidutm_source=google_ads

Google Organico: srsltidutm_source=google_search

Facebook: fbclidutm_source=facebook

LinkedIn: msclkidutm_source=linkedin

Diretto: Nessun parametro → utm_source=direct

Tracciamento delle Conversioni

Tracciamo le conversioni attraverso l'imbuto:

Visualizzazione prodottoAggiungi al carrelloCheckoutAcquisto

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

Servizi AWS

Articoli Correlati

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.


← Torna all'Indice della Documentazione