clickSomo

Overview

Four moving parts,and they are all ordinary.

People, with a record of what you are allowed to send them. A graph that decides what happens when. Documents that render into whatever the graph wants to send. And an engine that walks contacts through the graph without losing anyone, double-sending, or breaking when you edit it at half past four on a Friday.

  • 1ContactsWho they are and on what basis you may write.
  • 2TriggerSomething happens. A run starts.
  • 3GraphWaits, conditions, splits, goals, sends.
  • 4CreativeOne document rendered to the target channel.
  • 5SendYour mailbox or your provider. Suppression checked here.
  • 6EventsDelivered, opened, clicked — back onto the contact.

Step six feeds step two. A message being opened is itself a trigger; a link being clicked is a trigger; the absence of either for ninety days is a segment somebody can enter. That loop is the whole product, and everything below is a detail of how one of its six parts is built.

What follows is not a feature list arranged to look impressive. It is the shape of the system, in the order a person actually meets it.

The contact plane
and the account plane never meet.

A customer is you — you sign in with a castomo account, and ClickSomo never sees your password, because identity belongs to a separate service and is verified offline.

A contact is somebody you market to. A contact never signs in, never holds a credential, and never becomes an account. The two planes are kept permanently separate, because you are the data controller for your own contacts and we are the processor — and that is the arrangement that makes the whole thing lawful rather than merely convenient.

It has a practical edge as well. A payment does not create a contact. A booking does not create a contact. There is no quiet back door through which a sibling service can add somebody to your list without a basis for writing to them.

Contacts, segments and consent

What ClickSomo stores about youBoundaries
  • 1Three identifiersTenant, project and user, as uuids. No password, no profile, no card.
  • 2Quotas as numbersContacts, sends, AI generations. No amount, no currency, no invoice — billing vocabulary does not cross this line.
  • 3Your contactsYours. Scoped to a tenant and a project together, so a forgotten project sees nothing rather than somebody else's rows.

Two planes, permanently separate

Everything here happens in somebody's pocket.

The engine

A run is a row,
and a wait is a time on it.

One run per contact per funnel version. A worker leases the runs that are due, executes nodes until it reaches a wait or a terminal, and writes the next wake-up time. That is the whole loop, and its plainness is the point.

A node is a pure function

Of the run, the contact and the node — and its effects commit in the same transaction as the run's own advance. A worker killed between "send" and "advance" leaves nothing half-done, which is what makes a retry safe rather than a second e-mail.

Waits are not queued rows

A wait sets wake_at on the run. Nothing downstream is written in advance, so there is nothing downstream to corrupt when you edit the funnel — the failure mode of every tool that pre-materialises a sequence at entry.

Idempotency is an index

Not a check followed by an insert: the window between those two is exactly wide enough to double-send. A unique index over run, node, contact and window is what actually stops it, and it stops it under load too.

Every trigger, action and flow node

What this is not.

It is not a CRM. It holds a mailing list and what that list did, not your pipeline, your deals or your invoices. If you need those, keep the system you have and send it events.

It is not an agent that decides for itself what to send. AI drafts a funnel or a piece of copy at a point you asked it to; the graph it produces is then validated by exactly the same checker that gates a human's, and nothing reaches a real person without a human publishing it. That is a deliberate limit and it is why a run is reproducible.

It is not a mail server, and it never will be. Deliverability reputation belongs to your provider or your own mailbox — which is also why nobody else's bad campaign can damage yours here.

The honest bit: bringing your own sending is a real trade. You configure a mailbox or a provider, add three DNS records and check they verify, and you own the consequence if you send something people report. In exchange you pay nothing towards delivery, your reputation is not pooled with strangers, and switching provider does not change a single thing upstream of it.

Tell us what you send today,
and to how many.

We will show you what it looks like here — usually with the funnel drawn, because that is faster than a paragraph about it.

Open ClickSomo Talk to a person

Illustrations by Pixeltrue (Minimalistic pack).