Text expansion with variables and conditional logic
Snippets are just the start. Add variables, dropdown fields, and {{#if}} branches to send the right message every time — from one template instead of five.
Text expansion with variables and conditional logic turns a fixed snippet into a template that adapts to each message. Variables like {{name}} and {{company}} fill in at expansion time, and {{#if}} branches swap whole paragraphs based on the case — so one template covers inbound and cold leads instead of you keeping five near-identical snippets.
Basic expansion replaces a short trigger with a block of text. That is genuinely useful, but the messages you actually send change based on who they are for. This guide covers the three levels of expansion — plain snippets, variables, and conditional logic — and how to build a single template that writes itself.
The three levels of text expansion
Text expansion comes in three levels of power. Plain snippets insert fixed text; variable snippets fill placeholders you supply at expansion time; conditional snippets branch on those values to change what gets inserted. Each level covers a wider range of real messages from a single trigger.
| Level | What it inserts | Best for |
|---|---|---|
| Plain snippet | The same fixed text every time | Signatures, boilerplate, canned replies |
| Variable snippet | Text with {{name}}-style fields filled in | Personalised outreach and follow-ups |
| Conditional snippet | Different text depending on the values | One template across many scenarios |
Variables and dropdown fields
Variables are placeholders you drop into a template and fill when it expands. Type {{name}} or {{company}} into the template and you are prompted for each value inline, so a personalised message is a trigger plus a couple of keystrokes instead of a manual rewrite. Expansion fires as you type, watching the field’s input events for your trigger.
Free-text variables
Use a free-text variable when the value changes every time — a first name, a company, a ticket number. You fill it at expansion time without leaving the keyboard, and the template drops it into every place it appears.
Dropdown variables
When a value comes from a fixed set — a plan tier, a region, a reason code — a dropdown variable lets you pick from the list instead of typing. It keeps wording consistent and removes the chance of a typo in a value you reuse constantly.
Branch with {{#if}} conditional logic
Conditional logic lets one template cover several cases by branching on a value. A {{#if}}…{{else}}…{{/if}} block shows a different opener for an inbound lead than a cold one, or includes a paragraph only when a field is set — so you maintain one template instead of a folder of near-duplicates.
- Add a variable the branch will test — for example a lead type or a plan.
- Wrap the case-specific text in {{#if}}…{{else}}…{{/if}}.
- Nest further conditions inside for the trickier combinations.
- Expand once to confirm each branch resolves the way you expect.
- {{#if}}…{{else}}…{{/if}} branches keep one template instead of five.
- Nested conditions handle the trickier cases cleanly.
- Everything runs locally — your text never leaves the browser.
Where templates beat retyping
Templates pay off anywhere you send variations of the same message on repeat. The more a message changes by recipient or scenario, the more variables and conditional logic save — which is why the heaviest users are the roles that live in the same few messages all day.
Sales and outreach
Openers and follow-ups with {{name}} and {{company}} turn personalised sending into filling blanks. It is the backbone of the SDR guide to automating CRM data entry, where templates pair with deep links and tab transfer.
Support and recruiting
Canned responses that branch on ticket type or candidate stage keep one template where you would otherwise juggle many. Support agents and recruiters get the right reply out without hunting for the right macro first.
Chain text with other actions
A template does not have to work alone. Because expansion is just one action a shortcut can run, you can fill a field with a template and then click through to submit — or make the template one step inside a multi-step sequence. Text handles the words; the other steps handle everything around them.
Frequently asked questions
What is the difference between a snippet and a template?
A snippet inserts the same fixed text every time. A template inserts text with variables you fill in and can branch on conditional logic, so it adapts to each message. The practical result is one template replacing several snippets you would otherwise keep and pick between.
Can one text template handle different scenarios automatically?
Yes, with conditional logic. A {{#if}}…{{else}}…{{/if}} block changes what gets inserted based on a variable you supply — for example a different opener for inbound versus cold leads. You maintain a single template instead of duplicating it for every case.
Do I need to write code to use variables and conditions?
No. Variables are just {{name}}-style placeholders, and conditions use a readable {{#if}} syntax — no programming language, no build step. You edit the template text directly and fill or branch on values at expansion time from the keyboard.
Is my expanded text sent to a server?
No. Expansion runs locally in your browser, so your templates and the text they produce never leave the device. Only your account email and plan are stored server-side; on Pro, cloud sync backs up your own templates under your private account so they follow you across machines.
Where do text templates save the most time?
Anywhere you send variations of the same message repeatedly — sales outreach, support replies, recruiting messages. The more a message changes by recipient or scenario, the more variables and conditional logic pay off, because one template covers what used to be many manual rewrites.
Build the template once, and every message after that is a few keystrokes.