Learning Objective
By the end of this guide, you'll know how to use lemlist's default variables, create unlimited custom variables through CSV imports, apply fallback values to handle missing data, and personalize emails at scale to boost reply rates.
Why This Matters
Personalized emails get replies. Generic emails get ignored.
Custom variables let you write one email template that automatically personalizes for every lead, referencing their name, company, industry, pain point, or any other data you have. This scales personalization without manual work, leading to higher engagement and more conversations.
Without variables: "Hi, I wanted to reach out about your company."
With variables: "Hi Sarah, I noticed Acme Corp has been making waves in SaaS."
The difference drives measurably higher reply rates.
Prerequisites
Before using custom variables:
You have leads imported with data in your campaign
You understand basic CSV structure β Column headers become variable names
You're writing or editing an email in your sequence
Predefined Custom Variables
lemlist includes default variables for common lead information:
#{{email}}#{{firstName}}#{{lastName}}#{{picture}}#{{phone}}#{{linkedinUrl}}#{{companyName}}#{{icebreaker}}#{{sender.name}}
These work automatically when your CSV column headers match the variable names.
π‘ You can also create unlimited custom variables to fit your specific needs.
Core LessonL Using Custom Variables
Step 1: Understand variable syntax
Variables use double curly braces: #{{variableName}}
Example email:
Hi #{{firstName}},
I noticed #{{companyName}} has been making waves in #{{industry}}. Let's connect and explore how we can help you achieve even more success.
Best regards, #{{sender.name}}
When sent, lemlist replaces each variable with the lead's actual data.
Step 2: Create custom variables via CSV import
Custom variables are created automatically when you import a CSV with additional columns beyond the default ones.
CSV example:
Resulting variables:
#{{email}}(default)#{{firstName}}(default)#{{companyName}}(default)#{{industry}}(custom)#{{painPoint}}(custom)
The CSV column header name becomes the variable name.
Step 3: Follow formatting rules
Case sensitivity: Custom variables are case-sensitive. #{{firstName}} β #{{FirstName}}.
Your CSV header must match the variable name exactly.
No spaces or errors: Braces must be correctly opened and closed with no spaces inside.
β
CORRECT: #{{firstName}}
β INCORRECT: #{{ firstName }} (spaces inside braces)
CSV header matching: If your CSV header is "Industry," the variable must be #{{Industry}} (exact match).
Step 4: Use fallback values
If a variable is empty for some leads, fallback values ensure emails still look professional.
Without fallback:
Template:
Hello #{{firstName}},If firstName is empty, displays:
Hello ,β Broken
With fallback:
Template:
Hello #{{firstName|there}},If firstName is empty, displays:
Hello there,β Clean
Fallback syntax: #{{variable|fallback}}
Examples:
#{{firstName|there}}#{{companyName|your company}}#{{industry|your industry}}
Advanced Features
Images as variables: Use URLs in your CSV to include personalized images, like profile pictures or company logos.
Add an image URL column to your CSV:
Use in email (HTML mode): <img src="#{{profilePicture}}" alt="Profile" width="100">
Character limit: Custom variables support up to 2,000 characters, allowing detailed personalization like full paragraphs or long URLs.
Avoid duplicates: Match your custom variable columns carefully during CSV import to prevent duplicate variables and issues during lead review.
Example Email Template
Template:
Hi #{{firstName}},
I noticed #{{companyName}} has been making waves in #{{industry}}. Let's connect and explore how we can help you achieve even more success.
Best regards, #{{sender.name}}
Outcome: Each email feels tailored and personalized, increasing the chance of a reply.
Troubleshooting
Issue: Variable shows as #{{firstName}} instead of actual name
Fix:
Check CSV column header is exactly
firstName(case-sensitive)Verify lead has data in that column
Ensure no spaces in variable:
#{{firstName}}not#{{ firstName }}
Issue: Email displays "Hi , " with comma but no name
Fix:
Add fallback:
#{{firstName|there}}Or ensure all leads have firstName data before importing
Issue: Duplicate variables appear
Fix:
CSV may have multiple columns with similar names (e.g.,
firstnameandfirstName)Standardize CSV column names to match lemlist defaults exactly
Remove duplicate columns before importing
Optimization Tips
Use fallbacks for all variables: Always include fallback values to handle missing data gracefully.
Keep variable names consistent: Use camelCase (e.g., firstName, companyName, painPoint) across all CSVs.
Test with real data: Preview your email with actual lead data before launching to verify variables render correctly.
Limit variables per email: 3-4 well-placed variables per email is usually enough. Too many can feel robotic.
Combine with AI Variables: Use AI Variables to generate personalized content based on your custom variables for even deeper personalization.
Related Articles


