Foundation

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
Structure

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 where
    A hero zone can accept hero modules only. A footer zone stays untouchable. No more product grids in the header.
  • Structure without rigidity
    Editors rearrange, add, and remove modules within each zone — the skeleton of the email always stays correct.
  • One layout, many email types
    Newsletters, campaigns, transactional — build separate base layouts for each, all drawing from the same module library.
Base Layout: Campaign3 zones
Zone: headerLocked
Zone: mainHero, Text, Product modules allowed
+ Drop module here
Zone: footerLocked
Building blocks

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.

Module: Hero Banner6 settings
text · required
Summer Sale starts now
rich text
color · brand palette
toggle
repeatable group
+ Add item

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.

TextHeadlines, button labels
Rich textBody copy with formatting
ColorRestricted to brand palettes
ImageWith cropping and scaling
NumberNumeric values — as a field or a slider
SelectPredefined options only
ToggleBoolean values — e.g. show or hide elements
Repeatable groupProduct lists, link rows

These modules power the visual editor — editors drag them into place and fill in the blanks.

Guardrails

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 fieldsan email can’t ship with an empty headline or a missing link.

Must-change defaultsplaceholder text has to be replaced — no “Lorem ipsum” reaching real inboxes.

Pattern rulesregex on text and URL fields — tracking parameters, naming conventions, link formats.

Character limitsmin and max lengths per field — emoji and special characters count correctly.

Value rangesnumbers respect minimum, maximum, and step — typed in or dragged on a slider.

Image dimension rulesmin and max pixel dimensions enforced on upload, with retina-ready sizing.

Safe links onlyrequire https, and decide per field whether mailto:, tel:, and sms: are allowed.

Required alt textaccessibility enforced at the source — per image field, not patched later.

Palette-locked colorsnamed brand swatches only, unless you explicitly allow free color input.

Repeatable limitsmin and max items per group — a product grid always has two to six products.

Conditional visibilityshow a field only when relevant, driven by a Liquid expression like a toggle being on.

Custom error messagesevery rule explains itself in your words — “Add the campaign UTM tag”, not “regex failed”.

For developers

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.

hero-banner.liquidsettingsassets
{% 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>
Liquid: no problems foundLn 8, Col 24

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.

DRY by design

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 reads global.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.

Global ScriptLiquid · runs for every email
{% set_global brand_primary = "#0F62FE" %}
{% set_global brand_name = "Acme Living" %}
Shared input: CTA colorColor Picker
global.brand_primary

Defined once — palette, naming, and validation live here.

Referenced by

Hero BannerCTA ButtonProduct GridFooter

One edit updates every module that references it.

Revision historyHero Banner

Spring launch update

Named version · 2 hours ago

Published

Auto-save

3 hours ago

Auto-save

5 hours ago

Dark mode fixes

Named version · yesterday

Version control

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 work
    Every change is captured automatically. Nothing is ever lost.
  • Named versions
    Give meaningful milestones a name, so the history reads like a changelog.
  • Publish deliberately
    Work in progress stays private. Editors only see a module change when you publish it.
  • Restore any revision
    Roll back to any previous state in one click — auto-save or named version.
Scale

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
Sharing
MB

Master Brand

Design system owner

Owner
NO

Nordics Team

Builds on the shared system

Read-only
DE

DACH Team

Builds on the shared system

Read-only

Clone for a new brand

Copy and adapt independently

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