L'Event Tracking è la raccolta e l'analisi di eventi sulle azioni degli utenti all'interno di un'app mobile, dal clic sui pulsanti all'acquisto. Un event tracking di qualità è il fondamento dell'analisi di prodotto, dei test A/B e della personalizzazione. Secondo Amplitude (2024), i team con un Event Tracking sistematico prendono decisioni di prodotto 3 volte più velocemente grazie all'approccio data-driven. Senza eventi, l'analisi dell'app è cieca.
Punti chiave
L'Event Tracking è il processo di raccolta, archiviazione e analisi delle azioni discrete degli utenti in un'app. Ogni evento è composto da un nome (event_name) e da un insieme di parametri (event_params). Ad esempio, l'evento purchase ha i parametri price, currency, product_id, quantity.
A differenza del Screen View, che registra l'apertura di una schermata, l'Event Tracking descrive cosa l'utente fa esattamente su quella schermata: ha premuto il pulsante "Acquista", ha aperto il carrello, ha applicato un codice promozionale. Senza eventi, è impossibile comprendere la motivazione e il contesto delle azioni dell'utente.
Ogni Analytics Event contiene campi obbligatori e facoltativi. Obbligatori: event_name, event_timestamp, user_id (o device_id). Facoltativi: parametri, descrizione del contesto.
| Campo | Obbligatorio | Esempio |
|---|---|---|
| event_name | Sì | "purchase_completed" |
| event_timestamp | Sì | 1719876543000 |
| user_id | Sì | "user_abc123" |
| session_id | No | "session_456def" |
| revenue | No | 9.99 |
| currency | No | "USD" |
Il parametro revenue è particolarmente importante — viene trasmesso alle piattaforme MMP per il calcolo automatico di ROAS e LTV.
Gli eventi sono classificati per origine e scopo. Questa suddivisione aiuta a organizzare la struttura dei dati e a impostare i diritti di accesso per diversi team.
Gli SDK delle piattaforme analitiche raccolgono automaticamente eventi di base: app_install, app_remove, session_start, screen_view. Firebase Analytics genera circa 20 eventi automatici senza una singola riga di codice. Questi eventi coprono le metriche di base ma non forniscono comprensione della logica di business.
Gli eventi personalizzati sono ciò che rende prezioso l'Event Tracking. Descrivono azioni di business: add_to_cart, start_subscription, level_complete, share_content, search_performed. Gli eventi personalizzati richiedono un invio esplicito dal codice dell'app.
// Invio di un evento personalizzato a Firebase
val bundle = Bundle().apply {
putString(AnalyticsParam.ITEM_ID, "prod_789")
putString(AnalyticsParam.ITEM_NAME, "Premium Subscription")
putString(AnalyticsParam.CURRENCY, "USD")
putDouble(AnalyticsParam.PRICE, 29.99)
putString(AnalyticsParam.SOURCE, "onboarding_screen")
}
FirebaseAnalytics.getInstance(this)
.logEvent("subscribe_premium", bundle)
Nell'esempio, l'evento subscribe_premium contiene quattro parametri di contesto. Il parametro source permette di capire da quale schermata l'utente ha attivato l'abbonamento — onboarding, impostazioni o paywall.
Oltre agli eventi, l'Event Tracking include le User Properties — attributi legati all'utente: livello di abbonamento, paese, versione dell'app. Una User Property viene inviata una volta e si applica a tutti gli eventi successivi della sessione. Ciò consente di segmentare l'analisi senza aggiungere parametri a ogni evento.
Le Super Properties (Amplitude) o Global Properties (Mixpanel) sono attributi legati alla sessione, non all'utente. Utilizzate per i test A/B: variant_id viene aggiunto come Super Property a tutti gli eventi della sessione, consentendo all'analista di vedere a quale gruppo appartiene l'utente.
Gli eventi di revenue sono una classe separata per la registrazione delle transazioni. Contengono importo, valuta e tipo di acquisto (abbonamento, acquisto singolo, ripristino). Le piattaforme MMP (AppsFlyer, Adjust) richiedono eventi di revenue per il calcolo del ROAS.
Secondo Branch (2024), le app che trasmettono correttamente gli eventi di revenue alle MMP ottengono dati di attribuzione più precisi del 25% e possono ottimizzare le campagne basandosi sul LTV anziché sul CPI.
La configurazione dell'Event Tracking avviene in tre fasi: pianificazione dello schema eventi, integrazione dell'SDK, validazione dei dati.
Create una Event Taxonomy — un documento che descrive ogni evento: nome, parametri, trigger di invio, responsabile. Esempio per e-commerce: order_completed → parametri: order_id, total_price, items_count, payment_method, shipping_city.
Integrate l'SDK di analisi nel progetto. Firebase Analytics, Amplitude, Mixpanel — ogni SDK richiede l'inizializzazione in Application.onCreate(). Esempio per Flutter:
import 'package:firebase_analytics/firebase_analytics.dart';
class AnalyticsService {
final _analytics = FirebaseAnalytics.instance();
Future<void> logPurchase({
required String productId,
required double price,
required String currency,
}) async {
await _analytics.logEvent(
name: 'purchase_completed',
parameters: {
'product_id': productId,
'price': price,
'currency': currency,
'timestamp': DateTime.now().millisecondsSinceEpoch,
},
);
}
}
La classe AnalyticsService centralizza l'invio di tutti gli eventi. Ogni metodo corrisponde a un'azione di business. Ciò semplifica la ricerca — se un evento non arriva, si cerca per nome del metodo nel codice. Con la scalabilità del progetto, il numero di metodi può arrivare a 50–100, ma la struttura rimane leggibile grazie al raggruppamento per funzionalità.
Firebase DebugView permette di vedere gli eventi in tempo reale sul dispositivo dello sviluppatore. Attivate la modalità: adb shell setprop debug.firebase.analytics.app your.package. Tutti gli eventi appaiono nella console Firebase con meno di 5 secondi di latenza.
Dopo aver attivato DebugView, aprite l'app ed eseguite uno scenario di test — registrazione, acquisto, navigazione catalogo. Verificate nella console: tutti gli eventi sono stati inviati, i parametri sono corretti, non ci sono duplicati. Amplitude offre uno strumento simile — Amplitude Debugger per iOS e Android.
La validazione automatica tramite CI/CD è il livello di qualità successivo. Aggiungete uno script alla pipeline che verifica che ogni evento dello schema sia stato inviato almeno una volta durante l'esecuzione del test. Ciò impedisce il rilascio di versioni con eventi mancanti e fa risparmiare tempo agli ingegneri QA.
La denominazione degli eventi è l'aspetto più sottovalutato dell'Event Tracking. Un nome sbagliato rende l'analisi inutile quando il progetto supera i 50 eventi.
Usate il pattern object_action (minuscolo, snake_case): product_added, cart_opened, payment_failed, subscription_cancelled. L'oggetto è l'entità, l'azione è il verbo al passato. Si legge come una frase: "prodotto aggiunto", "carrello aperto".
NON usare spazi ("Add to Cart"), CamelCase ("AddToCart"), punti ("add.to.cart"), trattini ("add-to-cart"). La maggior parte degli SDK raccomanda snake_case. NON usare nomi di elementi UI ("btn_submit_clicked") — l'evento deve essere di business, non tecnico.
Aggiungete un prefisso con il nome della funzionalità o della schermata: onboarding_step_completed, checkout_payment_selected. Ciò consente di filtrare gli eventi per funzionalità nei report.
I parametri si dividono in tre tipi: string (valore), number (numero per aggregazione), boolean (flag). I parametri string contengono dati categorici: paese, fonte di traffico, nome prodotto. I parametri number servono come metriche: prezzo, quantità, durata. I parametri boolean indicano uno stato: is_trial, is_promo_applied.
Evitate di passare oggetti o array in un singolo parametro — le piattaforme analitiche non sanno analizzarli. Invece di una stringa JSON in un campo, passate più parametri piatti. Ad esempio, invece di items_count_total, passate items_count e total_price separatamente.
La scelta della piattaforma di Event Tracking dipende dalla scala del progetto e dal team. Consideriamo tre opzioni di diverso livello.
Firebase è la scelta standard per le startup. Il limite gratuito è di 500 event_name diversi, numero illimitato di parametri. Integrazione con BigQuery per analisi personalizzate. Svantaggi: segmentazione limitata, nessun collegamento automatico degli eventi in sessione.
Amplitude è una piattaforma di analisi di prodotto. Supporta Behavioural Cohorts, Funnel Analysis, Pathfinder. Permette di creare eventi virtuali da combinazioni di eventi reali. Si integra con oltre 50 strumenti tramite Segment.
Segment è un middleware per la gestione degli eventi. Inviate eventi a Segment, che li distribuisce a oltre 300 strumenti. Utile in ambienti enterprise dove Firebase, Amplitude, Mixpanel, Braze e Salesforce sono utilizzati simultaneamente.
PostHog è una piattaforma di analisi di prodotto open-source con il proprio Event Tracking. Supporta la cattura automatica degli eventi, la registrazione delle sessioni e i feature flags. Si distribuisce su un server proprio, il che è fondamentale per progetti soggetti a GDPR o con dati sensibili. Fornisce un'API compatibile con Python per pipeline ETL.
Per progetti Flutter, si consiglia flutterfire_analytics + Amplitude tramite il plugin amplitude_flutter. Per React Native — react-native-firebase + mixpanel-react-native.
Domande frequenti
L'intervallo ottimale è di 50–150 eventi per app. Meno di 50 — dati insufficienti per l'analisi, più di 150 — la qualità diminuisce (gli analisti non riescono a seguirli tutti). Per un MVP bastano 20–30 eventi chiave.
L'SDK mobile medio bufferizza gli eventi e li invia in batch ogni 5–30 secondi. Il limite di sicurezza è di 100 eventi al minuto per dispositivo. Oltre — rischio di perdita dati in caso di connessione debole. I picchi (es. caricamento di un livello) non sono critici.
Sì, gli SDK moderni salvano gli eventi nell'archivio locale in assenza di rete. Al ripristino della connessione, vengono inviati con il timestamp corretto. Firebase conserva gli eventi offline fino a 7 giorni, Amplitude — fino a 30 giorni.
Un nuovo evento viene creato con un nuovo event_name, il vecchio rimane per i dati storici. Create un mapping nel layer BI (CASE SQL o dashboard) per unire i dati. Non cambiate mai il nome di un evento esistente — spezzereste la cronologia.
Sì, l'Event Tracking è il fondamento della personalizzazione. Gli eventi vengono filtrati in tempo reale: se un utente ha inviato product_viewed 3 volte senza acquistare, mostrate un popup di sconto. Amplitude e Braze supportano trigger basati sugli eventi.
Riepilogo
Svilupperemo un'applicazione mobile chiavi in mano
IT Sectr crea applicazioni iOS e Android per startup e aziende dal 2017. Ti consulteremo e ti proporremo la soluzione migliore.
Leggi anche