# What merge tags and custom variables can I use in my emails?

> Built-in tags are email, firstName, lastName, companyName and the sender tags. Any other column you import becomes a custom variable.

Source: https://warmerly.com/docs/help/merge-tags

A merge tag is a placeholder in double curly braces, such as `{{firstName}}`, that Warmerly replaces with each lead's own value when the email sends. Use them in the subject and the body. The built-in tags are listed below, and any extra column on your leads (a custom variable) works as a tag too.

The important rule: **a tag Warmerly does not recognise is replaced with nothing.** There is no error at send time, so a typo ships as an email with a hole in it.

## Built-in tags

| Tag | What it becomes |
| --- | --- |
| `{{email}}` | The lead's email address |
| `{{firstName}}` | The lead's first name |
| `{{lastName}}` | The lead's last name |
| `{{companyName}}` | The lead's company |
| `{{senderFirstName}}` | First name set on the sending mailbox |
| `{{senderLastName}}` | Last name set on the sending mailbox |
| `{{senderName}}` | Full sender name (first and last name, else the mailbox display name, else its address) |
| `{{senderEmail}}` | The sending mailbox's address |
| `{{ai_opener}}` | A personalised opening line written for each lead. See [AI personalisation](https://warmerly.com/docs/help/ai-opener) |

Notes:

- Tags are **case sensitive**. `{{firstname}}` is not `{{firstName}}` and will send blank.
- Spaces inside the braces are fine: `{{ firstName }}` works.
- Tag names use only letters, numbers and underscores.
- The sender tags come from the mailbox each email actually leaves from. If the mailbox has no sender name set, `{{senderFirstName}}` is blank, so set the name on the mailbox first.
- Use `{{senderFirstName}}` for your sign-off instead of typing a name. See [How do I write an email sequence?](https://warmerly.com/docs/help/email-sequences).

## Custom variables

Any extra column on a lead is a custom variable, and its column name is the tag. If your CSV has a column called `mail_setup`, write `{{mail_setup}}`.

When you import a file on the **Audience** tab (**Import leads**), columns that are not mapped to email, name or company become custom fields. A header that is not valid tag syntax is cleaned up: characters other than letters, numbers and underscores become underscores, so a column named "Job Title" becomes `{{Job_Title}}`. The Insert variable menu shows the exact names your campaign has.

If a custom variable has the same name as a built-in tag, the custom value wins.

See [How do I import leads from a CSV?](https://warmerly.com/docs/help/import-leads-csv) for the import steps.

## What the editor flags

On the **Sequence** tab, a tag that is neither built in nor a custom variable on your leads gets a warning border and a line under the field: "`{{domain}}` isn't a variable, it will send as blank text."

Things worth knowing about that warning:

- The editor knows your real custom variables, so a working custom tag is not called a typo. If the list of variables has not loaded, the editor says nothing rather than accuse a tag on no evidence.
- **Insert variable** shows how many of your leads actually have a value for each tag, plus a sample. A tag that only 8 of 200 leads have is not a typo, but it is not one to build a sentence around either.
- A tag that exists on only some leads is not flagged, because that is normal for a list you have partly enriched. Those leads get a blank in that spot.

## The launch check

Starting a campaign runs a check that blocks the launch if a step uses a tag that exists on none of your leads. The check appears in **Launch readiness** on the Overview tab with a **Fix in Sequence** link. It does not catch a tag that exists on some leads only.

## Check a specific lead before you send

Use **Preview** on an email step and pick the lead you are worried about (no first name, an unusual company). The preview lists tags that resolved to blank for that lead. On the **Audience** tab, open a lead's conversation to see the variables that lead carries and the upcoming emails written out for them.

## Common problems

**My email says "Hi ," with no name.** The lead has no first name. Fix the value on the lead, or reword the greeting. Preview shows this before you launch.

**A tag works in preview for one lead and not another.** The second lead has no value for it. Check the coverage numbers under **Insert variable**.

**My CSV column does not show up as a tag.** Only columns imported as custom fields become tags, and the name is the cleaned-up version of the header. Look under **Insert variable** for the exact spelling.

## Related

- [How do I write an email sequence?](https://warmerly.com/docs/help/email-sequences)
- [AI personalisation with the AI opener](https://warmerly.com/docs/help/ai-opener)
- [Campaign audience and the lead conversation view](https://warmerly.com/docs/help/campaign-audience)

## More in Campaigns & inbox

- [How do I write an email sequence for a campaign?](https://warmerly.com/docs/help/email-sequences): Open a campaign's Sequence tab, pick a template or start blank, add Email and Wait steps, and edit. A…
- [How do I personalise every email with the AI opener?](https://warmerly.com/docs/help/ai-opener): Put the aiopener tag at the top of your email. Warmerly writes a one or two sentence opening line per lead…
- [How do I A/B test a subject line or email in a campaign?](https://warmerly.com/docs/help/ab-test-email-copy): On an email step, click Test another version of this email. Warmerly sends up to four versions in rotation…
