clickSomo

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.

AktiveringKjøring #2 118
  • ⚡Utløserapi_event — signup.completed, plan free.
  • 2Send e-postDen eneste tingen du bør gjøre først. Ikke en omvisning i elleve funksjoner.
  • 3Vent 2 dagerwake_at på kjøringen. Ingenting i kø, ingenting å rydde opp i hvis du skriver om dette i morgen.
  • ?BetingelseHar project.created kommet? Nei → hjelpgrenen. Ja → målet under.
  • 4HjelpegrenÉn melding, som tilbyr det de ikke gjorde. Så en ny venting.
  • 5Målproject.created kommer. 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.