Un evento è una decisione che hai preso, non qualcosa che è successo

Ogni prodotto emette un numero illimitato di cose che succedono: clic, scroll, passaggi del mouse, cambi di route. Un evento è il piccolo sottoinsieme a cui hai deciso di dare un nome, perché ti dice qualcosa su cui agiresti. Questa decisione, non la strumentazione, è tutto il lavoro.

La conseguenza pratica è che un piano di tracciamento è un documento di prodotto, non di sviluppo. Se non sai dire cosa faresti di diverso a seconda che un evento scatti o meno, non ha ancora bisogno di esistere.

Dai agli eventi il nome dei risultati, non delle interfacce

clicked_blue_button smette di essere vero nel momento in cui il design rilascia un redesign. report_exported sopravvive, perché nomina ciò che l'utente ha ottenuto e non ciò che ha toccato.

Scegli una convenzione e mantienila: prima l'oggetto, poi l'azione al passato, in minuscolo con i trattini bassi — invite_sent, project_created, payment_failed. La coerenza conta più della convenzione scelta, perché sono i nomi incoerenti a rendere un catalogo di eventi impossibile da consultare dopo due trimestri.

Una convenzione di denominazione da copiare

La maggior parte dei team non ha bisogno di inventare una convenzione, solo di metterla per iscritto. Questa è abbastanza breve da ricordare e abbastanza rigorosa da mantenere un catalogo consultabile:

RegolaSìNo
Prima l'oggetto, poi l'azioneinvite_sentsent_invite
Al passato, perché è già successoproject_createdcreate_project
Minuscolo con trattini bassiplan_upgradedPlanUpgraded, plan-upgraded
Nomina il risultato, non il controlloreport_exportedexport_button_clicked
Le varianti vanno nelle proprietàreport_exported con format: csvreport_exported_csv
Nessun dato personale nei nomi o nei valoriplan: teamemail: ana@acme.com

Metti la convenzione all'inizio del piano di tracciamento e verifica i nuovi eventi rispetto a essa come verifichi il codice rispetto a una guida di stile. Un nome sbagliato si paga ogni volta che qualcuno cerca l'evento e non lo trova.

Da dieci a venti eventi, non duecento

L'errore comune è tracciare tutto con l'idea che i dati potrebbero servire in futuro. Quello che ottieni è un catalogo in cui nessuno sa orientarsi, tre eventi che significano quasi la stessa cosa e nessun accordo su quale sia quello di riferimento.

Parti dalle domande che già ti fai nelle revisioni (le persone completano la configurazione, tornano, dove rinunciano?) e strumenta solo ciò che vi risponde. Un piano di tracciamento che sta in una schermata viene mantenuto. Uno che sta in un foglio di calcolo no.

Un esempio concreto: un piano di tracciamento per un'app SaaS B2B

Ecco come appaiono dodici eventi per un tipico prodotto SaaS basato sui team. Ognuno esiste perché risponde a una domanda che qualcuno si pone già in una revisione settimanale.

EventoScatta quandoProprietà chiaveLa domanda a cui risponde
signup_completedL'account esiste, non quando il modulo viene inviatosourceQuali canali portano persone che arrivano davvero alla fine?
workspace_createdIl primo workspace viene salvatoteam_sizeQuanti iscritti arrivano fino alla configurazione?
teammate_invitedViene inviato un invitoroleL'account si sta estendendo oltre una sola persona?
invite_acceptedLa persona invitata si unisceroleGli inviti si trasformano in colleghi?
integration_connectedUna connessione va a buon fineintegrationQuali integrazioni usano i team che restano?
project_createdUn progetto viene salvatotemplateL'oggetto principale viene creato?
report_viewedUn report finisce di essere renderizzatoreport_typeCosa tornano a guardare le persone?
report_exportedIl file viene generatoformatL'output esce dal prodotto?
plan_upgradedLa fatturazione conferma il cambiofrom_plan, to_planCosa succede subito prima che le persone paghino di più?
payment_failedIl provider di fatturazione segnala un errorereasonQuanto abbandono è involontario?
subscription_cancelledL'annullamento diventa effettivoreasonPerché i team se ne vanno?
feedback_submittedIl modulo di feedback viene inviatocategoryCosa chiedono gli utenti, con le loro parole?

Vale la pena notare due cose. La maggior parte di questi eventi scatta su un risultato, non su un clic: un invito può essere cliccato e fallire comunque. E gli eventi di fatturazione non avvengono affatto nel browser. Arrivano dai webhook del tuo provider di fatturazione, quindi le analisi solo lato browser non li vedranno mai. Va bene, purché nessuno consideri un clic su “Upgrade” come un ricavo.

L'attivazione di solito è una combinazione di questi eventi piuttosto che uno solo, per esempio un workspace creato e un collega invitato nella prima settimana. Scegli questa definizione di proposito; i benchmark dei funnel di attivazione spiegano come.

Le proprietà portano il dettaglio; gli eventi portano il verbo

Resisti alla tentazione di creare un evento separato per ogni variante. report_exported_csv, report_exported_pdf e report_exported_xlsx dovrebbero essere un unico evento, report_exported, con una proprietà format. La regola pratica: se mai vorresti vedere i numeri sommati, è un unico evento con una proprietà.

Mantieni i valori delle proprietà stabili e con pochi valori possibili. Una proprietà che contiene un URL grezzo o una stringa di testo libero è una colonna che non puoi raggruppare, e quindi è decorazione e non dati.

Errori nel tracciamento degli eventi che rompono i report senza che te ne accorga

  • Far scattare l'evento sul clic invece che sul risultato. Un clic su “Esporta” non è un'esportazione. Se la richiesta fallisce, l'evento ha già mentito. Invia gli eventi di risultato quando l'azione è andata a buon fine.
  • Eventi doppi nelle single-page app. Un componente che viene renderizzato di nuovo o una route che viene montata due volte può inviare lo stesso evento due volte. Controlla alcune sessioni a mano prima di fidarti di un conteggio.
  • Dati personali nelle proprietà. Email, nomi e URL con token nella query string finiscono in ogni report e in ogni esportazione. Invia invece un ID o una categoria.
  • Tracciare prima del consenso. Dove si applica il GDPR, le analisi non dovrebbero partire finché il visitatore non acconsente. È una caratteristica della tua configurazione, non di ogni evento, quindi risolvilo una volta sola, con un gestore del consenso ai cookie che trattenga il tracciamento fino ad allora.
  • Cambiare il significato di un evento senza rinominarlo. Se project_created inizia a contare anche i progetti duplicati, ogni grafico prima e dopo il cambiamento non coincide e nessuno capisce perché. Un nuovo significato richiede un nuovo nome, o una proprietà che distingua i due casi.
  • Eventi senza un responsabile. Ogni evento del piano ha bisogno di una persona che si accorga quando smette di scattare. Gli eventi senza responsabile si degradano per primi e sono quelli di cui ci si fida più a lungo.

Acquisizione automatica ed eventi espliciti rispondono a domande diverse

L'acquisizione automatica registra le interazioni con l'interfaccia senza chiederti di pianificare, il che è davvero utile all'inizio: significa che i dati per una domanda a cui non avevi ancora pensato sono già lì, ed elimina il deploy dal ciclo. Quello che non può fare è conoscere il tuo dominio. Niente in un flusso di clic sa che un abbonamento è stato aggiornato.

La soluzione praticabile è usare entrambi: l'acquisizione automatica per esplorare e per le domande che non hai ancora fatto, e un breve elenco di eventi di dominio espliciti e ben nominati per i numeri su cui fai report e fissi obiettivi.

Definire gli eventi a posteriori

L'acquisizione automatica cambia la domanda da “ci siamo ricordati di strumentare questo?” a “riusciamo a trovarlo in ciò che è stato acquisito?”. PulsePanda registra ogni clic con id, classi, testo visibile, tag e posizione dell'elemento nella pagina, quindi un evento può essere definito in seguito a partire da questi dati, e la definizione si applica anche ai clic acquisiti prima che esistesse. Una domanda posta giovedì può trovare risposta con i dati di lunedì.

Ciò che lo rende affidabile è un aggancio stabile nel markup. Le classi cambiano a ogni redesign e il testo visibile cambia a ogni modifica dei testi e a ogni traduzione. Un id sui pochi controlli che contano cambia solo quando qualcuno decide che deve cambiare:

<button id="export-report">Export</button>
<button id="invite-teammate">Invite</button>
<a id="upgrade-plan" href="/it/billing">Upgrade</a>

Un evento definito come clic su #export-report sopravvive a un redesign, e un clic sull'icona o sull'etichetta all'interno del pulsante conta comunque, perché il percorso registrato risale fino all'elemento più vicino con un id.

Un evento definito resta comunque un clic, con il limite descritto sopra: ti dice che qualcuno ci ha provato, non che ha funzionato. Per i risultati, il segnale più onesto è spesso la pagina a cui porta il successo. Un passaggio del funnel “ha raggiunto /onboarding” dopo “ha raggiunto /signup” conta le registrazioni completate senza alcun evento.

Un funnel di PulsePanda costruito a partire dai passaggi tra pagine, che mostra quanti visitatori passano a vedere i prezzi, iniziano la registrazione, raggiungono l'onboarding e creano un primo progetto, con l'abbandono a ogni passaggio
Un funnel costruito solo con le pagine raggiunte. Ogni barra rappresenta i visitatori che sono arrivati a quella pagina dopo la precedente; lo spazio tra le barre è dove se ne sono andati.

Come verificare un evento prima di fidarti

  1. Attivalo tu stesso e trova la tua sessione. L'evento dovrebbe comparire una sola volta, con tutte le proprietà compilate.
  2. Confronta il conteggio con una fonte attendibile. Se il database dice che la settimana scorsa sono stati creati 140 progetti e le analisi dicono 95, trova la differenza prima che qualcuno ci costruisca un grafico. Ad blocker, consenso e richieste fallite rendono tutti i conteggi del browser più bassi di quelli del server. La differenza dovrebbe essere costante, non una sorpresa.
  3. Guarda una registrazione della sessione in cui è scattato. Un numero ti dice che è successo; una registrazione ti dice che è successo quando pensi tu.
  4. Inseriscilo in un funnel. Un evento che compare senza il passaggio che deve precederlo sta scattando dal punto sbagliato.

Da dove iniziare questa settimana

Scrivi i cinque momenti più importanti del tuo prodotto, dai loro un nome con la convenzione qui sopra e strumenta solo quelli. Poi, una settimana dopo, verifica che ciascuno scatti quando ti aspetti e che le sue proprietà siano compilate — un evento che scatta su un percorso del codice che nessuno usa è peggio di nessun evento, perché verrà creduto.

Se vuoi vedere come si comportano gli eventi che invii già prima di aggiungerne altri, il tracciamento degli eventi in PulsePanda mostra ogni evento, il suo volume e le sue proprietà in un unico posto, e porta gli stessi dati direttamente nei funnel e nei percorsi.