Email Copy Writing Guide
This guide covers all the syntax, variables, and features you can use when writing email copy for your campaigns in ColdSend.
Table of Contents
- Basic Variables
- Liquid Conditional Logic
- Spintax for Content Variation
- Dynamic Time-Based Variables
- Signature Variables
- Complete Example
- Best Practices
Basic Variables
Variables allow you to personalize emails with lead information, sender details, and campaign data. All variables use the format {{variable_name}}.
Lead Variables
Sender Variables (Flat Format)
Sender Variables (Dot Notation)
Campaign Variables
Custom Fields
Any custom fields you've added to your leads will be available as variables. For example, if you have a custom field called job_title, you can use it as:
{{job_title}}
Example Usage:
Hi {{first_name}},
I noticed you're working as {{job_title}} at {{company}}. I thought you might be interested in...
Best regards,
{{sender_name}}
Liquid Conditional Logic
Liquid syntax allows you to show different content based on whether variables exist or meet certain conditions. This is powerful for creating personalized emails that adapt to each recipient.
Basic If Statement
Show content only if a variable exists or is truthy:
{{#if first_name}}
Hi {{first_name}},
{{else}}
Hi there,
{{/if}}
Unless Statement
Show content only if a condition is FALSE (opposite of if):
{{#unless company}}
We'd love to learn more about your organization.
{{/unless}}
This shows the text only when company is empty or doesn't exist.
Else If Statements
Multiple conditions:
{{#if job_title contains "Manager"}}
Dear Hiring Manager,
{{else if job_title contains "Director"}}
Dear Director,
{{else}}
Dear Team Member,
{{/if}}
Comparison Operators
You can use various comparison operators in your conditions:
String Comparisons
{{#if company == "Google"}}
We admire your work at Google!
{{/if}}
{{#if job_title contains "CEO"}}
As the CEO, you understand...
{{/if}}
Numeric Comparisons
{{#if employees > 100}}
With over 100 employees, you understand scaling...
{{/if}}
{{#if revenue < 1000000}}
Early-stage companies like yours face unique challenges...
{{/if}}
Empty Checks
{{#if first_name == empty}}
Hi there,
{{else}}
Hi {{first_name}},
{{/if}}
Logical Operators: AND / OR
Combine multiple conditions:
{{#if first_name and company}}
Hi {{first_name}} from {{company}},
{{/if}}
{{#if job_title contains "Manager" or job_title contains "Director"}}
Dear Leader,
{{/if}}
Nested Conditions
You can nest if blocks inside other if blocks:
{{#if first_name}}
Hi {{first_name}},
{{#if company}}
It's great to connect with someone from {{company}}.
{{/if}}
{{else}}
Hi there,
{{/if}}
Spintax for Content Variation
Spintax allows you to create multiple variations of your email content. Each recipient will see a different version, which helps improve deliverability and engagement.
Basic Spintax
Use the pipe symbol | to separate options:
{{Hi|Hello|Hey}} {{first_name}},
This will randomly show one of:
- "Hi John,"
- "Hello John,"
- "Hey John,"
Nested Spintax
You can nest spintax within spintax for even more variations:
{{Hi|Hello|Hey}} {{there|friend|champion}},
This creates 9 possible combinations (3 × 3).
Spintax with Variables
Include variables inside spintax:
{{I wanted to|I'm reaching out to|Just thinking about}} connect with you{{ today|this week}}.
Best Practices for Spintax
- Keep it natural: All variations should sound natural
- Don't overdo it: 2-4 options per spintax is usually enough
- Test readability: Make sure all combinations make sense
- Use strategically: Focus on opening lines, CTAs, and sign-offs
Examples:
{{I hope this email finds you well|Hope you're having a great week|Trust you're doing well}}.
{{Are you free|Do you have time}} for a {{quick|brief}} call {{this week|next week}}?
{{Best regards|Thanks|Cheers},
{{sender_name}}
Dynamic Time-Based Variables
Dynamic variables automatically adjust based on the time and date when the email is sent.
Time of Day
{{dn_time_of_day}}
Returns:
- "morning" (before 12 PM)
- "afternoon" (12 PM - 3 PM)
- "evening" (after 3 PM)
Example:
Good {{dn_time_of_day}} {{first_name}},
Could become:
- "Good morning John,"
- "Good afternoon John,"
- "Good evening John,"
Day of Week
{{dn_day_of_week}}
{{dn_day_name}}
Both return the full day name: "Monday", "Tuesday", "Wednesday", etc.
Example:
Happy {{dn_day_of_week}}!
Dynamic Dates
Use {{dn_date}} with offset and format parameters:
Basic Syntax
{{dn_date "offset" "format"}}
Offset Formats
Days from now:
{{dn_date "2 days from now"}}
{{dn_date "10 days from now"}}
Weeks from now:
{{dn_date "2 weeks from now"}}
Compact format:
{{dn_date "2Days"}}
{{dn_date "2Days ago"}}
{{dn_date "3Weeks"}}
{{dn_date "1Month"}}
{{dn_date "1Year"}}
Date Format Tokens
Examples
{{dn_date "2 days from now" "MMMM Do, YYYY"}}
→ "January 15th, 2024"
{{dn_date "1 week from now" "ddd, MMM D"}}
→ "Mon, Jan 15"
{{dn_date "3Days" "YYYY-MM-DD"}}
→ "2024-01-18"
{{dn_date "next meeting is scheduled for {dn_date \"2 days from now\"} at 2 PM"}}
Combining Dynamic Variables
{{dn_day_name}} {{dn_time_of_day}}
Good {{dn_time_of_day}}! Today is {{dn_day_of_week}}, {{dn_date "0" "MMMM Do"}}.
Signature Variables
Add email signatures dynamically to your templates.
HTML Signatures
For HTML email templates:
{{signature}}
or
{{sender.signature}}
Plain Text Signatures
For plain text emails:
{{signature_text}}
or
{{sender.signature_text}}
Important Notes:
- Signatures are only fetched if you use one of the signature variables
- If no signature is configured, these variables will be empty strings
- Signatures support team-level defaults and inbox-specific signatures
Example HTML Template:
<html>
<body>
<p>Hi {{first_name}},</p>
<p>Great connecting with you!</p>
<p>{{signature}}</p>
</body>
</html>
Example Plain Text Template:
Hi {{first_name}},
Great connecting with you!
{{signature_text}}
Complete Example
Here's a complete email template using multiple features:
{{#if first_name}}
Hi {{first_name}},
{{else}}
Hi there,
{{/if}}
{{#if company}}
I noticed you're at {{company}} - impressive!
{{/if}}
{{Good morning|Good afternoon|Good evening}}! {{I hope|Trust}} you're having a {{great|wonderful|fantastic}} {{dn_day_of_week}}.
{{#if job_title contains "Manager"}}
As a {{job_title}}, you probably understand the challenges of...
{{else if job_title contains "Director"}}
In your role as {{job_title}}, you likely face...
{{else}}
In your position, you likely face...
{{/if}}
{{I wanted to reach out|I'm contacting you|Just thinking}} about how we could {{help|assist|support}} {{company}} achieve...
{{Are you available|Do you have time}} for a {{quick|brief|short}} call {{next week|in the coming days}}?
{{Best regards|Thanks|Cheers|Talk soon}},
{{sender_name}}
{{sender.title}}
{{signature}}
P.S. Our next availability is {{dn_date "3 days from now" "dddd, MMMM Do"}} at 2 PM.
What This Template Does:
- ✅ Personalizes greeting based on first name availability
- ✅ Mentions company only if provided
- ✅ Uses time-of-day greeting dynamically
- ✅ Creates 3×3×3 = 27 spintax variations
- ✅ Shows different content based on job title
- ✅ Includes dynamic date for follow-up
- ✅ Adds signature automatically
Best Practices
1. Personalization
- Use
{{first_name}}and{{company}}to make emails personal - Add custom fields relevant to your outreach
- Use conditional logic to handle missing data gracefully
2. Content Variation
- Use spintax for opening lines, CTAs, and sign-offs
- Create 2-4 variations per spintax block
- Avoid nested spintax that's too complex
3. Conditional Logic
- Always provide
{{else}}fallbacks - Use
{{#unless}}for negative conditions - Keep conditions simple and readable
4. Dynamic Variables
- Use
{{dn_time_of_day}}for timely greetings - Reference future dates for scheduling
- Consider recipient timezone when timing emails
5. Testing
Before launching your campaign:
- Preview emails: Use the preview feature to see how emails render
- Test all variables: Ensure they populate correctly
- Check spintax: Verify all variations read naturally
- Validate liquid: Confirm conditions work as expected
- Test signatures: Ensure signatures appear correctly
6. Common Mistakes to Avoid
❌ Unclosed liquid tags:
{{#if first_name}}
Hi {{first_name}}
<!-- Missing {{/if}} -->
✅ Correct:
{{#if first_name}}
Hi {{first_name}}
{{/if}}
❌ Invalid spintax (single option):
{{Hello}} <!-- This will error -->
✅ Correct:
{{Hello|Hi|Hey}}
❌ Mismatched liquid tags:
{{#if first_name}}
Hi {{first_name}}
{{/unless}} <!-- Wrong closing tag -->
✅ Correct:
{{#if first_name}}
Hi {{first_name}}
{{/if}}
❌ Empty conditions:
{{#if }} <!-- Empty condition -->
✅ Correct:
{{#if first_name}}
7. Variable Naming
- Use lowercase with underscores:
{{first_name}} - For dot notation:
{{sender.name}} - Custom fields should use valid variable names
- Avoid spaces and special characters in variable names
Quick Reference Card
Variables
{{first_name}}, {{last_name}}, {{email}}, {{company}}, {{full_name}}
{{from_name}}, {{from_email}}, {{sender_name}}, {{sender_email}}
{{sender.name}}, {{sender.email}}, {{sender.signature}}, {{sender.signature_text}}
{{campaign_name}}
{{custom_field_name}}
Liquid Logic
{{#if variable}}...{{/if}}
{{#unless variable}}...{{/unless}}
{{#if condition}}...{{else}}...{{/if}}
{{#if condition1}}...{{else if condition2}}...{{else}}...{{/if}}
Operators
==, !=, >, <, >=, <=, gte, lte, contains, empty
and, or
Spintax
{{option1|option2|option3}}
Dynamic Variables
{{dn_time_of_day}} → morning/afternoon/evening
{{dn_day_of_week}} → Monday, Tuesday, etc.
{{dn_day_name}} → Monday, Tuesday, etc.
{{dn_date "offset" "format"}} → formatted date
Signature
{{signature}}, {{signature_text}}
{{sender.signature}}, {{sender.signature_text}}
Need Help?
If you encounter issues with your email templates:
- Check the syntax using our built-in validator
- Use the preview feature to test rendering
- Review this guide for proper syntax
- Contact support for assistance
Happy emailing! 📧