Your brand, locked into reusable modules
The Email Design System is where designers and developers define your brand once — layouts, modules, rules, and guardrails. Everyone else builds on-brand emails on top of it, without ever breaking anything.
Designers get a system. Developers get real code. Editors get creative freedom within guardrails.
This is not a template gallery
Traditional email templates are rigid — one fixed layout that slowly drifts off-brand as people copy, paste, and tweak. A design system is modular: a library of brand-locked modules that can be mixed and matched. Designers set the rules once; editors create freely within those guardrails.
Traditional templates
- •Fixed layouts — every email looks the same
- •Copy-paste-tweak leads to brand drift over time
- •Every change goes through a designer bottleneck
- •Updating means fixing every email by hand
Email Design System
- •Modular building blocks, endless combinations
- •Brand elements locked, content zones editable
- •Whole team builds independently, within guardrails
- •Update a module once — it updates everywhere
Base layouts with named content zones
Every email starts from a base layout you define. Layouts carry the non-negotiables — header, footer, spacing, background — and expose named content zones in between. Each zone controls exactly which modules can be dropped where.
- Zones define what fits whereA hero zone can accept hero modules only. A footer zone stays untouchable. No more product grids in the header.
- Structure without rigidityEditors rearrange, add, and remove modules within each zone — the skeleton of the email always stays correct.
- One layout, many email typesNewsletters, campaigns, transactional — build separate base layouts for each, all drawing from the same module library.
A library of reusable modules
Headers, heroes, product grids, CTAs — build each module once and use it in every email. Each module exposes exactly the settings you decide, with typed inputs so editors can only enter valid content.
Typed inputs, valid content
Every module setting has a type. Editors fill in fields — they never touch the underlying design or code. Colors come from brand palettes, selects offer only approved options, and repeatable groups keep lists structured.
These modules power the visual editor — editors drag them into place and fill in the blanks.
Freedom within guardrails
Guardrails are what make a design system safe to hand to the whole team. Every input type carries its own validation options — set the rules per field, and Better Email enforces them while people work, not after the email has shipped.
Mandatory fields — an email can’t ship with an empty headline or a missing link.
Must-change defaults — placeholder text has to be replaced — no “Lorem ipsum” reaching real inboxes.
Pattern rules — regex on text and URL fields — tracking parameters, naming conventions, link formats.
Character limits — min and max lengths per field — emoji and special characters count correctly.
Value ranges — numbers respect minimum, maximum, and step — typed in or dragged on a slider.
Image dimension rules — min and max pixel dimensions enforced on upload, with retina-ready sizing.
Safe links only — require https, and decide per field whether mailto:, tel:, and sms: are allowed.
Required alt text — accessibility enforced at the source — per image field, not patched later.
Palette-locked colors — named brand swatches only, unless you explicitly allow free color input.
Repeatable limits — min and max items per group — a product grid always has two to six products.
Conditional visibility — show a field only when relevant, driven by a Liquid expression like a toggle being on.
Custom error messages — every rule explains itself in your words — “Add the campaign UTM tag”, not “regex failed”.
Designers get a system, developers get real code
Under the hood, every module is HTML with full Liquid templating support. Build programmable modules — brand-switch dropdowns, conditional layouts, loops over repeatable content — in a dedicated code editor made for email development.
{% if settings.brand == "nordic" %}
{% assign accent = "#0B3D2E" %}
{% else %}
{% assign accent = "#FFCC15" %}
{% endif %}
<td bgcolor="{{ accent }}">
<h1>{{ settings.headline }}</h1>
{% for item in settings.products %}
<img src="{{ item.image }}" />
{% endfor %}
</td>Full Liquid templating
Conditionals, loops, variables, filters — build programmable modules like brand-switch dropdowns and conditional layouts that adapt to editor input.
Liquid linter built in
Catch syntax errors and undefined variables as you type, before an editor ever opens the module.
Assets panel
Upload and organize the images and files your modules depend on, right next to the code.
Co-author with Betty
Betty, our AI assistant, can write and refine module code alongside you. Learn more about Betty.
Define it once, use it everywhere
A design system only stays maintainable if nothing is repeated. Better Email gives you two tools for that: a template-level Global Script for brand tokens, and shared inputs that every module can reference.
Brand tokens in the Global Script
A Liquid script that runs once before every email renders. Set your brand values with
set_global— every module readsglobal.brand_primary. A rebrand is a one-line edit.It goes beyond tokens: drive a brand or market switcher that swaps colors, logos, and compliance blocks; derive accent colors from a primary; or apply the right branding automatically based on the connected ESP business unit.
Shared inputs across modules
Build an input once — say, a CTA color picker with your named brand palette — and reference it from any module. Each use can adjust the hint, placeholder, or default; the definition and validation stay in one place.
Change once, updates everywhere
When the brand changes, you change it in one place. No hunting through forty modules for hardcoded hex values — and no drift between them.
{% set_global brand_primary = "#0F62FE" %} {% set_global brand_name = "Acme Living" %}
Defined once — palette, naming, and validation live here.
Referenced by
One edit updates every module that references it.
Spring launch update
Named version · 2 hours ago
Auto-save
3 hours ago
Auto-save
5 hours ago
Dark mode fixes
Named version · yesterday
Iterate on the system without fear
A design system is never done. Better Email keeps a full revision history of your work, so you can evolve modules and layouts confidently — and roll back when an experiment does not pan out.
- Auto-saves as you workEvery change is captured automatically. Nothing is ever lost.
- Named versionsGive meaningful milestones a name, so the history reads like a changelog.
- Publish deliberatelyWork in progress stays private. Editors only see a module change when you publish it.
- Restore any revisionRoll back to any previous state in one click — auto-save or named version.
One design system, every brand
Running multiple brands or serving multiple clients? Share your Email Design System across organizations. Sister brands and teams get read-only access — they build emails on your system, but only the owning organization can change it.
Need a starting point for a new brand instead? Clone the design system and adapt it independently.
- Share read-only with sister brands and teams
- The owning organization stays in control of every module
- Clone a design system as the starting point for a new brand
Master Brand
Design system owner
Nordics Team
Builds on the shared system
DACH Team
Builds on the shared system
Clone for a new brand
Copy and adapt independently
The foundation for everything else
The Email Design System is where it starts. Here is where it goes.
Visual Editor
Your modules power the visual editor. Editors drag them into place, fill in the fields, and ship on-brand emails.
Betty AI
Betty builds emails with your design system — and co-authors module code with your developers.
All features
Collaboration, feedback and approvals, translation, ESP integrations, and everything else in Better Email.
Ready to build your Email Design System?
Define your brand once — and let your whole team create better emails on top of it.
Request a demo