Distill can personalize campaign messages with simple data placeholders, AI-written message blocks, and custom research about each person or company.
This guide explains the difference between those options, how to use each one, and how to keep personalized outreach accurate and concise.
<aside> 🎥
Watch: How to use campaign variables in outreach
Russ walks through built-in variables, Custom AI Text, conditional instructions, and research columns.
</aside>
https://www.loom.com/share/7c78d1913e5e4c7e8d274ec5d54d9c3f
Jump to a section
| Option | What it does | Example |
|---|---|---|
| Template variables | Insert existing recipient or list data directly into the message | {{first name}}, {{company}}, or an available custom list column |
| Custom AI Text | Ask Distill to write part of the message using context about the sender, recipient, and recipient's company | Write one sentence about the company initiative most relevant to our product |
| Targeting research and custom data | Add information through list columns, AI Questions, web research, or imported data so it can be used during message generation | Persona, relevant initiative, current technology, or use case |
<aside> 💡
These options can work together. For example, an Exact Text block can insert the person's name, while a Custom AI Text block uses company research to write one relevant sentence.
</aside>
A template variable is a {{token}} placeholder that Distill replaces with data for the selected recipient.
Common built-in variables include:
{{first name}}{{company}}Campaigns can also use eligible columns from their source lists. In a field that supports variables, select the ? control to see which variables are currently available.
Variables are resolved when Distill builds the message for a recipient. If a variable does not match a supported built-in field or an available source-list column, Distill will not accept it.
<aside> ⚠️
Curly braces are for data fields, not open-ended AI instructions. Do not write something such as {{mention their recent role change}} unless that exact field exists in the campaign data. Use a Custom AI Text block for an instruction like this.
</aside>
Custom list columns can become message variables when they are available across the campaign's source data.