Email Branding
Every email your workspace sends can be branded consistently — logo, header, footer, and unsubscribe copy — without having to design each send individually. When you want more control, upload your own HTML template with slot markers and the platform injects the branding pieces in the right places. Reach the settings at SettingsEmail Branding. Admin or Owner role required.
Two modes: envelope wrap vs. custom template
There are two ways the platform assembles the final email body:
- Envelope wrap (default). The platform stacks your branding around the AI body in a fixed order:
logo → header → AI body → footer → unsubscribe. Zero setup — configure the Logo, Header, Footer, and Unsubscribe cards and every email comes out branded. - Custom HTML template. Upload your own designed HTML template with
<!--ABP:*-->slot markers. The template becomes the outer shell; branding pieces get injected into the markers wherever you place them. Use this when you have a specific design (Stripo / Beefree / Figma-to-HTML export, or hand-authored) that the envelope wrap can't match.
Slot markers
Slot markers are HTML comments the platform recognizes and substitutes at send time. Only <!--ABP:AI_BODY-->is required — every other marker is optional. Delete any you don't need, or move them to a different location; the platform substitutes each marker wherever it appears.
| Marker | Required? | What gets injected |
|---|---|---|
<!--ABP:AI_BODY--> | Required | AI-adapted body copy for the current channel. |
<!--ABP:LOGO--> | Optional | Workspace logo as a centered <img> block. |
<!--ABP:HEADER--> | Optional | Workspace header (text or image, per your Header card). |
<!--ABP:FOOTER--> | Optional | Workspace footer. The [UNSUBSCRIBE] marker inside your footer text is still honored. |
<!--ABP:HERO_IMAGE--> | Optional | First image from the promotion's source media. |
<!--ABP:UNSUBSCRIBE--> | Optional | Per-connector unsubscribe link. If absent AND your Unsubscribe toggle is on, the CRM's default footer takes over. |
Why HTML comments (not {{tokens}})
Email service providers use varied placeholder syntaxes at send time — Brevo {{ unsubscribe }}, Mailchimp *|UNSUB|*, EmailOctopus {{UnsubscribeUrl}}, MailerSend {$unsubscribe}, SendPulse {{unsubscribe_url}}, Mailjet [[UNSUB_LINK_EN]], and more. HTML comments never collide with any of these, are invisible in browser preview, and require no template engine to parse.
Uploading a template
Open the Custom HTML template card
Pick an intake mode
.html or .htm file, max 500 KB); Paste HTML (paste raw HTML into a textarea); Use starter (pick from shipped starter templates — the Basic starter is a hand-crafted reference showing all seven markers in a clean table-based layout).Wait for validation
<script>, <iframe>, on* handlers, and dangerous URL schemes stripped) and validates that <!--ABP:AI_BODY--> is present. Missing the required marker returns a 422 with the fix instruction.Review the marker checklist + preview
AI_BODY = template is unusable.Toggle Use custom template
Design constraints for cross-client rendering
- Inline all styles. Gmail's web client strips
<style>blocks entirely. Usestyle="..."attributes on individual elements. - Use tables for layout. Flexbox and CSS grid render inconsistently across email clients. Nested
<table>with<tr>/<td>is the standard. - Max width 600px. Outlook and Apple Mail render 600px cleanly; wider layouts cause horizontal scrolling on some clients.
- Cross-client attrs.
bgcolor,align,valign,cellpadding,cellspacing,border,colspan,rowspanare preserved by the template sanitizer and needed for Outlook. - 500 KB size cap. Templates larger than this are rejected at upload.
Interaction with unsubscribe placement
The Unsubscribe card's Custom placement inside my footer toggle continues to work with custom templates: put [UNSUBSCRIBE] anywhere in your footer text (the workspace-level Footer field, not the HTML template) and it gets swapped for the per-connector placeholder inside the <!--ABP:FOOTER--> slot. Alternatively, place <!--ABP:UNSUBSCRIBE--> anywhere in the template for a standalone unsubscribe line.
<!--ABP:UNSUBSCRIBE--> slot is silently left empty and the CRM footer handles it. See the per-connector matrix under the Unsubscribe card.Per-promotion overrides
You can override any branding field — including the custom template and toggle — on a per-promotion basis from the composer's branding panel. Useful for one-off campaigns that need a different template than your workspace default. The override merge semantics: any field set on the override wins over the workspace default; unset fields inherit; setting a field to null clears it (e.g., to force envelope-wrap on a single send even though the workspace default is a custom template).