clickSomo
Apri ClickSomo

Team SaaS e di prodotto

Il tuo prodotto sa cose che nessuno strumento di marketing può osservare

Chi ha completato l'onboarding e chi si è bloccato al terzo passaggio. Chi ha invitato un collega. Chi ha raggiunto il limite due volte questa settimana. Chi non apre la cosa da due settimane. Ognuno di questi è un trigger migliore di qualsiasi cosa derivata dall'apertura di un'e-mail, e tutti distano due righe di codice dall'essercene uno.

Gli eventi sono tutta l'integrazione

POST /v1/events con il tuo token: un nome che scegli tu, un contatto, un payload, una chiave di idempotenza. Questa è tutta la connessione. Non c'è nessun SDK da tenere aggiornato, nessuna schermata di mappatura e nessun vocabolario nostro in cui devi tradurre il tuo prodotto.

Ogni evento finisce nel log di sola aggiunta del contatto e da lì è tre cose contemporaneamente. Un trigger, così un funnel parte quando arriva. Un predicato, così un segmento può dire "ha fatto questo negli ultimi quattordici giorni" o, più utile, "non l'ha fatto". E un obiettivo, così una sequenza termina nel momento in cui qualcuno fa la cosa verso cui lo si stava spingendo.

Il terzo è ciò che rende i messaggi di ciclo di vita sopportabili da ricevere. La sollecitazione a finire di configurare il tuo account dovrebbe smettere di esistere nel secondo in cui l'account è configurato, e nella maggior parte degli strumenti non lo fa, perché la sequenza e il prodotto non si parlano.

AttivazioneEsecuzione #2 118
  • ⚡Triggerapi_event — signup.completed, piano free.
  • 2Invia e-mailL'unica cosa da fare per prima. Non un tour di undici funzionalità.
  • 3Attendi 2 giorniwake_at sull'esecuzione. Niente in coda, niente da districare se riscrivi questo domani.
  • ?Condizioneproject.created è arrivato? No → il ramo di aiuto. Sì → l'obiettivo qui sotto.
  • 4Ramo di aiutoUn messaggio, che offre la cosa specifica che non hanno fatto. Poi una seconda attesa.
  • 5Obiettivoproject.created arriva. L'esecuzione esce. Niente più e-mail di onboarding, mai, per questa persona.

I nomi dei tuoi eventiLa tua definizione di attivato

Cinque funnel

Il ciclo di vita, nell'ordine in cui accade davvero

1 · Attivazione

Trigger: iscrizione. Due o tre messaggi, ognuno su una sola azione, ognuno con un obiettivo che termina la sequenza quando quell'azione avviene. Il funnel più prezioso che costruirai, e quello che più vale la pena riscrivere tre volte.

2 · Il blocco

Trigger: segment_enter — iscritto, nessun evento significativo in sette giorni. Un messaggio che chiede invece di dire, e uno che offre una cosa specifica. Poi stop. Un quarto messaggio a qualcuno che ne ha ignorati tre è un messaggio a nessuno.

3 · Il momento di espansione

Trigger: un evento che significa che stanno ottenendo valore — hanno raggiunto il limite, hanno invitato un terzo collega, hanno esportato per la seconda volta. Questo è l'unico momento in cui un messaggio di upgrade è benvenuto, ed è un momento che il tuo prodotto può nominare con precisione.

4 · Rinnovo e solleciti di pagamento

Trigger: date_field prima del rinnovo, o un evento di pagamento. Avviso, promemoria e — se un pagamento fallisce — una breve sequenza che si ferma nell'istante in cui va a buon fine. I nodi obiettivo non sono facoltativi nei solleciti; sono la differenza tra un promemoria e un molestare.

5 · Recupero

Trigger: segment_enter — cancellato o inattivo da sessanta giorni. Due messaggi, onesti, poi un tag e silenzio. Cosa è cambiato da quando se ne sono andati è un messaggio migliore di uno sconto.

E quello interno

notify_team avvisa una persona quando un account che merita una persona supera una soglia. Un funnel non deve necessariamente finire con un'e-mail a un cliente; a volte l'azione giusta è dire a qualcuno dalla tua parte di alzare il telefono.

Nessuno abbandona di proposito. Semplicemente smettono di aprirlo.

Perché uno sviluppatore potrebbe davvero apprezzarlo

Le parti che contano quando sei tu a integrare

Nessun endpoint privato

Ogni schermata è costruibile dall'API pubblica, perché non esiste altro tipo. Se vuoi incorporare un report di campagna nel tuo pannello di amministrazione, nulla ti ostacola e nulla va decodificato in retrospettiva.

Chiavi di idempotenza ovunque

Su ogni rotta che modifica dati. La tua logica di retry, la tua coda at-least-once e la tua rete instabile diventano tutti un problema di qualcun altro — precisamente, di un indice univoco.

Simula prima di pubblicare

POST /v1/simulate esegue un dry-run di un contatto attraverso un funnel e restituisce il percorso e ogni messaggio che verrebbe inviato. Mettilo in CI se vuoi: un funnel è un grafo, e un grafo si può testare.

Un server MCP

Punta un agente a /mcp e lascialo lavorare su funnel, crearli e verificarli. Gli strumenti con capacità di invio richiedono una conferma esplicita e sono limitati da una quota, così un prompt frainteso non può diventare cinquantamila e-mail.

Webhook in uscita

Firmati, ritentati con backoff, almeno una volta. Lo stesso vocabolario di eventi usato dai report, così il tuo warehouse e la tua dashboard non discordano su cosa significa "consegnato".

Una cancellazione che arriva davvero

Una richiesta di eliminazione rimuove il contatto e la sua cronologia di messaggi qui e si propaga a ogni servizio gemello che ne conservava una copia. Una richiesta, un esito, e qualcosa da mostrare quando te lo chiedono.

Dove sta il confine

ClickSomo conserva una mailing list e ciò che quella lista ha fatto. Non è il tuo database utenti e non vuole esserlo: un contatto non porta mai con sé una credenziale, non effettua mai l'accesso e non diventa mai un account. I tuoi utenti vivono nel tuo prodotto; i contatti vivono qui, e i due sono uniti da un indirizzo e-mail e dagli eventi che scegli di inviare.

Questa separazione è voluta ed è il motivo per cui il modello di consenso funziona. Tu sei il titolare del trattamento dei tuoi utenti; noi trattiamo i dati per tuo conto. Un design in cui uno strumento di marketing diventa silenziosamente l'archivio delle identità è uno che non si riesce più a districare in seguito, ed è esattamente l'errore che questo è costruito per evitare.

La versione pratica: invia gli eventi, invia gli attributi su cui vuoi segmentare, e lascia tutto il resto dov'è. Se ti accorgi di star spingendo qui dentro l'intero schema, il segmento che stai cercando di costruire è probabilmente una query nel tuo database che dovrebbe arrivare come un singolo attributo booleano.