SaaS- og produktteam
Produktet ditt vet ting ingen markedsføringsverktøy kan observere
Hvem fullførte onboarding, og hvem ble hengende på trinn tre. Hvem inviterte en kollega. Hvem traff grensen to ganger denne uken. Hvem ikke har åpnet greia på et halvannet døgn. Hver av disse er en bedre utløser enn noe avledet fra en e-poståpning, og alle er to kodelinjer unna å bli det.
Hendelser er hele integrasjonen
POST /v1/events med din egen token: et navn du velger, en kontakt, en payload, en idempotensnøkkel. Det er hele tilkoblingen. Ingen SDK å holde oppdatert, ingen kartleggingsskjerm, og intet vokabular fra oss du må oversette produktet ditt inn i.
Hver hendelse lander på kontaktens kun-pålegg-logg, og derfra er den tre ting på én gang. En utløser, slik at en trakt starter når den ankommer. Et predikat, slik at et segment kan si «har gjort dette de siste fjorten dagene» eller, mer nyttig, «ikke har». Og et mål, slik at en sekvens avsluttes i det øyeblikket noen gjør det den dyttet dem mot.
Det tredje er det som gjør livssyklusmeldinger utholdelige å motta. Dyttet om å fullføre oppsettet av kontoen din bør slutte å eksistere i det sekundet kontoen er satt opp, og i de fleste verktøy gjør den ikke det, fordi sekvensen og produktet ikke snakker sammen.
- ⚡Utløser
api_event—signup.completed, planfree. - 2Send e-postDen eneste tingen du bør gjøre først. Ikke en omvisning i elleve funksjoner.
- 3Vent 2 dager
wake_atpå kjøringen. Ingenting i kø, ingenting å rydde opp i hvis du skriver om dette i morgen. - ?BetingelseHar
project.createdkommet? Nei → hjelpgrenen. Ja → målet under. - 4HjelpegrenÉn melding, som tilbyr det de ikke gjorde. Så en ny venting.
- 5Mål
project.createdkommer. Kjøringen avsluttes. Ingen mer onboarding-e-post, noensinne, for denne personen.
Dine hendelsesnavnDin definisjon av aktivert
Fem trakter
Livssyklusen, i rekkefølgen den faktisk skjer i
1 · Aktivering
Utløser: registrering. To eller tre meldinger, hver om én handling, hver med et mål som avslutter sekvensen når handlingen skjer. Den mest verdifulle traktene du vil bygge, og den som er mest verdt å skrive om tre ganger.
2 · Stanset
Utløser: segment_enter — registrert, ingen meningsfull hendelse på sju dager. Én melding som spør i stedet for å fortelle, og én som tilbyr noe konkret. Så stopper du. En fjerde melding til noen som har ignorert tre, er en melding til ingen.
3 · Utvidelsesøyeblikket
Utløser: en hendelse som betyr at de får verdi — traff grensen, inviterte en tredje kollega, eksporterte for andre gang. Dette er eneste øyeblikket en oppgraderingsmelding er velkommen, og det er et øyeblikk produktet ditt kan navngi presist.
4 · Fornyelse og purring
Utløser: date_field før fornyelse, eller en betalingshendelse. Varsel, påminnelse og — hvis en betaling feiler — en kort sekvens som stopper i det øyeblikket den lykkes. Målnoder er ikke valgfrie i purring; de er forskjellen mellom en påminnelse og en plage.
5 · Vinne tilbake
Utløser: segment_enter — kansellert eller inaktiv i seksti dager. To meldinger, ærlige, så en tag og stillhet. Hva som har endret seg siden de forlot deg, er en bedre melding enn en rabatt.
Og den interne
notify_team varsler et menneske når en konto som fortjener et menneske krysser en grense. En trakt trenger ikke å ende i en e-post til en kunde; noen ganger er den riktige handlingen å be noen på din side ringe.

Ingen churner med vilje. De slutter bare å åpne den.
Hvorfor en utvikler faktisk kan like dette
Delene som betyr noe når det er du som integrerer
Ingen private endepunkter
Hver skjerm kan bygges fra det offentlige API-et, fordi det ikke finnes noen annen type. Hvis du vil bygge inn en kampanjerapport i din egen admin, står ingenting i veien, og ingenting trenger å reverseres.
Idempotensnøkler overalt
På alle ruter som endrer noe. Retry-logikken din, køen din med minst-én-gang-leveranse og det ustabile nettverket ditt blir alle en annens problem — nærmere bestemt et unikt indeks' problem.
Simuler før du sender
POST /v1/simulate kjører en kontakt tørrgjennom en trakt og returnerer stien og alle meldingene den ville sendt. Legg den gjerne i CI: en trakt er en graf, og en graf kan testes.
En MCP-server
Pek en agent mot /mcp og la den skrive og sjekke trakter. Verktøy med sendekapasitet krever eksplisitt bekreftelse og er begrenset av kvote, så en feiltolket prompt kan ikke bli femti tusen e-poster.
Webhooks ut
Signert, forsøkt på nytt med backoff, minst én gang. Samme hendelsesvokabular som rapportene bruker, slik at datavarehuset og dashbordet ikke er uenige om hva «levert» betyr.
Sletting som faktisk når frem
En slettingsforespørsel fjerner kontakten og meldingshistorikken deres her, og sprer seg til alle søstertjenester som har en kopi. Én forespørsel, ett utfall, og noe du kan peke på når du blir spurt.
Hvor grensen går
ClickSomo har en e-postliste og det listen gjorde. Den er ikke brukerdatabasen din, og den prøver ikke å være det: en kontakt bærer aldri en innloggingsdetalj, logger aldri inn, og blir aldri en konto. Brukerne dine bor i produktet ditt; kontakter bor her, og de to knyttes sammen av en e-postadresse og hendelsene du velger å sende.
Det skillet er bevisst, og det er grunnen til at samtykkemodellen fungerer. Du er den behandlingsansvarlige for brukerne dine; vi behandler på dine vegne. Et design der et markedsføringsverktøy i det stille blir identitetslageret, er et som ikke kan ryddes opp i senere — og det er nøyaktig feilen dette er bygget for å unngå.
Den praktiske versjonen: send hendelsene, send attributtene du vil segmentere på, og la alt annet være der det er. Hvis du finner på å dytte hele skjemaet ditt inn hit, er segmentet du prøver å bygge sannsynligvis en spørring i din egen database som heller burde komme frem som én boolsk attributt.