Skip to content
Back to guides
editor9/14/2026

Personalizing a Campaign Email Without Writing a Template Engine

The merge tags Editor's campaign tool supports, and how to use them so a single email template reads like it was written to each recipient.

editoremail-marketingpersonalization

A campaign email that says "Hi there" reads like exactly what it is: one message sent to everyone. Merge tags — placeholders that get swapped for each recipient's own data before sending — are the basic fix, and it's worth knowing the exact set Editor supports rather than guessing.

The supported tags

Editor's personalization logic (frontend/apps/editor/src/lib/email/personalizer.ts) replaces placeholders like {{name}} and {{firstName}} against a typed contact record that includes email, name, first name, and last name. If your contact data was imported with snake_case field names rather than camelCase — first_name instead of firstName — that's handled too: the personalizer supports both variants, so you don't need to normalize your contact list's field naming before a merge tag will resolve correctly.

Using them in a campaign

Drop the tag directly into your email body wherever you'd want the recipient's own information to appear — a greeting line, a reference to their name later in the copy, anything drawing from the fields the personalizer supports. When the campaign sends, each recipient's copy has the placeholder replaced with their own data pulled from their contact record.

What happens when data is missing

Personalization is only as good as the contact data behind it. A contact record missing a first name will produce whatever the personalizer's fallback behavior is for that tag rather than a name — worth testing with a genuinely incomplete contact record before a send, not just a fully populated test contact, so you know what an actual gap in your list looks like in the final email rather than discovering it after your audience does.

Why this doesn't require building your own logic

The appeal of merge tags over hand-rolling personalization is that you don't need conditional logic, a templating language, or custom code — you write your email once with placeholders in the right spots, and the personalizer handles substitution against your contact list automatically. That's the same basic pattern every established email platform's merge-tag documentation describes, because it's the pattern that scales from ten contacts to ten thousand without changing how you write the email itself.

If you're used to a different platform's tag syntax, the practical thing to confirm is simply the exact tag names Editor supports — {{name}}, {{firstName}}, {{lastName}}, and their snake_case equivalents — rather than assuming your old platform's tag syntax carries over unchanged.