Sending Pre-Written Personalized Emails (Everything as a Variable)
Send fully unique, pre-written emails to each prospect — where every part (subject, opening line, body, CTA) is a variable pulled from your CSV.
Overview:
This approach is ideal when you have already crafted unique emails for each prospect using AI tools, manual research, or copywriting. Instead of writing one template with a few merge tags, every element of the email is a custom field. WarmySender sends each prospect their own fully personalized message.
Step 1: Prepare Your CSV
Add columns for every part of the email using the custom: prefix:
email,firstName,company,custom:subject_line,custom:first_line,custom:second_paragraph,custom:cta
[email protected],John,Acme Corp,Quick question about Acme's Q1 growth,I saw your talk at SaaStr...,We help companies like Acme reduce churn by 30%...,Would you be open to a 15-min call next week?
[email protected],Jane,Globex,Loved your recent blog post,Your article on remote hiring resonated...,We built a tool that cuts hiring time by 40%...,Could I send you a quick demo video?
Key rules for CSV headers:
- Prefix custom columns with custom: (e.g., custom:subject_line).
- Field names are sanitized: lowercased, spaces/special chars become underscores, max 30 characters.
- Use only alphanumeric characters and underscores after the prefix.
Step 2: Import Prospects
1) Go to your campaign > Prospects > Import CSV.
2) Upload your file. Built-in columns (email, firstName, company) auto-map.
3) Custom columns appear as 'Custom: subject_line', 'Custom: first_line', etc.
4) Confirm the mapping and import.
Step 3: Create Your Campaign
In the email editor, use variables for every part:
Subject line: Click the subject field, then use the Variable Picker (the { } button in the toolbar) to insert {{custom.subject_line}}.
Body example:
{{custom.first_line}}
{{custom.second_paragraph}}
{{custom.cta}}
Best regards,
{{sender_name}}
Both {{custom.field_name}} and {{field_name}} syntax work, as long as the name does not conflict with a built-in field.
Step 4: Add Fallback Values
Protect against missing data with fallback syntax:
• Subject: {{custom.subject_line | default: 'Quick question for you'}}
• Body: {{custom.first_line | default: 'I came across your company and was impressed by your work.'}}
This ensures every prospect gets a coherent email even if a custom field is blank.
Tips and Best Practices:
- Test with a small batch (5–10 prospects) first to verify variables resolve correctly.
- Use the Preview feature to check each prospect's rendered email before launching.
- Custom fields appear in the Variable Picker under the 'Custom Fields' group.
- Combine with spintax for additional variation: {Hi|Hello} {{firstName}}, {{custom.first_line}}
- You can have as many custom columns as you need — there is no limit on the number of fields.
Common Mistakes to Avoid:
- Forgetting the custom: prefix in CSV headers — without it, unrecognized columns are skipped.
- Using spaces in field names — use underscores instead (custom:first_line, not custom:first line).
- Not adding fallback values — if even one prospect is missing a field, they get a blank in the email.
- Exceeding 30 characters for field names — keep names short and descriptive.