Designing and personalizing email
Your team owns the message across every sending path. The shared composer lets you build a branded email for a broadcast, template or workflow step, select the customer context, and inspect recipient previews.
Four content modes
Email content comes in two formats, MJML or HTML, and each one has a visual editor (rich) and a code editor (raw). That gives four modes. You pick one when you create the email, and in the editor the only later change is one-way: a rich editor can switch to raw code, and MJML rich can switch to HTML rich. Those switches are permanent, so getting a visual editor back means creating a new email. The MJML rich to HTML rich switch also drops your preview text and every link you set on an image, because the simpler format has nowhere to keep them.
| Mode | Format | Editor | You work with |
|---|---|---|---|
| MJML rich | MJML | rich | sections, columns, and blocks: text, button, image, divider, spacer, YouTube video, X post, link preview, liquid |
| HTML rich | HTML | rich | a flat block list: paragraph, heading, list, button, image, divider, spacer, YouTube video, X post, link preview, adaptyle, liquid |
| MJML raw | MJML | raw | raw MJML markup |
| HTML raw | HTML | raw | raw HTML markup |
MJML turns into HTML that adapts to phone screens, so pick MJML for multi-column layouts and HTML for simple, flat messages. All four modes support Liquid and Adaptyle, so the choice is about how you like to work, not what the email can do.
The API cannot write email content. It reads a template's content back as raw markup and sends it; the subject and body are authored in the app or by maxinja.
Data and branding
An email lists the information it needs, like the contact and their order. Each entry has a name, such as contact or order, and you use those names when you personalize. maxclicks adds one more for free on every send, branding, so the selected brand kit (colors, fonts, assets, voice) is there without you passing it in. See schemas for how the underlying records are defined.
Two layers of personalization
Rendering first resolves supplied Liquid values. An AI pass runs when the email contains Adaptyle instructions.
Liquid is how you drop in values you already have, plus a little if-this-then-that logic. It applies deterministic rules to the data for that render without a writing-model call. Changing data or time-based expressions can change the result.
Hi {{ contact.firstName | default: "there" }},
{% if order.total > 100 %}Thank you for your order.{% endif %}
Adaptyle writes the passages you mark using the recipient context selected for that email. Any evaluated fields you select are resolved first. Describe the writing job and how to handle missing information, then inspect several recipient samples. Later generations can vary.
You write these instructions straight into the content. Give an instruction on its own to have maxinja write something new. To have it rewrite text you already have, put the instruction first, then :::, then the text.
<<>>
<< The rendering model runs when Adaptyle instructions remain after Liquid resolves for that recipient. No remaining instructions means no generation call, while sending and application work remain separate. Corrections and campaign reviews can add model usage. Use AI where customer context changes the message. Keep essential offer amounts, dates and links in fixed content or Liquid. See billing for how usage is priced.
Know what a preview proves
A preview shows one sample at one moment. It helps you catch missing values, unsuitable wording and broken layout. A test email checks that rendered sample in an inbox. Neither establishes the production audience, consent, sufficient credits or campaign quality release.
The editor’s Data, Personalize and Checks tabs make those inputs and issues visible. Compare several samples and read the estimate before sending to an audience.
Next: send your first email, or read the editor reference for every block, mode, and Adaptyle detail.