clickSomo
Open ClickSomo

Creative

Document, no be template

Wetin you write na block tree with published schema. Wetin go comot na dat document wey dem render for target — e-mail, page, form, SMS, push or print. Di two dey separate on purpose, because editor fit change but rendering no fit, and to pretend say no be so na how marketing tool go end up with six versions of di same message wey no gree agree again.

Six targets, one source

Each target get constraints wey no be matter of taste, and di renderer sabi dem so you no go need to sabi.

E-mail mean tables and inlined CSS, no flex and no grid because Outlook still dey use Word to lay out mail, plain-text alternative wey dem generate for you, colours wey go survive dark-mode client wey dey invert tins, and size guard around 102 KB wey Gmail go start to clip.

Page mean ordinary modern responsive HTML, wey dem publish under slug, for your own domain if you want one. Form na page plus field bindings, validation, honeypot and rate limit — and na di one road enter your contacts wey fit produce consent basis well-well.

SMS dey count segments as you dey type. Push na title, body, icon, actions and deep link. Letter na print CSS wey dem render to PDF, address am and post am.

Di document sef dem store am as setup with published schema, inside di ecosystem document service, no be hide am inside private table. Wetin dat one mean be say di day better editor come, e go edit di same documents and notin upstream go change.

One creativeRender targets
  • 1imeelTables, CSS wey dem put inside, text alternative, e safe for dark-mode, ~102 KB guard.
  • 2pejResponsive HTML wey dey under one slug, for your domain.
  • 3fomPej plus bindings, validation, honeypot, rate limit.
  • 4smsText wey get live GSM-7 / UCS-2 segment counter.
  • 5pushTaitul, bodi, aikon, akshons, dip link.
  • 6letaPrint CSS → PDF.
  • iDi join-pointDem fit change di editor; di targets no dey change. Na why di document get one published schema.

Rendered output wey dem cache per target

Merge variables

If variable no known, e go fail at publish, e no go quietly fail at send

Di default behaviour of every templating language for missing key na to render nothing. For mail, dat one mean say "Hi ," go reach forty thousand people, and nobody go know until di replies start to come. So dem go validate di document against di variable vocabulary before e fit publish at all.

Wetin you fit interpolate

Di contact e-mail, name, phone and locale; attrs.*, wey open because di attributes na your own; your organisation name and postal address; di unsubscribe and preferences links; and di message own subject and preheader.

Dem make am list on purpose, no be "anything on di record". Contact row sef carry internal identifiers, and none of dem suppose dey inside message.

Fallback no be missing variable

{{first_name | default:there}} na known variable wey dis particular contact just no get — imported list wey half of di rows no get name. E go render di fallback and dat one dey okay well well.

Wetin dem go refuse na {{frist_name}}: variable wey no exist for anybody. At send time, di two go look di same. At publish time, dem no fit different pass like dis, na why di check dey happen there.

Di same vocabulary dey work across every target, so phrase wey you write for e-mail go render for di SMS and di landing page without rewriting am. And first_name dem dey derive am at render time from di full name instead of to store am — because stored split na wrong split wey dey wait for di person wey im name no follow di assumption.

Write am once. E go arrive dressed for di channel.

Before e go comot

Di checks wey dey happen while you still fit fix things

Di Gmail clip

Above like 102 KB, Gmail go cut di message and hide di rest behind one link wey most people no go ever press — including, for di very bottom, your unsubscribe. Di renderer go measure am and warn you at publish.

Image weight

Four-megabyte hero photograph go burst di size budget and e go render bad for phone. Dem dey resize and convert images when you upload, and dat one na deliverability matter no be just nice-nice thing.

Inbox preview

Dem go render di message and snap am at desktop and mobile widths, so di list view go show how di thing really look instead of im name. No paid preview service inside.

Real test send

Send am give yourself, through di same renderer and di same sending identity wey real recipient go get. Preview wey take different code path no prove anything about di message wey go ship.

HTML wey dem paste don sanitise

Content wey dem paste from elsewhere go pass through sanitiser before dem store am, because marketing e-mail no be di place to find out wetin dey inside person clipboard.

Markdown, if you like am

Write am in Markdown and make dem render am. E reliable pass to dey ask model for e-mail HTML, and na wetin make agent wey dey write message become workable idea no be just demo.

Dey stat from yor own websait

Paste one URL when you first run am. ClickSomo go read di page for im logo, im icons, im manifest and im measured colours — no be colours wey person just guess — and e go build first e-mail wey already look like your own. E sef go detect di platform, and dat one usually enough to suggest funnel wey worth am: shop go get abandoned basket, publisher go get newsletter welcome.

Every time we fetch any URL wey you give us, e go pass through one guarded fetcher: na only HTTP and HTTPS, literal address dem check am direct, every DNS answer must be public, and every redirect hop dem go re-validate am. To fetch any URL on top customer behalf na one of the easiest way to open hole inside your own network, and e no be something you suppose write two times.

The honest part: first template wey dem generate from your website na good start, no be finished design. E go get the logo, the colours and the typeface small small correct so that your first send no go look like demo — and then you go edit am, wey na far better work than to dey stare empty canvas.