Skip to content

Core concepts

Modular Mail uses a small set of words consistently across the app and these docs. Learn these and the rest follows.

Workspace
├── Templates set up by developers
│ ├── Header the top of every email
│ ├── Modules the blocks a campaign is built from
│ ├── Footer the bottom of every email
│ └── Versions published, never change
└── Campaigns built by marketers
├── Name, subject, preheader
└── Module instances modules added from one template version, filled in

A workspace is your team’s space. Templates, campaigns, images, integrations and people all belong to one workspace. One person can belong to several workspaces and switch between them, which suits agencies with a workspace per client.

Everyone in a workspace has a role: Owner, Admin, Developer, Marketer or Viewer. Roles decide what each person can do. See Team and roles.

A template is your email design, set up so a team can build from it. It has three kinds of part:

  • Header: everything from <!doctype html> down to where the first module goes, including your <head>, styles and logo.
  • Modules: reusable blocks such as a hero, a text section, a product card or a banner. A template has a library of them.
  • Footer: everything after the last module, down to </html>.

An email is always the header, then the modules a marketer picked in the order they chose, then the footer, joined as they are.

A marker is the data-mm attribute a developer puts on an element they want to be editable:

<h1 data-mm="headline">Welcome to our summer sale</h1>

Everything without a marker is locked. Markers are removed when the email is built, so they never reach the inbox. Read more in Markers and fields.

A field is one control in a part’s form: a box for a headline, an image picker, a colour, a set of layout options. Each field fills or changes one or more markers. There are eight field types: text, rich text, image, link, colour, choice, toggle and repeater. See the field types reference.

Developers can arrange fields into named groups so long forms stay tidy.

A developer edits a template’s draft. Nothing they change reaches marketers until they publish it. Each publish creates a numbered version, such as 1, 1.1 or 2.0. Published versions never change.

A campaign is one email built from a template: a name, a subject line, a preheader and a list of modules with their content. When you create a campaign, it’s pinned to the template’s latest published version. Later template versions don’t change it, so an email that’s been approved stays exactly as approved.

Each module a marketer adds is a module instance. You can add the same module several times, and each instance has its own content.

Every campaign has a status: Draft, In review, Approved or Completed. You set it by hand; nothing changes it automatically.

In comment mode, anyone on the team can start a conversation on the whole email or on one part of it. Review requests ask particular people to look at a campaign and approve it. See Review and approval.

A problem is something to fix:

  • In a template, an error would break the email or the form and stops you publishing. A warning is unfinished work, such as a marker with no field yet, and doesn’t.
  • In a campaign, a problem is a required field left empty, text over its character limit or a value that can’t be used, such as an unsafe link. Problems are shown beside the field and in the export dialog, but they never stop you exporting.

Exporting compiles a campaign into one complete HTML file, with the subject in the <title> and the preheader hidden just inside <body>. Copy it or download it, then import it into your ESP. See Exporting HTML.