Vai al contenuto

Tracciamento server-side vs client-side

Il tracciamento client-side invia gli eventi dal browser e vede il contesto (pagina, dispositivo, UTM, referrer), mentre il tracciamento server-side invia gli eventi dal tuo back end e vede la verità. Gli ad blocker e i limiti di sette giorni di Safari rendono il lato client lacunoso; il lato server non vede il contesto. La risposta pratica è usarli entrambi, divisi per classe di evento.

Aggiornato: 7 min di letturaDi fromHello

Punti chiave

  1. Il tracciamento client-side cattura il contesto di attribuzione (UTM, referrer, dispositivo), ma secondo i dati GWI del secondo trimestre 2025 il 29,5% degli utenti di internet usa un ad blocker almeno ogni tanto, quindi una parte degli eventi del browser non arriva mai.

  2. L’ITP di Safari limita a sette giorni la scadenza dei cookie impostati via JavaScript ed elimina il resto dello storage scrivibile dagli script (localStorage, IndexedDB) dopo sette giorni di uso di Safari senza interazioni con il tuo sito: i visitatori Safari che tornano sembrano nuovi.

  3. Gli eventi di ricavo e di abbonamento vanno lato server: subscription_started avviene nel tuo back end, fuori dalla portata di qualsiasi blocker.

  4. Traccia su entrambi i lati, uniti da un unico ID utente (il client per il contesto, il server per la verità) e accetta uno scarto permanente tra i due conteggi.

Qual è la differenza, in una riga?

Il tracciamento client-side vede il contesto; quello server-side vede la verità. Il browser conosce i parametri UTM, il referrer, il dispositivo e la pagina, e perde eventi a causa dei blocker. Il tuo back end sa cosa è successo davvero (un abbonamento attivato, un pagamento non riuscito) e non sa nulla di come l’utente ci è arrivato. Questa guida spiega dove strumentare. Per cosa tracciare, i nomi e l’elenco degli eventi di partenza, leggi il piano di tracciamento degli eventi per startup; per capire perché i dati dovrebbero essere first-party, leggi dati first-party e tracciamento. Entrambe le metà stanno in un unico piano di tracciamento.

Quattro termini che inquadrano la scelta tra client e server.

Cosa vede il tracciamento client-side, e cosa perde?

Il contesto vive sul lato client. L’SDK nel browser cattura i parametri UTM, il referrer, la pagina di atterraggio, il dispositivo e il comportamento nella sessione: tutto ciò che serve all’attribuzione e all’analisi del funnel. Quello che perde sono utenti interi: secondo i dati GWI aggregati da Backlinko, il 29,5% degli utenti di internet nel mondo ha usato un ad blocker almeno ogni tanto nel secondo trimestre 2025, circa 1,77 miliardi di persone. Molti blocker fermano gli script di analisi insieme alla pubblicità, quindi una quota misurabile dei tuoi eventi client-side non viene mai inviata.

Anche senza blocker, Safari rende il tracciamento client-side lacunoso. Secondo la documentazione ITP di WebKit, Safari limita a sette giorni la scadenza dei cookie impostati via JavaScript ed elimina tutto il resto dello storage scrivibile dagli script (localStorage, IndexedDB) dopo sette giorni di uso di Safari senza interazioni con il tuo sito. Trascorsa quella finestra di sette giorni di uso, un visitatore che torna sembra del tutto nuovo e l’identità si rompe. La perdita è misurabile: quando Plausible ha confrontato i propri conteggi con quelli di Google Analytics su un sito in tendenza su Hacker News e Reddit, in un test di fine agosto 2021, Google Analytics ha perso il 58,67% dei visitatori. È un caso estremo, con un pubblico molto tecnico; Plausible cita ricerche precedenti che collocano il blocco sotto il 10% sui siti lifestyle e sopra il 25% su quelli dedicati alla tecnologia.

Cosa vede il tracciamento server-side, e cosa perde?

Il tracciamento server-side è il tuo back end che comunica i cambi di stato all’API degli eventi: subscription_started, payment_failed, plan_changed. Questi eventi avvengono sui tuoi server, non nel browser: registrarli lì non è un espediente, è la fonte onesta. Nessun blocker si mette in mezzo, nessun limite di storage li fa scadere, e il conteggio corrisponde al tuo database perché viene dal tuo database. Un evento server-side fa fede perché registra ciò che il tuo sistema ha fatto, non ciò che un browser è riuscito a comunicare. Il punto cieco è il contesto: il tuo back end non ha idea di quale campagna, referrer o dispositivo abbia portato l’utente, perché quel contesto è esistito solo lato client.

Client o server: quali eventi vanno dove?

Classe di eventoDove tracciarlaPerché
Visualizzazioni di pagina e attribuzione delle campagneClientUTM, referrer e pagina di atterraggio esistono solo nel browser.
Uso delle funzioni nel prodottoClient (anche server se critico)Il contesto dell’interfaccia conta; aggiungi una copia lato server quando una metrica ne dipende.
Registrazione e loginEntrambiIl punto di unione dell’identità: lo stesso ID utente su entrambe le strade.
Ricavi e stato dell’abbonamentoServerGli eventi legati al denaro avvengono nel tuo back end; il conteggio deve corrispondere al tuo database.
Eventi di email, webhook e integrazioniServerArrivano come webhook dai tuoi provider: lato client non c’è nulla da catturare.

Come dovrebbe dividerli un piccolo team?

  • Tutto ciò che riguarda il denaro (prove, abbonamenti, pagamenti, rimborsi) va lato server. Quando churn o MRR devono essere esatti, la fonte di verità è il server.
  • Tutto ciò che riguarda l’attribuzione (visualizzazioni di pagina, campagne, referrer) resta lato client. Quel contesto non si può ricostruire dopo.
  • Identifica l’utente su entrambe le strade con lo stesso ID, così i funnel si ricompongono e i test A/B con poco traffico assegnano ogni utente a una sola variante su tutti i dispositivi.
  • Accetta lo scarto. I conteggi client sono bassi per natura; usali per capire la direzione, e gli eventi server per tutto ciò che riporti.

Perché i due numeri non coincidono mai?

Se usi entrambi, i conteggi non coincideranno mai, e la differenza resterà. Il numero client è basso perché blocker e ITP si mangiano eventi; al numero server manca il contesto per dire da dove arrivano gli utenti. Non è un bug da correggere ma una proprietà da riconoscere: aspettati uno scarto permanente tra l’analisi lato client e la verità lato server, conosci la sua dimensione approssimativa per il tuo pubblico e smetti di inseguirlo. Riporta ogni numero dal suo lato onesto: attribuzione e direzione del funnel dai dati client; tutto ciò che finisce in una presentazione per gli investitori o in una fattura, come il tasso di churn, l’MRR e gli abbonamenti attivi, calcolato dagli eventi server. Le piattaforme di engagement come Iterable e Ortto accettano entrambe le fonti per lo stesso motivo.

Come lo gestisce fromHello?

fromHello tratta la divisione come impostazione predefinita. L’SDK JS/TS traccia lato client e mantiene una coda offline basata su localStorage: gli eventi inviati durante una perdita di connessione restano salvati e vengono rinviati quando il browser torna online. La stessa API degli eventi accetta invii lato server, così subscription_started arriva direttamente dal tuo back end con una chiave API. Entrambe le strade scrivono su un unico profilo: l’attribuzione catturata dall’SDK e gli eventi di ricavo inviati dal tuo server descrivono la stessa persona. Segmenti, percorsi e analisi leggono da quell’unico profilo: dividi la strumentazione, non l’identità.

FAQ

Domande frequenti

  • Devo passare tutto al tracciamento server-side?

    No. Gli eventi server-side non hanno contesto di UTM, referrer o dispositivo, quindi spostare tutto lì significa scambiare la perdita di dati con la cecità. Tieni l’attribuzione e il contesto del prodotto lato client, sposta lato server gli eventi legati al denaro e allo stato del ciclo di vita e unisci i due con un solo ID utente. La divisione per classe di evento batte entrambi gli estremi.

  • Il tracciamento server-side aggira gli ad blocker?

    Detto onestamente: i tuoi eventi first-party inviati dal tuo back end non passano mai dal browser, quindi non c’è nulla che un blocker possa bloccare. Non è una scappatoia ai danni degli utenti: gli eventi del tuo prodotto non sono tecnologia pubblicitaria, e il consenso vale in ogni caso. Con il GDPR, il consenso riguarda la persona e la finalità, non il canale da cui è passato l’evento.

  • Quali eventi spostare per primi lato server?

    Ricavi e ciclo di vita dell’abbonamento: subscription_started, payment_failed, plan_changed, disdette, rimborsi. Avvengono già nel tuo back end, guidano i calcoli di churn e MRR e sono gli eventi in cui un conteggio sottostimato ti costa decisioni reali.

  • Come si uniscono gli eventi client e server?

    Con un ID utente condiviso. Passa all’SDK nel browser lo stesso ID che il tuo back end invia all’API degli eventi, ed entrambi i flussi arrivano su un unico profilo. Funnel, esperimenti e segmenti leggono così una persona sola invece di due mezze persone.

fromHello è un software di marketing automation open source: messaggi attivati da ciò che fanno le persone.

fromHello Cloud è in accesso anticipato tramite la lista d’attesa.

Accesso anticipato

fromHello Cloud

Non si parte per restare piccoli.

L’accesso anticipato a fromHello Cloud si apre a scaglioni. L’onboarding è guidato: ti aiutiamo a configurare tutto e a portare i tuoi contatti.

Ti scriveremo quando il tuo accesso sarà pronto. Niente spam.

Vuoi aspettare ancora un po’? Vedi su GitHub