> ## Documentation Index
> Fetch the complete documentation index at: https://www.foxreach.io/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Email templates, variables and spintax

> Build reusable email templates in FoxReach with lead variables, fallbacks for missing data, and spintax, then load them into any campaign sequence step.

By the end of this guide you will have a saved email template with a subject line, lead variables pulled from the Variables menu, a fallback for leads whose data is missing, and spin syntax that rotates the phrasing on every send. You will have loaded that template into a campaign step, and you will know how to start from a ready-made template in the library.

Email templates in FoxReach are emails you write once and reuse in any campaign. Everything below happens on the Templates page or in the Sequences tab of a campaign. If you have not connected an inbox or imported leads yet, start with the [getting started guide](/docs/get-started/overview) and come back.

<Frame caption="Write Email Templates with Variables and Spintax in FoxReach (1 min)">
  <iframe width="100%" style={{ aspectRatio: "16 / 9" }} src="https://www.youtube-nocookie.com/embed/VdnqihH0sxI?rel=0" title="Write Email Templates with Variables and Spintax in FoxReach (1 min)" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowFullScreen referrerPolicy="strict-origin-when-cross-origin" />
</Frame>

## Two kinds of templates

The Templates page holds two types, and the Type choice in the editor decides which one you are making.

**Email.** A subject line plus a body. This is the kind that appears under Load from Template when you build a sequence step. Think first touches, follow-ups, breakups.

**Reply macro.** A body with no subject line: the answers you send over and over when a lead writes back. Macros do not show up in the sequence picker.

The Emails and Reply macros switch at the top of the list shows one type at a time, with a count next to each.

## Step 1: Open the Templates page

Click Templates in the sidebar. Each template is one row: its name, a small HTML tag if it sends as HTML, the subject (or, for a reply macro, its first sentence), and the date you last edited it. Search looks at the name, subject, and body, and the sort button switches between Last edited and Name.

<Frame caption="The FoxReach Templates page with the Emails and Reply macros switch, search, and one row per template showing its name, subject, and edited date">
  <img src="https://mintcdn.com/buildberg/2Uv_Pj094QuHTMUJ/images/guides/email-templates/templates-list.webp?fit=max&auto=format&n=2Uv_Pj094QuHTMUJ&q=85&s=9ae1cc562d0824e8e1dc01885585f9ae" alt="The FoxReach Templates page with the Emails and Reply macros switch, search, and one row per template showing its name, subject, and edited date" width="2880" height="1620" data-path="images/guides/email-templates/templates-list.webp" />
</Frame>

Click a row to preview it. The preview shows the email the way a lead will get it: click Preview as and search for any of your leads by name, email or company (or keep the sample lead, Sara Lin at Acme), and switch between Filled in and With variables. Under the email, Variables lists every variable the template uses, the value it takes for that lead, and its fallback. A variable with no fallback is marked "No fallback, dropped if empty", which is the one to fix before it reaches a lead with missing data.

<Frame caption="The template preview in FoxReach showing the email filled in for a lead, with the Variables list giving each variable's value and fallback">
  <img src="https://mintcdn.com/buildberg/2Uv_Pj094QuHTMUJ/images/guides/email-templates/template-preview.webp?fit=max&auto=format&n=2Uv_Pj094QuHTMUJ&q=85&s=51083e6ca71145190194d876fc076a84" alt="The template preview in FoxReach showing the email filled in for a lead, with the Variables list giving each variable's value and fallback" width="2880" height="1620" data-path="images/guides/email-templates/template-preview.webp" />
</Frame>

Hover a row for quick Duplicate and Edit buttons, or open the three-dot menu for Preview, Edit, Duplicate, and Delete.

Click New template in the top right to start a fresh one. On the Reply macros switch the same button reads New reply macro.

## Step 2: Name it and choose a type

The editor slides in with the cursor already in the title, which reads "Untitled template" until you type. The name is the title of the sheet: it is the label you will see in the sequence picker later, so describe the job, not the content. The video calls this one "Founder intro". You can drag the sheet's left edge to make it wider; it remembers the width.

Below the name, Type is a short list with two choices: Email or Reply macro. Leave it on Email. Choosing Reply macro hides the Subject field, because a reply goes out in an existing thread and keeps that thread's subject.

Name and body are required; the subject is optional. If you save without them, the missing field is marked in red with a line saying what to add. If the save itself fails, your edits stay in the editor and the message has a Try again button.

## Step 3: Write the subject line and insert a variable

The Subject field comes with its own Variables button on the right. Type the fixed part of the subject first, for example "Quick question about ", then click Variables.

<Frame caption="The template editor in FoxReach with the name Founder intro as its title, the Type list, a subject line, the body editor, and the Variables menu open">
  <img src="https://mintcdn.com/buildberg/2Uv_Pj094QuHTMUJ/images/guides/email-templates/template-editor.webp?fit=max&auto=format&n=2Uv_Pj094QuHTMUJ&q=85&s=308a39d89bcbdb7a67a20b22c532d9a7" alt="The template editor in FoxReach with the name Founder intro as its title, the Type list, a subject line, the body editor, and the Variables menu open" width="2880" height="1620" data-path="images/guides/email-templates/template-editor.webp" />
</Frame>

The menu has three groups:

* **Standard Fields**: the columns every lead has.
* **Custom Fields**: any extra columns you mapped when you imported your list. This group only appears once at least one lead in the workspace has a custom field.
* **Account Fields**: values from the inbox that sends the email, such as the signature.

Click `{{company}}` and it is inserted at the cursor, so the subject reads `Quick question about {{company}}`. You can also type variables by hand.

<Tip>
  Keep one variable in the subject at most. "Quick question about Acme" reads like a person. "Acme, Sarah, Head of Growth, question" reads like a mail merge.
</Tip>

## Step 4: Write the body

The Body editor has two modes, Visual and HTML, with a Send as HTML checkbox underneath. Stay in Visual for a normal cold email.

Write it the way the video does. Type "Hi ", open the Variables button above the body, pick `{{firstName}}`, and add a comma. Then a line that shows you did some homework: "Saw that " followed by `{{company}}` and " is hiring SDRs." Then the actual question and a one-line ask.

Anything on the lead record can go in here. The toolbar has the usual formatting (bold, italic, underline, strikethrough, links, lists, quotes, size, and color) and Clear formatting to strip it back. The bottom of the Variables menu explains the two extra pieces of syntax you will use next: `{{firstName|there}}` for defaults and `{Hi|Hey}` for spin syntax.

Leave Send as HTML off unless the formatting earns its place. Off sends plain text; on shows a notice that HTML emails are more likely to land in Promotions or spam, which matters most on a first touch.

## Step 5: Add a fallback and some spin

**Fallbacks.** Not every lead has a first name. If you insert `{{firstName}}` with no fallback and the field is empty, the variable is dropped and the email opens with "Hi ,". The fix is the fallback input at the top of the Variables menu, labelled "If the lead has no value, use". Type "there" in it before you click the variable and FoxReach inserts `{{firstName|there}}` instead. You can also type the pipe by hand inside any existing variable.

**Spin syntax.** Single braces with options separated by pipes, like `{Worth|Open to|Up for} a quick call this week?`, pick one option at random every time the email is sent. Across a few hundred sends, your emails are not word-for-word identical, which is one of the things that separates a person writing from a script running. Use it on phrasing, never on facts.

Spin blocks have rules: at least two options, no empty options, no block nested inside another, and every opening brace needs its closing brace. FoxReach does not check these when you save the template. It checks them when the content lands in a sequence step, so a broken block shows up as an error when you save the step, not now.

## Step 6: Save the template

Click Create template. A "Template created" toast confirms it, the sheet closes, and "Founder intro" appears at the top of the list.

To change it later, hover the row and click the pencil (or Edit template in the preview), edit, and click Save changes. While you have unsaved edits the footer says "Unsaved changes", and closing the sheet asks before throwing them away. Duplicate makes a copy named with "(Copy)" on the end, and its toast has an Edit button that opens the copy straight away, which is the quickest way to write a follow-up that shares the same opening.

Delete asks before it goes ahead. Campaign steps that loaded the template keep their own copy, so deleting it changes nothing already scheduled.

## Step 7: Load it into a campaign step

Open Campaigns, open the campaign, and go to the Sequences tab. If the campaign is running you will see "Pause the campaign to edit sequences" with a Pause button; sequences are locked while a campaign is active.

Click Add Step. The first thing in the new step form is a panel labelled Load from Template with a dropdown that reads "Choose a template...". Each option shows the template name and its subject in brackets. Pick "Founder intro".

<Frame caption="A FoxReach campaign sequence step with the Load from Template dropdown open listing the workspace's email templates">
  <img src="https://mintcdn.com/buildberg/K1dRKurZq-2Gv_SQ/images/guides/email-templates/sequence-load-template.webp?fit=max&auto=format&n=K1dRKurZq-2Gv_SQ&q=85&s=ac29b93d67d9955ffd2ee5ae34d82466" alt="A FoxReach campaign sequence step with the Load from Template dropdown open listing the workspace's email templates" width="2880" height="1620" data-path="images/guides/email-templates/sequence-load-template.webp" />
</Frame>

<Frame caption="Close-up of the Load from Template section in the step editor">
  <img src="https://mintcdn.com/buildberg/K1dRKurZq-2Gv_SQ/images/guides/email-templates/sequence-load-template-zoom.webp?fit=max&auto=format&n=K1dRKurZq-2Gv_SQ&q=85&s=77819c2e7b0731be834c6939ce11a17d" alt="Close-up of the Load from Template section in the step editor" width="2880" height="693" data-path="images/guides/email-templates/sequence-load-template-zoom.webp" />
</Frame>

The subject, body, and Send as HTML setting are copied into the step. The panel warns "Replaces current subject and body", which is exactly what it does, so load the template before you start editing, not after.

This is a copy, not a link. Edit the step as much as you like; none of it changes the saved template, and editing the template later does not change any step that used it.

Before you save, open "Preview with and without lead data" under the editor. It renders the email twice, once as a lead with data and once as a lead missing data. The second one is where you catch a missing fallback. Then set the delay, click Add Step, and the step is in the sequence. The same Load from Template panel appears when you click the pencil on an existing step.

For the wider campaign build, see [how to create a cold email campaign in FoxReach](/docs/get-started/create-campaign) and the [cold email follow-up sequence](https://www.foxreach.io/blog/cold-email-follow-up-sequence) guide.

## Variables, fallbacks, and spintax: quick reference

| Syntax | Example | Result |
| - | - | - |
| Variable | `{{company}}` | The lead's company, or nothing if empty |
| Fallback | `{{firstName\|there}}` | The first name, or "there" if empty |
| Spin | `{Hi\|Hello\|Hey}` | One option, chosen at random per send |

Variables available from the menu:

* **Standard Fields:** `firstName`, `lastName`, `fullName`, `email`, `company`, `title`, `phone`, `linkedin`, `website`
* **Custom Fields:** every custom field key on your leads, exactly as it was named on import
* **Account Fields:** `signature`, `senderName`, `senderEmail`

Snake case aliases work as well: `{{first_name}}`, `{{job_title}}`, and `{{sender_name}}` resolve to the same values. Custom field names can contain spaces and are matched to the lead's field verbatim.

At send time spin blocks are resolved first, then variables are substituted; a fallback inside a variable is safe from the spin pass. Subjects can be up to 500 characters and bodies up to 200,000.

## Start from the template library

The template library is a set of ready-made email templates curated by FoxReach. Click Browse library at the top of the Templates page (in a new workspace, the empty page offers up to three of them straight away, each with a Use button).

The library opens with the list on the left and the whole email on the right, variables highlighted, so you read it before taking it. Search and the category chips narrow the list. Click Copy to my templates: the copy lands in your workspace named with "(Copy)" on the end and opens in the editor, ready to make your own. A template you already copied is marked In your templates.

<Frame caption="The FoxReach template library with ready-made templates on the left, the full email on the right, and Copy to my templates">
  <img src="https://mintcdn.com/buildberg/2Uv_Pj094QuHTMUJ/images/guides/email-templates/template-library.webp?fit=max&auto=format&n=2Uv_Pj094QuHTMUJ&q=85&s=077e7c90c6dedc7604bfda46a2d0546c" alt="The FoxReach template library with ready-made templates on the left, the full email on the right, and Copy to my templates" width="2880" height="1620" data-path="images/guides/email-templates/template-library.webp" />
</Frame>

Copying is one way. Nothing you write in your workspace is ever sent to the library, and the library has no reply macros; those you always write yourself.

The same templates are on the public [gallery](https://www.foxreach.io/gallery). Use This Template there does the same copy; if you are signed out, you log in first and the copy completes after.

## Writing a template that gets replies

A few rules that hold up across most B2B lists:

1. **Subject: short, lowercase, one variable at most.** It should look like something a colleague would type.
2. **First line about them, not you.** A specific observation beats an introduction.
3. **One ask, phrased as a question.** Not a link, not a calendar, not three options.
4. **Fallback on every variable.** Assume the list is dirty because it is.
5. **Spin the phrasing, never the facts.** Greetings, transitions, and the ask are good spin candidates. Company names and numbers are not.
6. **Plain text for step one.** Google's [email sender guidelines](https://support.google.com/mail/answer/81126) and Yahoo's [sender best practices](https://senders.yahooinc.com/best-practices/) both push senders toward messages that look like they were written for one person, and a text-only first touch is the simplest way to get there.

Here is the template from the video with those rules applied:

```text theme={null}
Subject: quick question about {{company|your team}}

{Hi|Hey} {{firstName|there}},

Saw that {{company|your team}} is hiring SDRs. Are replies
landing in one place for the team yet, or is each rep
working their own inbox?

{Worth|Open to} a quick call this week?

{{senderName}}
```

## Troubleshooting

**A variable renders blank.** Either the lead has no value and there is no fallback, or the name does not match; custom field names must match the lead's field key exactly. Check the "Lead missing data" side of the step preview; every blank there needs a fallback.

**I edited the template but the running campaign did not change.** That is expected. Loading a template copies it into the step. Pause the campaign, click the pencil on the step, load the template again from Load from Template, and resume.

**Saving the step fails with a spin syntax error.** Look for a brace you did not close, a block with only one option, an empty option like `{a||b}`, or a block inside another block. The template editor does not validate spin syntax, so the first place you will see the error is the step.

**The sent email lost its formatting.** Send as HTML was off, so the email went as plain text and bold, links, and styles were converted away. Turn it on if the formatting is worth the deliverability trade. Pasted HTML source switches the editor to HTML mode, which always sends as HTML.

**My template is missing from Load from Template.** Only Email type templates appear there, and the panel is hidden entirely when the workspace has none. Open the template and check its Type.

## Next step

You have a template in the library and a step that uses it. Build the rest of the sequence with the guide to [creating a cold email campaign in FoxReach](/docs/get-started/create-campaign), then split step one with the [A/B testing guide](/docs/product/ab-testing) so the subject line earns its place. When replies arrive, the [unified inbox guide](/docs/get-started/unified-inbox) covers reply handling, which is where reply macros come in. Templates, variables, and spin syntax are available on every plan, including Free; the [pricing page](https://www.foxreach.io/pricing) lists the limits for each.

## Frequently asked questions

<AccordionGroup>
  <Accordion title="What is the difference between an email template and a reply macro in FoxReach?">
    An email template has a subject line and a body, and it is what you load into a campaign sequence step from the Load from Template menu. A reply macro has no subject line. It is a canned reply you keep for answering the same kinds of responses in the inbox. Both live on the Templates page, one type at a time, with the Emails and Reply macros switch.
  </Accordion>

  <Accordion title="Which variables can I use in a FoxReach email template?">
    The Variables menu lists standard lead fields (first name, last name, full name, email, company, job title, phone, LinkedIn, website), any custom fields you created when importing leads, and account fields for the sending inbox (signature, sender name, sender email). Every variable accepts a fallback with a pipe, for example a first name that falls back to the word there.
  </Accordion>

  <Accordion title="What happens if a lead is missing the data a variable needs?">
    If you set a fallback, the fallback text is used. If you did not, the variable is dropped and nothing is printed in its place, which can leave a sentence reading oddly. The dual preview under every sequence step shows the email once with full lead data and once with none, so you can catch missing fallbacks before the campaign starts.
  </Accordion>

  <Accordion title="If I edit a template, do the campaign steps that used it change too?">
    No. Loading a template into a sequence step copies its subject, body, and Send as HTML setting into that step. From then on the step and the template are independent. Editing the template later does not touch any step, and editing the step does not touch the template. To pick up template changes, pause the campaign, edit the step, and load the template again.
  </Accordion>

  <Accordion title="How does spin syntax help cold email deliverability?">
    Spin syntax such as a block with three greetings separated by pipes picks one option at random on every send, so a thousand emails do not share identical wording. Mailbox providers watch for large volumes of near-identical messages, and variation in phrasing is one of several signals that make bulk outreach look like one person writing to another. It is not a substitute for a good list or authentication.
  </Accordion>
</AccordionGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.