Come costruire una web app per tracciare metriche SaaS, churn e engagement
Guida pratica per costruire una web app che traccia KPI SaaS come MRR, churn, retention e engagement — dalla modellazione dati e eventi fino a dashboard e alert.

Definisci l'obiettivo e l'ambito dell'MVP
Prima di scegliere grafici o database, decidi per chi è davvero pensata questa app — e su quali decisioni deve far prendere una posizione il lunedì mattina.
A chi si rivolge l'app
Un'app per metriche SaaS di solito serve un piccolo insieme di ruoli, ciascuno con viste indispensabili diverse:
- Founder vogliono una lettura chiara di crescita e rischio: trend di revenue, churn e retention.
- Ops / finance ha bisogno di coerenza: una sola definizione di MRR, rimborsi, sconti e cambi piano.
- Customer success si interessa agli account a rischio: cali di utilizzo, downgrades, rinnovi in scadenza.
- Growth / product cerca segnali di engagement: activation, adozione feature, retention per coorte.
Se provi a soddisfare tutti con ogni metrica dal giorno zero, consegnerai in ritardo — e la fiducia calerà.
Cosa significa “buono”
“Buono” è avere una sola fonte di verità per i KPI: un posto dove il team concorda sui numeri, usa le stesse definizioni e può spiegare ogni valore riportando gli input (subscription, invoice, eventi). Se qualcuno chiede “perché il churn è aumentato la settimana scorsa?”, l'app dovrebbe aiutarti a rispondere velocemente — senza esportare in tre fogli di calcolo.
Risultati core
Il tuo MVP dovrebbe produrre due esiti pratici:
- Decisioni più veloci: i KPI chiave sono visibili in meno di un minuto.
- Meno punti ciechi: noti trend negativi presto (churn, cali di revenue, drop di engagement).
Definisci l'ambito: MVP vs Fase 2
MVP: un piccolo set di KPI affidabili (MRR, net revenue churn, logo churn, retention), segmentazione di base (piano, regione, mese di coorte) e uno o due indicatori di engagement.
Fase 2: forecasting, analisi di coorte avanzata, experiment tracking, attribuzione multi-prodotto e regole di alerting più profonde.
Un ambito MVP chiaro è una promessa: consegnerai qualcosa di affidabile prima, poi espandi.
Scegli le metriche e scrivi definizioni semplici
Prima di costruire una dashboard di metriche SaaS, decidi quali numeri devono essere “giusti” dal giorno uno. Un set più piccolo e ben definito batte un lungo menu di KPI di cui nessuno si fida. L'obiettivo è rendere il tracciamento del churn, le metriche di retention e l'analisi dell'engagement abbastanza coerenti da far smettere prodotto, finance e sales di discutere la matematica.
Scegli i primi KPI (rimanda il resto)
Inizia con un set core che risponde alle domande che i founder si pongono settimanalmente:
- MRR e ARR (momentum di revenue)
- Logo churn e revenue churn (cosa si sta perdendo)
- Retention (i clienti restano?)
- Activation (i nuovi utenti raggiungono il valore?)
Se aggiungi analisi di coorte, expansion revenue, LTV o CAC più avanti, va bene — ma non lasciare che questi ritardino l'analitica delle subscription.
Scrivi definizioni che rimuovono ambiguità
Scrivi ogni metrica come una breve specifica: cosa misura, formula, esclusioni e regole temporali. Esempi:
- MRR (Monthly Recurring Revenue): somma degli importi ricorrenti delle subscription attive durante il periodo, normalizzata su base mensile. Escludi fee una tantum, addebiti per uso (a meno che non le includi esplicitamente) e tasse.
- Logo churn rate (mensile): clienti che avevano una subscription attiva all'inizio del mese e non sono più attivi alla fine, diviso per i clienti attivi all'inizio.
- Revenue churn rate (mensile): MRR perso da clienti churnati nel mese diviso per l'MRR iniziale (indica se nettiamo upgrade/downgrade).
- Activation rate: percentuale di nuove registrazioni che completano il tuo evento di “activation” definito entro una finestra temporale (es. 7 giorni).
Queste definizioni diventano il contratto dell'app — usale nei tooltip dell'interfaccia e nella documentazione così la tua web app KPI SaaS resta allineata.
Imposta finestre temporali e regole sul fuso orario
Scegli se l'app riporta giornalmente, settimanalmente, mensilmente (molti team partono con giornaliero + mensile). Poi decidi:
- Fuso orario: un default (es. UTC) o fuso per account
- Confini di periodo: mesi calendario vs finestre di 30 giorni
- Regole di backdating: come gestire eventi che arrivano tardi o rimborsi
Decidi le slice comuni che supporterai
La segmentazione rende i KPI azionabili. Elenca le dimensioni da prioritizzare:
- Piano / tier di prezzo
- Canale/campagna di acquisizione
- Paese / regione
- Team / workspace / account
- Coorte (mese di signup, primo pagamento o prima activation)
Bloccare queste scelte presto riduce lavoro futuro e mantiene consistenti gli alert analitici quando inizi ad automatizzare report.
Modella i dati: users, accounts, subscriptions ed events
Prima di calcolare MRR, churn o engagement, ti serve un quadro chiaro di chi paga, a cosa sono iscritti e cosa fanno nel prodotto. Un modello dati pulito evita conteggi doppi e rende più gestibili i casi limite.
Parti dalle entità core
La maggior parte delle app metriche SaaS si può modellare con quattro tabelle (o collection):
- Accounts: l'entità pagante (azienda, team o workspace)
- Users: persone che fanno login e compiono azioni
- Subscriptions: l'accordo commerciale (piano, prezzo, periodo di fatturazione, stato)
- Events: azioni di prodotto con timestamp usate per l'engagement (es. “created_project”)
Se tracci anche le fatture, aggiungi Invoices/Charges per report basati sul cash, rimborsi e riconciliazione.
Definisci ID e relazioni (sii deciso)
Scegli ID stabili e rendi esplicite le relazioni:
user_idappartiene a unaccount_id(molti utenti per account).subscription_idappartiene a unaccount_id(spesso una subscription attiva per account, ma permetti multipli se la tua pricing lo supporta).- Ogni
eventdovrebbe includereevent_id,occurred_at,user_ide di solitoaccount_idper supportare analytics a livello account.
Evita di usare l'email come chiave primaria; le persone cambiano email e alias.
Pianifica i casi limite delle subscription fin da subito
Modella i cambi di subscription come stati nel tempo. Cattura start/end timestamp e motivazioni quando possibile:
- upgrade/downgrade (cambi di piano vs nuova subscription)
- pause e riprese
- cancellazioni vs non-pagamento
- rimborsi e crediti (collega a invoices/charges)
Più prodotti o workspace
Se hai più di un prodotto, tipo di workspace o regione, aggiungi una dimensione leggera come product_id o workspace_id e includila coerentemente su subscriptions ed events. Questo mantiene semplice l'analisi delle coorti e la segmentazione.
Strumenta gli eventi di prodotto per tracciare l'engagement
Le metriche di engagement sono affidabili quanto gli eventi che le alimentano. Prima di tracciare “utenti attivi” o “adozione feature”, decidi quali azioni rappresentano davvero progresso per il cliente.
Scegli il vocabolario degli eventi
Parti con un piccolo set di eventi decisi che descrivono i momenti chiave del percorso utente. Per esempio:
- Signed Up (creazione primo account)
- Invited Teammate (intento di collaborazione)
- Created Project (prima azione “aha”)
- Connected Integration (segnale di stickiness)
- Published Report (valore erogato)
Mantieni i nomi degli eventi al passato, usa Title Case e rendili sufficientemente specifici perché chiunque legga un grafico capisca cosa è successo.
Definisci le proprietà evento necessarie
Un evento senza contesto è difficile da segmentare. Aggiungi proprietà che sai serviranno per le slice nella dashboard:
- plan (Free, Pro, Business)
- feature (quale modulo o pulsante l'ha attivato)
- device (web, iOS, Android)
- source (campagna marketing, in-app, API)
- account_id / user_id (per fare sia analytics a livello utente che account)
Sii rigoroso sui tipi (string vs number vs boolean) e sui valori consentiti (es. non mischiare pro, Pro e PRO).
Decidi da dove inviare gli eventi
Invia eventi da:
- Frontend per interazioni UI (click, page view, passi di onboarding)
- Backend per risultati confermati (payment succeeded, export completato, invito accettato)
- Entrambi quando ti serve affidabilità e dettaglio (es. il frontend cattura l'intento, il backend conferma il completamento)
Per l'engagement preferisci eventi backend per le azioni “completate” così le metriche di retention non vengono distorte da tentativi falliti o richieste bloccate.
Documenta regole di naming (così i dati restano coerenti)
Scrivi un breve tracking plan e tienilo nel repo. Definisci convenzioni di naming, proprietà richieste per evento e esempi. Questa singola pagina previene derive silenziose che spezzano il tracking del churn e l'analisi delle coorti. Se hai una pagina “Tracking Plan” nella docs dell'app, collegala internamente (ad esempio: /docs/tracking-plan) e tratta gli aggiornamenti come code review.
Costruisci la pipeline dati e i flussi di ingestion
La tua app metriche SaaS è tanto affidabile quanto i dati che entrano. Prima di creare grafici, decidi cosa ingesti, quanto spesso e come correggi gli errori quando la realtà cambia (rimborsi, modifiche piano, eventi tardivi).
Identifica le fonti dati necessarie
La maggior parte dei team parte da quattro categorie:
- DB dell'app: users, accounts/workspaces, ruoli, trial, feature flag
- Provider di billing (Stripe, Paddle, Chargebee): subscription, invoice, payment, refund, credit
- Eventi di prodotto: login, uso feature chiave, milestone di activation (dal tracker eventi o eventi custom)
- Strumenti support (Intercom, Zendesk): ticket, tag, CSAT — utili per correlare rischio di churn
Tieni una breve nota “source of truth” per ogni campo (es. “MRR è calcolato dagli subscription items di Stripe”).
Scegli un approccio di ingestion (e mixali)
Fonti diverse richiedono pattern diversi:
- Webhooks per cambi di billing e eventi critici (subscription updated, invoice paid). Sono near real-time e riducono il polling.
- Syncs schedulati per API con rate limit o dati meno sensibili nel tempo (ticket support, riconciliazione giornaliera delle fatture).
- Letture DB dirette (read replica o export) quando le entità core vivono in Postgres/MySQL e ti servono snapshot consistenti.
In pratica userai spesso webhooks per il “cosa è cambiato” più una sync notturna per “verifica tutto”.
Aggiungi un layer di staging per standardizzare e pulire
Atterra gli input raw in uno staging schema prima. Normalizza i timestamp in UTC, mappa gli ID piano a nomi interni e deduplica eventi usando chiavi di idempotenza. Qui gestirai anche particolarità come proration di Stripe o stati “trialing”.
Pianifica backfill e reprocessing
Le metriche si rompono quando arrivano dati tardivi o si correggono bug. Costruisci:
- Backfill (es. “re-sync degli ultimi 90 giorni di invoice”) per nuove fonti
- Reprocessing per regole di business aggiornate (es. logica MRR modificata)
- Una semplice UI admin o endpoint per avviare job in sicurezza, con log e storico delle esecuzioni
Questa base rende calcoli di churn e engagement stabili e debuggabili.
Progetta il database per query analitiche
Un buon DB analitico è progettato per leggere, non per modificare. Il tuo prodotto richiede scritture veloci e consistenza, la metrics app richiede scansioni rapide, slicing flessibile e definizioni prevedibili. Questo spesso significa separare dati raw da tabelle ottimizzate per analytics.
Conserva raw e tabelle aggregate
Mantieni un layer “raw” immutabile (spesso append-only) per subscription, invoice ed eventi esattamente come sono accaduti. Questa è la tua fonte di verità quando le definizioni cambiano o emergono bug.
Poi aggiungi tabelle di analytics curate che sono più semplici e veloci da interrogare (daily MRR per cliente, weekly active users, ecc.). Le aggregazioni rendono le dashboard scattanti e mantengono la logica consistente tra i grafici.
Usa fact table per ciò che è accaduto
Crea fact table che registrano risultati misurabili con un livello di dettaglio spiegabile:
- fact_revenue: una riga per invoice/charge (amount, currency, date, customer_id)
- fact_subscription: una riga per cambi di stato della subscription (plan_id, start/end dates, status)
- fact_event: una riga per ogni evento prodotto tracciato (user_id, event_name, timestamp)
Questa struttura rende più semplici metriche come MRR e retention perché sai sempre cosa rappresenta ogni riga.
Aggiungi dimension table per contesto
Le dimensioni ti aiutano a filtrare e raggruppare senza duplicare testo ovunque:
- dim_customer: attributi cliente (azienda, segmento, regione)
- dim_plan: nome piano, intervallo di fatturazione, price point
- dim_channel: canale di acquisizione (organic, paid, partner)
Con facts + dimensions, “MRR per canale” diventa una semplice join invece di codice custom in ogni dashboard.
Indici e partizioni per velocità
Le query analitiche spesso filtrano per tempo e raggruppano per ID. Ottimizzazioni pratiche:
- Indicizza
timestamp/datepiù ID chiave (customer_id,subscription_id,user_id). - Partiziona le fact grandi per tempo (mensile è un punto di partenza comune).
- Considera una tabella pre-aggregata come
agg_daily_mrrper evitare di scansionare revenue raw per ogni grafico.
Queste scelte riducono il costo delle query e mantengono le dashboard reattive man mano che la tua SaaS cresce.
Implementa calcoli di revenue, churn e retention
Questo è il passo in cui la tua app smette di essere “grafici su dati raw” e diventa una fonte di verità affidabile. La chiave è scrivere le regole una volta, poi calcolare sempre nello stesso modo.
Revenue: MRR/ARR con cambi reali di subscription
Definisci MRR come il valore mensile delle subscription attive per un dato giorno (o a fine mese). Poi gestisci gli aspetti sporchi esplicitamente:
- Upgrade/downgrade: decidi se riconoscere il cambiamento immediatamente (raccomandato) e da quale data effettiva.
- Prorazioni: se un cliente upgrade a metà ciclo, calcola il delta proporzionato per i giorni rimanenti. Memorizza sia il vecchio piano che il nuovo piano e il timestamp effettivo così il tuo calcolo può riprodurre la storia.
- ARR: tipicamente ARR = MRR × 12, ma mantieni ARR come metrica derivata per allinearla sempre a MRR.
Suggerimento: calcola il revenue usando una “timeline della subscription” (periodi con un prezzo) invece di cercare di rattoppare le invoice dopo.
Churn: definisci chiaramente cosa stai perdendo
Il churn non è un numero solo. Implementa almeno questi:
- Logo churn: % di clienti che hanno cancellato in un periodo
- Revenue churn (gross): MRR perso da cancellazioni e downgrade ÷ MRR iniziale
- Revenue churn (net): churn lordo meno expansion MRR (upgrade/reattivazioni)
Retention: viste N-day e per coorte
Traccia N-day retention (es. “l'utente è tornato al giorno 7?”) e retention per coorte (raggruppa utenti per mese di signup, poi misura l'attività nelle settimane/mesi successivi).
Activation e funnel di conversione
Definisci un solo evento di activation (es. “created first project”) e calcola:
- Activation rate: utenti attivati ÷ nuovi utenti
- Conversione del funnel: passaggio-per-passaggio e conversione end-to-end attraverso il percorso chiave
Definisci e calcola l'engagement utente
L'engagement conta solo se riflette valore ricevuto. Inizia scegliendo 3–5 azioni chiave che suggeriscono fortemente che un utente sta ottenendo valore — cose che ti dispiacerebbe se non venissero ripetute.
Scegli le azioni che rappresentano valore
Le azioni chiave sono specifiche e ripetibili. Esempi:
- Creare un progetto (activation)
- Invitare un teammate (collaborazione)
- Collegare un'integrazione (stickiness)
- Eseguire un report / esportare dati (outcome)
- Pubblicare / inviare / completare il workflow core (valore erogato)
Evita azioni di vanità come “visitato settings” a meno che non correlino davvero con retention.
Crea un punteggio di engagement semplice
Mantieni il modello di punteggio facile da spiegare a un founder in una frase. Due approcci comuni:
Weighted points (ottimo per trend):
- +1 per una sessione significativa
- +3 per completare il workflow core
- +5 per invitare un teammate
Poi calcola per utente (o account) in una finestra temporale:
- Engagement Score (30d) = somma(punti negli ultimi 30 giorni)
Thresholds (ottimi per chiarezza):
- Active: core workflow ≥ 2 volte in 7 giorni
- At risk: nessun core workflow in 14 giorni
- Dormant: nessun evento significativo in 30 giorni
Supporta trend e confronti
Mostra sempre l'engagement in finestre standard (ultimi 7/30/90 giorni) e un rapido confronto con il periodo precedente. Questo aiuta a rispondere a “Stiamo migliorando?” senza scavare nei grafici.
Mostra engagement per segmento e coorte
L'engagement diventa azionabile quando lo segmenti:
- Per segmento: piano, industry, dimensione team, canale di acquisizione, integrazione attiva
- Per coorte: mese di signup o primo pagamento; confronta le curve di engagement tra coorti
Qui noterai pattern tipo “SMB è attivo ma enterprise rallenta dopo la settimana 2” e collegherai engagement a retention e churn.
Crea dashboard che rispondono a domande reali
Le dashboard funzionano quando aiutano qualcuno a decidere cosa fare dopo. Invece di mostrare ogni KPI, parti con un piccolo set di “metriche decisionali” che rispondono a domande comuni: stiamo crescendo? stiamo trattenendo? gli utenti ricevono valore?
Inizia con una dashboard per il CEO (vista da 60 secondi)
Rendi la prima pagina uno sguardo rapido pensato per il check-in settimanale. Una top row pratica è:
- MRR (e crescita MRR)
- Churn (logo e revenue)
- Net Revenue Retention (NRR)
- Activation (il tuo evento “aha” scelto)
Tieni leggibile: una linea di trend primaria per KPI, un range temporale chiaro e un singolo confronto (es. periodo precedente). Se un grafico non cambia una decisione, rimuovilo.
Aggiungi pagine di drill-down per indagine
Quando un numero top-level sembra anomalo, gli utenti dovrebbero poter cliccare per rispondere al “perché?” velocemente:
- Lista clienti filtrata per piano, tenure, regione, canale di acquisizione
- Segmenti (SMB vs mid-market, monthly vs annual, new vs mature)
- Coorti per vedere retention/expansion per mese di signup
- Funnel per activation e workflow chiave
Qui collegherai metriche finanziarie (MRR, churn) al comportamento (engagement, adozione feature) così i team possono agire.
Usa grafici chiari — e definisci ogni metrica inline
Preferisci visual semplici: linee per trend, bar per confronti e una cohort heatmap per retention. Evita clutter: limita i colori, etichetta gli assi e mostra valori esatti al passaggio del mouse.
Aggiungi un piccolo tooltip di definizione metrica accanto a ogni KPI (es. “Churn = MRR perso / MRR iniziale per il periodo”) così gli stakeholder non discutono le definizioni in riunione.
Aggiungi alert e report schedulati
Le dashboard sono ottime per l'esplorazione, ma la maggior parte dei team non le guarda tutto il giorno. Alert e report schedulati trasformano la tua app metriche in qualcosa che protegge attivamente il revenue e mantiene tutti allineati.
Imposta regole di alert pratiche
Inizia con un piccolo set di alert ad alto segnale legati ad azioni che puoi intraprendere. Regole comuni includono:
- Spike di churn: cancellazioni nelle ultime 24 ore oltre soglia (conteggio assoluto e/o % dei clienti attivi)
- Calo di MRR: variazione netta MRR sotto una soglia giorno su giorno o settimana su settimana
- Diminuzione di activation: nuovi utenti che raggiungono l'evento di activation sotto baseline
- Pagamenti falliti: failure di pagamento oltre soglia o tasso di recupero retry in calo
Definisci le soglie in linguaggio semplice (es. “Allerta se le cancellazioni sono 2× la media a 14 giorni”) e permetti filtri per piano, regione, canale di acquisizione o segmento cliente.
Scegli i canali in base all'urgenza
Messaggi diversi vanno in posti diversi:
- Email per riepiloghi giornalieri/settimanali e trend a bassa urgenza
- Slack per problemi time-sensitive sul revenue o pagamenti
- Notifiche in-app per owner/admin che vivono nello strumento
Permetti agli utenti di scegliere destinatari (individui, ruoli o canali) così gli alert arrivano a chi può rispondere.
Includi sempre contesto e percorso di indagine
Un alert dovrebbe rispondere a “cosa è cambiato?” e “dove guardare dopo?”. Includi:
- Il valore della metrica, il cambiamento vs baseline e la finestra temporale
- Il segmento che guida il cambiamento (es. “Starter plan, EU, fatturazione monthly”)
- Un percorso alla vista filtrata rilevante (es. /dashboards/mrr?plan=starter®ion=eu)
Controlla il rumore con soglie, cooldown e raggruppamento
Troppi alert vengono ignorati. Aggiungi:
- Soglie minime (non allertare su cambi piccoli)
- Cooldown (non ripetere lo stesso alert per N ore)
- Raggruppamento/deduping (combina molteplici alert di failed-payment in un unico incidente)
Infine, aggiungi report schedulati (daily KPI snapshot, weekly retention summary) con timing consistente e lo stesso “clicca per esplorare” così i team passano rapidamente dalla consapevolezza all'indagine.
Gestisci permessi, privacy e auditabilità
Una app metriche SaaS è utile solo se le persone si fidano di ciò che vedono — e la fiducia dipende da controllo degli accessi, gestione dati e un chiaro storico di chi ha cambiato cosa. Tratta questo come una funzionalità prodotto, non come un ripensamento.
Definisci ruoli e cosa può fare ciascuno
Inizia con un modello di ruoli piccolo ed esplicito che riflette il modo di lavorare dei team SaaS:
- Founder/Admin: gestisce le fonti dati, le connessioni billing e le definizioni dei KPI; invita utenti; può esportare
- Analyst: può costruire e modificare dashboard, creare segmenti/coorti e definire calcoli custom, ma non può cambiare integrazioni
- Viewer: accesso in sola lettura a dashboard e report schedulati
Tieni i permessi semplici all'inizio: la maggior parte dei team non richiede decine di toggle, ma necessita chiarezza.
Proteggi i dati dei clienti (e valuta accesso a livello di riga)
Anche se tracci solo aggregati come MRR e retention, probabilmente conserverai identificatori cliente, nomi piano e metadata evento. Di default minimizza i campi sensibili:
- Conserva solo il necessario per analytics (es. user ID hashed invece di email).
- Cripta i segreti (API key, webhook token) e ruotali.
Se l'app sarà usata da agenzie, partner o team multipli, l'accesso a livello di riga può essere importante. Per esempio: “Analyst A può vedere solo account appartenenti al Workspace A.” Se non ti serve, non costruirlo subito — ma assicurati che il modello dati non lo impedisca in futuro (es. ogni riga legata a workspace/account).
Rendi le modifiche auditabili
Le metriche evolvono. Definizioni di “active user” o “churn” cambieranno, e le impostazioni di sync dati verranno regolate. Logga:
- Chi ha cambiato una definizione di metrica, quando e cosa è cambiato
- Chi ha cambiato impostazioni di sync (fonti, mapping, schedule)
- Quando sono partiti backfill o ricalcoli
Una semplice pagina di audit (es. /settings/audit-log) previene confusione quando i numeri si spostano.
Pianifica la compliance senza sovraccaricare
Non serve implementare ogni framework dal giorno uno. Fai le basi presto: accesso least-privilege, storage sicuro, politiche di retention e un modo per cancellare i dati cliente su richiesta. Se i clienti chiederanno SOC 2 o readiness GDPR più avanti, migliorerai una base solida — non riscriverai l'app.
Domande frequenti
Cosa dovrebbe includere l'MVP in una web app di metriche SaaS?
Inizia definendo le decisioni che l'app deve supportare il lunedì mattina (ad es. “Il rischio sul revenue sta aumentando?”).
Un MVP solido di solito include:
- Definizioni di KPI di fiducia (MRR/ARR, churn, retention, activation)
- Alcune slice core (piano, regione, mese di coorte)
- Drill-down di base da KPI → clienti/eventi che spiegano il numero
Come faccio a far sì che tutti si fidino di metriche come MRR e churn?
Tratta le definizioni come un contratto e rendile visibili nell'interfaccia.
Per ogni metrica, documenta:
- Cosa misura
- La formula esatta
- Esclusioni (tasse, fee una tantum, usage, ecc.)
- Regole temporali (fuso orario, confini dei periodi, backdating/refund)
Poi implementa quelle regole una sola volta in codice di calcolo condiviso (non separatamente per ogni grafico).
Quali KPI dovrei implementare per primi (e quali dovrebbero aspettare)?
Un set pratico per il day-one è:
- MRR/ARR per il momentum di revenue
- Logo churn e revenue churn (gross e/o net)
- Retention (coorti e/o N-day)
- Activation legata a un chiaro evento “aha”
Tieni espansione, CAC/LTV, forecasting e attribuzione avanzata per la fase 2 così non ritardi l'affidabilità.
Con quale modello dati dovrei partire per subscription e product analytics?
Un modello di base comune e spiegabile è:
- Accounts (l'entità pagante)
- Users (le persone che eseguono azioni)
- Subscriptions (l'accordo commerciale e lo stato nel tempo)
- Events (azioni di prodotto con timestamp)
Se ti serve riconciliazione e rimborsi, aggiungi Invoices/Charges.
Usa ID stabili (non email) e rendi esplicite le relazioni (es. ogni evento include user_id e di solito account_id).
Come gestisco upgrade, downgrade, proration e rimborsi?
Modella le subscription come stati nel tempo, non come una singola riga mutabile.
Cattura:
- Timestamp di inizio/fine per ogni stato
- Eventi di upgrade/downgrade (vecchio piano → nuovo piano)
- Pause / riprese
- Cancellazione vs non-pagamento
- Rimborsi/crediti collegati a fatture/charge
Questo rende le timeline MRR riproducibili ed evita spike di churn “misteriosi” quando la storia viene riscritta.
Come strumento gli eventi di prodotto affinché le metriche di engagement siano affidabili?
Scegli un piccolo vocabolario di eventi che rappresentino valore reale (non click di vanità), ad esempio “Created Project”, “Connected Integration” o “Published Report”.
Best practice:
- Usa naming coerente (passato, Title Case)
- Includi proprietà richieste per la segmentazione (plan, feature, source, device)
- Preferisci eventi backend per risultati completati; usa frontend per l'intento se necessario
- Mantieni un tracking plan nel repo (ad es. pagina Tracking Plan nella documentazione), per evitare derive
Qual è un buon approccio di pipeline dati per una metrics app?
La maggior parte dei team combina tre pattern di ingestione:
- Webhooks per cambi di billing near-real-time
- Syncs schedulati per API rate-limited o non urgenti
- Letture DB dirette / export per snapshot consistenti delle entità core
Atterra tutto in uno staging prima (normalizza fusi orari, dedup con chiavi di idempotenza) e tieni modi per backfill e reprocess quando regole o dati cambiano.
Come dovrei disegnare il database analitico per dashboard veloci?
Separa livelli:
- Tabelle raw/immutabili (append-only) per preservare la storia
- Fact/dimension curate per logica di business consistente
- Aggregazioni (es.
agg_daily_mrr) per dashboard veloci
Per le prestazioni:
- Indicizza tempo + ID chiave (
date/timestamp,customer_id,subscription_id,user_id) - Partiziona le fact grandi per tempo (spesso mensile)
- Pre-aggregare i KPI più consultati per evitare scansioni continue degli eventi raw
Quali dashboard dovrei costruire per primi per i founder e i team?
Inizia con una pagina unica che risponde a crescita e rischio in meno di un minuto:
- MRR (e crescita)
- Churn (logo e revenue)
- Net Revenue Retention (NRR)
- Activation rate
Poi aggiungi percorsi di drill-down che spiegano il “perché”:
- Liste clienti filtrate
- Segmenti (piano/regione/anzianità/canale)
- Coorti e curve di retention
- Funnel per activation e workflow chiave
Includi una tooltip con la definizione della metrica su ogni KPI per evitare discussioni.
Come imposto alert e report schedulati senza creare rumore?
Usa un piccolo set di regole high-signal collegate a azioni chiare, ad esempio:
- Spike di churn rispetto a baseline rolling
- Calo di Net MRR settimana su settimana
- Diminuzione dell'activation sotto soglia
- Aumenti di failed payments oltre un limite
Riduci il rumore con soglie minime, cooldown e raggruppamento.
Ogni alert dovrebbe includere contesto (valore, delta, finestra temporale, segmento principale) e un percorso di drill-down filtrato (es. /dashboards/mrr?plan=starter®ion=eu).