clickSomo
Open ClickSomo

SaaS and produkt tims

Your product know things wey no marketing tool fit see

Who finish onboarding and who stall for step three. Who invite colleague. Who hit the limit two times this week. Who neva open the thing for two weeks. Every one of those na better trigger pass anything wey come from e-mail open, and all of dem na two lines of code away to become one.

Events na the whole integration

POST /v1/events with your own token: a name wey you choose, a contact, a payload, an idempotency key. Na the whole connection be that. No SDK wey you go dey keep current, no mapping screen, and no vocabulary of ours wey you go translate your product into.

Each event go land on the contact append-only log, and from there na three things at once. A trigger, so funnel go start when e arrive. A predicate, so segment fit say "don do this within the last fourteen days" or, more useful, "neva do am". And a goal, so sequence go end the moment person do the thing wey e dey nudge dem towards.

That third one na im make lifecycle messaging dey bearable to receive. The nudge to finish setting up your account suppose stop to exist the second the account don set up, and for most tools e no dey stop, because the sequence and the product no dey talk to each other.

ActivationRun #2 118
  • ⚡Wetin dey start amapi_event — signup.completed, plan na free.
  • 2Send emailDi one thing wey you suppose do first. No be tour of eleven features.
  • 3Wait 2 dayswake_at dey on di run. Nothing dey queue, nothing to unpick if you rewrite dis one tomorrow.
  • ?Conditionproject.created don reach? No → di help branch. Yes → di goal wey dey below.
  • 4Help branchOne message, wey dey offer di specific thing wey dem no do. Den one second wait.
  • 5Goalproject.created don reach. Di run go exit. No more onboarding mail again, ever, for dis person.

Your event namesYour own definition of activated

Five funnels

Di lifecycle, for di order wey e really happen

1 · Activation

Trigger: sign-up. Two or three messages, each one about one action, each one get goal wey go end di sequence when dat action happen. Di funnel wey get di most value wey you go build, and di one wey worth am pass to rewrite three times.

2 · Di stall

Trigger: segment_enter — dem sign up, but no meaningful event for seven days. One message wey dey ask instead of tell, and one wey dey offer specific thing. Den stop. A fourth message to person wey don ignore three na message to nobody.

3 · Di expansion moment

Trigger: one event wey mean say dem dey get value — dem hit di limit, dem invite third colleague, dem export for di second time. Na di only moment wey upgrade message dey welcome, and na moment wey your product fit name well well.

4 · Riniwal and donin

Trigger: date_field before renewal, or one payment event. Notice, reminder, and — if payment fail — short sequence wey go stop di instant e succeed. Goal nodes no be optional for dunning; na dem be di difference between reminder and harassment.

5 · Win-back

Trigger: segment_enter — dem cancel or dem don sleep for sixty days. Two messages, honest ones, den one tag and silence. Wetin don change since dem leave na better message pass discount.

And di internal one

notify_team dey tell human being when account wey worth human being cross one line. Funnel no suppose end with e-mail to customer; sometimes di right action na to tell person for your side make dem pick phone.

Nobody dey churn on purpose. Dem just stop to open am.

Why developer fit really like dis one

Di parts wey matter when na you dey integrate

No private endpoints

Every screen fit build from di public API, because no other kind dey. If you want embed campaign report inside your own admin, nothing dey block you and nothing need reverse-engineering.

Idempotency keys everywhere

For every route wey dey mutate. Your retry logic, your at-least-once queue and your flaky network all go become another person problem — specifically, one unique index problem.

Simulate am before you ship

POST /v1/simulate dey dry-run one contact through one funnel and e go return di path and every message wey e go send. Put am inside CI if you like: funnel na graph, and graph fit test.

One MCP server

Point one agent to /mcp and make e author and check funnels. Tools wey fit send need explicit confirmation and quota dey cap dem, so one misread prompt no go turn to fifty thousand e-mails.

Webhooks wey dey go out

Signed, retried with backoff, at least once. Di same event vocabulary wey di reports dey use, so your warehouse and your dashboard no go disagree about wetin "delivered" mean.

Erasure wey really reach

One deletion request go remove di contact and dia message history here and e go fan out to every sibling service wey hold copy. One request, one outcome, and something wey you fit point at when dem ask you.

Where di boundary dey sit

ClickSomo dey hold one mailing list and wetin dat list do. E no be your user database and e no dey try be am: contact no dey ever carry credential, no dey ever sign in, and no dey ever become account. Your users dey live inside your product; contacts dey live here, and di two dey join by one e-mail address and di events wey you choose to send.

Dat separation na deliberate, and na im make di consent model work. Na you be di data controller for your users; we dey process on your behalf. Any design wey make marketing tool quietly turn to identity store na one wey person no go fit untangle later, and na exactly di failure dis one dey built to avoid.

The practical version: send the events, send the attributes you want to segment on, and keep everything else where e dey. If you find yourself pushing your whole schema in here, the segment you are trying to build na probably a query for your own database wey suppose arrive as one boolean attribute instead.