Custom variables are your own fields on a campaign's leads, such as a renewal date, the tool a lead uses or a line you wrote for each person. You bring them in with a CSV, put them in an email as {renewal_date}, and Kenso fills in each lead's value when the email sends. You add them to emails in Campaigns › your campaign › Sequence. Press G then C to open Campaigns.
How custom variables work
- Each campaign has its own. A campaign holds up to 50 custom variables. One campaign's
/menu doesn't list another campaign's variables. - They use single braces. Write a custom variable as
{key}, like the lead fields{firstName}and{company}. Double braces, such as{{First Line}}, are AI variables that Ken writes for each lead. See Personalize emails with AI variables. - Kenso turns the name into a key. It lowercases the name and turns each run of spaces or other characters into one underscore. "Renewal Date" becomes
{renewal_date}, and "Tool used" becomes{tool_used}. A key must start with a letter, so "2FA Status" is refused. - Some names are taken. A custom variable can't use a name Kenso fills itself, such as
first_name,last_name,email,titleorcompany. Map those columns to Kenso's own field instead. - Values are text. Kenso trims the spaces around each value and keeps up to 32,767 characters. An empty cell means the lead has no value.
Add custom variables from a CSV
You need edit access to Campaigns and the import permission. Admins and Editors have both.
- Open your campaign and click the Leads tab.
- Click Import leads and choose your CSV file.
- On the Columns step, find the column you want to use in emails, for example "Renewal Date".
- In its Kenso field menu, pick Custom variable (provide name below). Kenso puts the column's name in the box below the menu.
- Change the name if you want. The
/menu shows this name, and Kenso makes the key from it. - Finish the import.
A column of longer text that matches no field says "No field matches. Map it to a variable to use it in copy". Kenso remembers your choice, so the next file with the same header starts mapped, with a line such as "You mapped this header to the variable Renewal Date on Nov 3".
When you build a new campaign with Import CSV as the data source, each column's menu has the same choice, with a Variable name box under it.
Put a custom variable in an email
- Open the campaign's Sequence tab and click an email step.
- In the body, type /. The menu lists Lead fields, AI variables and Sender.
- Under Lead fields, pick your variable. It reads "Custom variable:" and its name, with the key on the right, such as
{renewal_date}. - Add a fallback after a bar inside the braces, such as
{renewal_date|this quarter}. The next section explains why. - Click Preview to see the email filled in for a real lead.
- Click Save.
The / menu works in an email's body. In the subject line and in LinkedIn messages, type the key yourself, braces included. Kenso fills custom variables in subjects and LinkedIn messages too.
A variable the campaign knows shows as a gray chip in the editor. One it doesn't know gets a dashed red underline, and a line under the editor says "Kenso can't fill" and the token. Type keys exactly as the / menu shows them, in lowercase.
When a lead has no value
- The lead has a value, such as "June 30":
{renewal_date}and{renewal_date|this quarter}both send "June 30". - The value is empty, only spaces, or missing:
{renewal_date}sends nothing, and{renewal_date|this quarter}sends "this quarter".
Without a fallback, "renews on {renewal_date}." reads "renews on ." to that lead. Give every custom variable a fallback unless every lead has a value.
Fallback rules:
- It can't be empty:
{renewal_date|}is refused. - It can't hold
|,{or}. - Kenso uses it exactly as you type it, spaces included.
If a custom variable is Required, Kenso holds back leads with no value for it whose emails use it without a fallback. With a fallback in the email, those leads send with the fallback.
See a lead's values
- In the Leads tab, click a lead.
- On the Profile tab, Custom variables lists the values this lead has. Click a value to copy it.
- Open the Personalization tab. Its Custom variables section lists every custom variable of the campaign. An empty one reads "No value for this contact".
Each card can carry two tags:
- AI context: Ken reads this value when it qualifies, scores and segments the lead and when it writes AI variables. Columns you map in a CSV import start with it on.
- Required: leads with no value wait, as described above. It starts off. A required variable with no value shows in orange: "Required - blocks sending until a value is set".
The app shows these settings but has no switch for them. To turn one on or off, ask Ken, or use an AI tool connected to Kenso.
Other ways to add custom variables
- Duplicate a campaign. The copy keeps the custom variables and their settings.
- Ask Ken, or use an AI tool or the API. You can add a custom variable before any lead has a value, so you can write the emails first, and you can set or clear a lead's value. A lead's new key joins the campaign's custom variables with AI context off. Deleting a custom variable leaves the values leads already have. See Use Kenso from Claude or ChatGPT.
Vary words with spintax
To vary wording, write {spin:Hi|Hello|Hey}. Each lead gets one option, the same one on a retry. A block needs 2 to 20 options separated by |, can't sit inside another block, and can hold a variable with a fallback: {spin:Hi {firstName|there}|Hello {firstName|there}}. It works in an email's subject and body. A LinkedIn message sends it as written.
What Ken can do here
Press ⌘J and ask Ken. Ken can list the variables a campaign's emails can use, custom variables included, and preview an email for a lead. It can add a custom variable to a step or give one a fallback: Ken quotes the text before and after, then shows a card you approve. It can also add a custom variable before any lead has a value, rename one, turn Required or AI context on or off, and set a lead's value.
If something goes wrong
- "Kenso can't fill {renewal_dat} here." The campaign has no custom variable with that key. Check the spelling against the
/menu, in lowercase. - Save fails with "Unsupported lead variables" and a token. The token is neither a lead field nor one of this campaign's custom variables, or its fallback breaks a rule, such as "(fallback text cannot be empty)". Fix or remove it, then save.
- "Name the variable for Renewal Date." That column is set to Custom variable (provide name below) with an empty name. Type a name.
- "'2FA Status' normalizes to '2fa_status', which cannot be referenced as {2fa_status}..." A key must start with a letter. Rename the variable, for example "Status 2FA".
- "'first_name' is a reserved field name and cannot be used as a custom variable." Map that column to Kenso's own field.
- "Campaign custom variables are limited to 50 custom variables..." The import would take the campaign past 50. Set the columns you won't use in emails to Skip this column.
- A lead got "renews on ." with a gap. The lead had no value and the token had no fallback. Add a fallback and save. Save changes only emails that have not sent yet.
- A lead's value is missing. The cell was empty in your file, or the column was skipped. Check the lead's Personalization tab, then import the values again.
Related: Build a sequence, Personalize emails with AI variables, Use Kenso from Claude or ChatGPT, Ask Ken from any page