Personalise every message with variables

After this lesson you can insert any table column into a step as a variable, add a fallback for empty values, and know what happens when a value is missing.

1:31 video with captions, written steps and transcript. Checked against Duckrow on October 3, 2026.

0:00 / 1:31

Narration: preview voiceA recruiter writes to finance leaders for a VP Finance search. The people and companies are example data.

The short answer

In any Duckrow step, Add personalization inserts a table column as a variable, like {{Company}}. Each message is filled from that lead's row when it sends, so columns you enrich later are used. Add a fallback after a bar, {{First Name|there}}, for empty cells. If a variable has no value and no fallback, the message isn't sent and the lead pauses.

Step by step

  1. 1Insert a variableIn an email, text or LinkedIn step, click Add personalization and pick a column under Workbook columns. It inserts {{Column Name}} at the cursor. The campaign needs a workbook with columns.
  2. 2Use any columnNames, companies, AI columns such as an opening line, Jev answers: any column in the lead's row can be a variable. Spaces and capitals inside the braces don't matter.
  3. 3Filled at send timeEach message reads the lead's row when it sends, so enrichment that lands later is used.
  4. 4Add fallbacksType a bar and a fallback inside the braces: {{First Name|there}}. The fallback is used when the cell is empty. Live preview shows these as typed; the send fills them.
  5. 5Fix missing valuesWith no value and no fallback, the message isn't sent and the lead shows Paused in the Lead list. Fill the cell or add a fallback, then resume the lead.

Try it in Duckrow

About five minutes, in your own workspace.

  1. Open an email step and click Add personalization; insert your first-name column.
  2. Change it to use a fallback, like {{First Name|there}}.
  3. Insert one more column you've enriched, such as company or an opening line.
  4. Open Live preview to see the first row's version.

You're done when your step reads naturally for a lead with every value, and for one with a blank name.

Check what stuck

Three quick questions. Nothing is saved.

  1. 1. You add an Opening line column to the table after the campaign launched. Do later emails use it?

  2. 2. Hana's Opening line is empty and the step has {{Opening line}} with no fallback. What happens?

  3. 3. Which variable says "Hi there" when the first name is empty?

Transcript

0:00One template, every lead

One email, sent to three hundred people, and every copy reads like it was written for one. That's what variables are for.

0:10Insert a column

In the step, click Add personalization. It lists your workbook columns. Pick one, and it drops in as a variable in double braces, right where your cursor was. Any column works, even an AI column with an opening line.

0:27Filled when it sends

When the email goes, each variable is filled from that lead's row. Because it happens at send time, a column you enrich next week is used next week. Grace gets her company, her role, and her own opening line.

0:43A fallback for blanks

Some rows have gaps. Add a fallback after a bar: first name, bar, there. When the first name is empty, the email says Hi there. The live preview shows the token as you typed it; the real send fills it.

0:59When a value is missing

A variable with no value and no fallback is never sent as a blank. The message is held, and the lead pauses in the lead list. Fill the cell, or add a fallback, then resume the lead.

1:13Recap

To recap. Any column becomes a variable, filled when it sends. Add a fallback with a bar. A variable with no value pauses the lead, instead of sending a blank. Next, branch on what's in your table.