Marketing automation — e-mail, SMS, push, printed letters
Say what should happen.It happens, on the right day.
You write the rule once. ClickSomo remembers it forever — which is more than you could say for the intern who used to do this by hand.
4 channels in one funnel14 triggers, 16 actions0 mail servers of our own1 delivery vocabulary, any provider
The rules it keeps for youTry it here — no account, nothing to install
Describe a funnel. Watch it drawn, block by block.
Write a sentence about who should hear from you, when, and what should happen if they click. The trigger, the e-mails and texts, the waits and the branches arrive on a canvas while you watch. Drag the blocks, open one to change it, and keep what you made. Nothing is sent — this only designs the funnel.
Ideas to start from
or open a ready-made funnel
How it goes.
Bring the people
A CSV from your till, a form on your site, a page you built in dash-b, or your own code calling the API with your own token. Each contact arrives carrying where it came from and on what basis you may write to it.
Say what should happen
"Remind people the day before, and ask how it went two days after." Pick the trigger, drop the messages on the days you want them, or write the sentence and have the funnel drafted for you. Then read it and change what you disagree with.
Connect a mailbox and publish
Your own SMTP account or a provider you already pay for. ClickSomo runs no mail server, so your sending reputation stays yours. Publish, and the funnel runs — every time the trigger fires, for every contact, on the right day.
A funnel, running
This is what a week of follow-up actually looks like.
Not a diagram of one. A run is a row per contact per funnel version, and every node it entered is written down with what it decided and what it emitted — which is how you answer "why did this person get that e-mail?" three weeks later.
- ⚡Trigger
api_event—order.paidfrom the shop, first order for this contact. - 2Send e-mailThank you, plus the two things people usually buy next. Suppression checked at this moment, not when the funnel was drawn.
- 3WaitTwo days. A
wake_aton the run — no queued rows, nothing to corrupt if you edit the funnel tonight. - ?Goal checkHas a second order landed? No. The run continues. Had it landed, the run would have exited here and this contact would receive nothing further.
- 4Quiet hoursDue now, but the contact's local evening. Held at the message layer until 09:00 — not by a rule copied into every branch.
- 5Send SMSFourteen words and a link. Segment count shown before send, because one emoji turns one segment into three.
- 6Goal reachedSecond order. The run exits. Nobody gets "we miss you" the day after they came back.
Version pinned at entryEvery step written down
The parts that are hard to get right
Sending is easy.
Sending well is where tools leave you alone.
These are not settings you switch on. They are how the engine is built, and they are the reason it is worth moving a working list into something new.
Consent is a ledger with a lawful basis,
never a tick-box.
Every contact carries one row per channel: the state, the lawful basis, where it came from, the evidence, and when. A CSV import lands as legitimate_interest at best — never as consent, because a spreadsheet cannot remember somebody agreeing to something.
A contact with no basis row cannot be mailed at all. Absence is not permission, and a system that treats an empty column as a yes will eventually mail a list somebody bought. Before a campaign goes out you see the basis mix of its audience, so "who exactly am I about to write to, and why am I allowed to" has an answer on the screen rather than in somebody's memory.
- 1UploadedCSV from the till export. Every row normalised on write, never on read.
- 2MX checkedDead and typo'd domains caught before they can hard-bounce.
- 3Basis assigned
legitimate_interest, source recorded as the import id. Not upgradable by re-uploading the same file. - !Not mailable311 rows arrived with no address of any use. They sit there; they do not quietly become an audience.
Basis set at importNever inferred
Editing a live funnel does
not disturb anyone already inside it.
Publishing a funnel writes an immutable version. A run walks the version it entered on, so you can rewrite tomorrow's message while four thousand people are halfway through this week's sequence, and every one of them finishes the flow they started.
The reason this works is that a wait is a wake-up time on the run rather than a queue of pre-written rows. Tools that materialise the whole downstream the moment somebody enters have no way to avoid corrupting people in flight — the messages already exist, addressed to a version of the funnel you have just deleted.
- 1Version 8 publishedDay-3 message rewritten, a split added.
- 2In flight4 118 runs keep walking version 7 to the end. Nothing re-plans, nothing re-sends.
- 3New entriesEveryone entering after 16:40 walks version 8.
No queued rows to rewriteNo double sends
Reports say which opens were people
and which were machines.
Apple Mail Privacy Protection opens every image in every message it fetches. Outlook SafeLinks clicks every link to check it. Any tool reporting raw opens and clicks is reporting those as engagement, and a number that mixes them silently is worse than no number at all — because you make decisions on it.
ClickSomo stores the raw events, reports the filtered figures, and labels which is which. You can see both. The uncomfortable version is the one that is true, and it is the one on the screen by default.
- ✉DeliveredCounted from delivery events, recomputed — never incremented in place.
- 👁OpensRaw and filtered shown side by side, with the machine share named.
- ↗ClicksScanner traffic separated. A signed redirect, validated against this message's own link set.
- iWhy it mattersAn A/B split decided on scanner opens picks the wrong winner with complete confidence.
Stored rawReported filteredAlways labelled
Your sending stays yours.
ClickSomo runs no mail server. You connect your own SMTP mailbox — including the ones your hosting already gives you — or a provider you already pay for, such as SendGrid. There is no bundled per-message markup, because there is nothing to bundle.
What you get in exchange for bringing your own is one delivery vocabulary. SendGrid posts signed JSON webhooks; a plain SMTP mailbox posts nothing at all and its bounces come back as e-mail. Both are normalised into the same events — queued, sent, delivered, deferred, open, click, soft bounce, hard bounce, complaint, unsubscribe — so switching provider changes nothing you can see.
- 1Your mailboxTransactional. Its own rate cap, because hammering a shared mailbox gets the account suspended.
- 2Your providerBulk. Separate domain, separate DKIM — a bad campaign must not reach your sign-in mail.
- 3BouncesSMTP has no webhook, so the return path is a real mailbox that reads and classifies the DSN.
SPF, DKIM and DMARC checkedDrift reported
Four channels
One funnel can reach somebody four different ways.
The reminder goes by SMS because people read those within minutes. The story goes by e-mail because it has room. The customer worth a stamp gets something printed. Which channel a message uses is a property of the node, not of the tool you had to open.
Rendered from a document to tables and inlined CSS, with a plain-text alternative generated and dark-mode-safe colours. One-click unsubscribe as RFC 8058 requires. Warned at publish if it will clip in Gmail.
SMS
For the message that has to be read today. GSM-7 and UCS-2 segments counted before send, because one emoji turns a one-segment message into three. STOP is honoured inside the service, not left to you.
Push
Web Push with VAPID and RFC 8291 encryption, plus iOS and Android. A 410 from the provider prunes the device row, because tokens that are never pruned quietly poison your delivery rate.
Printed letters
The same document, rendered through print CSS to a PDF, for the customers a stamp is worth spending on. It is a node in the funnel like any other, with the same waits and the same goal check in front of it.
For the people who ask harder questions
The API is the product.
The screens are one client of it.
There is no private endpoint — not even "just for the interface". A screen that needs something the public API cannot give it is a screen telling you the API is wrong, and that rule is what makes an agent, a dashboard tile and a script all first-class citizens rather than afterthoughts.
Documented and exercised
Contacts, consent, lists, segments, tags, creatives, funnels, versions, runs, campaigns, imports, webhooks and reports. Cursor pagination, idempotency keys, one error envelope.
Learn moreAn MCP server, with a dry run
simulate_funnel walks a contact through a funnel and returns the path and the messages it would send. Every send-capable tool is gated behind an explicit confirmation and your quota.
Documents, not templates
A creative is a JSON block tree with a published schema, rendering to six targets. Merge variables are checked at publish: a typo is an error you see while editing, never "Hi ," at send.
Learn moreUse cases
Four shapes of business this is built for.
The mechanism is the same in all four. What changes is what counts as a trigger and what counts as the goal.
E-commerce
Welcome, abandoned basket, post-purchase, review request, replenishment on a date field, and a win-back for the ones who have gone quiet.
Service businesses
A salon, a clinic, a studio, a workshop. Confirm, remind, follow up on a no-show, ask for the review, and notice the regular who has stopped coming.
SaaS & product teams
Your product already knows who activated and who stalled. Send it as an event, branch on it, and stop the moment they do the thing.
Agencies
One funnel, twenty projects, twenty sets of sending credentials — and a report per client that does not need a phone call to explain it.
Part of one ecosystem,
and useful entirely on its own.
ClickSomo is the marketing arm of the castomo family. Sending, SMS and push are castomAPI services every product in the family can call; sign-in is the one castomo account you use for dash-b and the rest; campaign performance, funnel drop-off and list growth arrive in dash-b as tiles you drop onto any board.
None of which you need. Plenty of accounts here are one list, one mailbox and three funnels, connected to nothing else at all.
The honest comparison: if all you need is "send this newsletter to these people on Thursday", every tool in this category does that, including this one, and moving is not worth your afternoon. The reason to be here is the second half — the consent you have to be able to prove, the sequence that must stop when somebody buys, the report that has to survive being questioned, and the agent or script you want to run the whole thing from. Where ClickSomo sits
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