clickSomo
Open ClickSomo

Agency dem

One funnel, twenty clients, twenty reputations wey dey separate

Three-person agency wey dey run marketing for twenty local businesses get di same problem twenty times, and di same solution twenty times — except say each client own list, sending identity, domain and consent record must stay completely dia own. Di interesting work dey inside dat "except".

One project per client, and di boundary na di database work

Everytin here dey scoped to one tenant and one project together — contacts, funnels, creatives, campaigns, sending identities, reports. Di database row-level security na im dey enforce di scoping, no be clause wey person go remember to add to query. Forgotten project no go see anytin, no be di first project rows.

Dat mean say one client list no fit leak enter another client campaign by mistake, and e mean say one report dey about one client because e structurally no fit be about two.

Each client dey send as demsef

Sending identity belong to one project: dia domain, dia DKIM keys, dia mailbox or dia provider account, dia rate cap. One client bad campaign no fit damage another client deliverability, because dem never share anytin wey person fit damage.

E still settle one awkward conversation early. Di client own dia sending, dia list and dia consent record. When dem comot — and some go comot — dem go comot with all of am, and you no build hostage situation wey you go need explain.

Twenti projekts, wan ejensiScoping
  • 1ContactsPer project. Di database dey enforce am, no be query wey you go remember.
  • 2SendingDia domain, dia DKIM, dia mailbox or provider, dia rate cap.
  • 3ConsentDia ledger. E go travel with dem, evidence join, if dem comot.
  • 4Reports demPer project by construction. No way to accidentally aggregate two clients.
  • iWetin you keepDi funnel definitions and di way you dey work. Dat na your product, and na di part wey worth reusing.

No shared reputationNo shared list

Reuse am without copy-paste

Build di funnel once. Deploy am as many times as you get clients.

Funnel na graph, and graph na JSON with published schema. Dat mean say di tin wey you dey reuse na document, no be screenshot of screen wey you go rebuild by hand inside each account.

Your house funnels

Welcome, abandoned basket, no-show, interval, win-back. Person wey sabi pass write am once, keep am inside your own repository, and create am inside client project with one API call.

Check am di same way everywhere

Di validator dey run on your funnel inside every project wey e land. Graph wey go loop without wait, or send without subject, dem go refuse am there just like dem go refuse am here.

Simulate am before e run

Dry-run one real contact from dat client list through di funnel and read back wetin e go send dem. Do am once per deployment and di "e go out wrong" conversation no go dey happen again.

Improve am for one place

When you learn sometin — di second reminder dey work better at ten for morning — you change your definition and roll am forward. Di clients wey dey run di old version go finish with di old version; nobody wey dey in flight go get disturbed.

Creatives dem sef

A creative na document wey get merge variables. Di same welcome e-mail, render with each client brand, colour and logo — wey dem pick from di client own website on di first run.

Or make agent do am

Point assistant go di MCP server, scope am to one project, and make am draft and check di funnel for dat client. Everything wey reach real person still need explicit confirmation and e stay inside di quota.

Eleven clients, eleven senders, one place to check am.

Di monthly report problem

Most of agency reporting wahala no be to produce numbers. Na to produce numbers wey go survive when client ask follow-up question, and to produce dem without three hours of screenshotting on di first of di month.

Two tins help here. Reports na API routes, so script fit assemble di monthly pack and export am as PDF instead of person and spreadsheet. And di numbers dey honest about bots: raw and filtered both dey available, with label, so when client ask why open rate drop after dem move, you fit explain am in one sentence instead of defend am in four.

Di same tiles land inside dash-b — campaign performance, funnel drop-off, list growth, deliverability by domain — so client wey want live board fit get one, on dia own account, with dia own credentials and no key of yours inside di page.

Di first of di monthScripted
  • 1For each projectOne token, one project scope, di same script.
  • 2Pull amHow campaign dey perform, where funnel dey drop, how list dey grow, deliverability by domain.
  • 3Show amDia creative document as report page, then to PDF.
  • 4Send amOr drop am into dia board. Whichever one di client dey actually read.
  • iWetin changeThree hours of screenshots don turn scheduled job, because di reports na routes from di start.

Raw and filtered, both get label

Di conversation about consent, wey dem do early

Every agency don meet di client wey come with spreadsheet of four thousand addresses and vague answer about where dem come from. Here e no be argument you must win; na field.

Di import land as legitimate interest at best, never as consent, and di basis mix dey show before any campaign go out. If dem no fit send to a list, e go talk am at di point of import instead of at di point of complaint. Dat one turn uncomfortable judgement call into shared reading of di same screen — and dat one na much better position for you when di client dey insist.

Worth saying am out loud to di client: di reputation wey bad list dey risk na dia own, on dia own domain, because each project send as itself. Dat one na stronger argument pass any regulation, and na di one wey dey land.