ColdSend Logo
ColdSend
HomeFeaturesPricing
Contact UsGet Started
Help Center/Campaigns
Campaigns

Email Copy Writing Guide

Learn how to write effective email copy with variables, spintax, liquid logic, and dynamic content for your ColdSend campaigns

Last updated: February 18, 2026

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

  1. Basic Variables
  2. Liquid Conditional Logic
  3. Spintax for Content Variation
  4. Dynamic Time-Based Variables
  5. Signature Variables
  6. Complete Example
  7. 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

VariableDescriptionExample Output
{{first_name}}Lead's first name"John"
{{last_name}}Lead's last name"Doe"
{{email}}Lead's email address"john@example.com"
{{company}}Lead's company name"Acme Inc"
{{full_name}}Lead's full name"John Doe"

Sender Variables (Flat Format)

VariableDescriptionExample Output
{{from_name}}Sender's display name"Jane Smith"
{{from_email}}Sender's email address"jane@company.com"
{{sender_name}}Sender's name"Jane Smith"
{{sender_email}}Sender's email"jane@company.com"

Sender Variables (Dot Notation)

VariableDescriptionExample Output
{{sender.name}}Sender's name"Jane Smith"
{{sender.email}}Sender's email"jane@company.com"
{{sender.signature}}Sender's HTML signature<div>...</div>
{{sender.signature_text}}Sender's plain text signature"Best regards,\nJane"

Campaign Variables

VariableDescriptionExample Output
{{campaign_name}}Campaign name"Q1 Outreach"

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:

OperatorDescriptionExample
==Equal to{{#if company == "Acme Inc"}}
!=Not equal to{{#if company != "Competitor"}}
>Greater than{{#if employees > 100}}
<Less than{{#if employees < 50}}
>= or gteGreater than or equal{{#if revenue >= 1000000}}
<= or lteLess than or equal{{#if budget <= 5000}}
containsContains substring{{#if job_title contains "Manager"}}
emptyCheck if empty{{#if company == empty}}

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

  1. Keep it natural: All variations should sound natural
  2. Don't overdo it: 2-4 options per spintax is usually enough
  3. Test readability: Make sure all combinations make sense
  4. 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

TokenOutputExample
MMMMFull month name"January"
MMMShort month name"Jan"
MM2-digit month"01"
MMonth number"1"
YYYY4-digit year"2024"
YY2-digit year"24"
ddddFull day name"Monday"
dddShort day name"Mon"
DD2-digit day"01"
DDay number"1"
DoOrdinal day"1st", "2nd", "3rd"
HH24-hour format"14"
H24-hour no leading zero"14"
hh12-hour format"02"
h12-hour no leading zero"2"
mmMinutes"30"
ssSeconds"45"
AAM/PM uppercase"AM", "PM"
aam/pm lowercase"am", "pm"

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:

  1. Signatures are only fetched if you use one of the signature variables
  2. If no signature is configured, these variables will be empty strings
  3. 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:

  1. ✅ Personalizes greeting based on first name availability
  2. ✅ Mentions company only if provided
  3. ✅ Uses time-of-day greeting dynamically
  4. ✅ Creates 3×3×3 = 27 spintax variations
  5. ✅ Shows different content based on job title
  6. ✅ Includes dynamic date for follow-up
  7. ✅ 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:

  1. Preview emails: Use the preview feature to see how emails render
  2. Test all variables: Ensure they populate correctly
  3. Check spintax: Verify all variations read naturally
  4. Validate liquid: Confirm conditions work as expected
  5. 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:

  1. Check the syntax using our built-in validator
  2. Use the preview feature to test rendering
  3. Review this guide for proper syntax
  4. Contact support for assistance

Happy emailing! 📧

ColdSend Logo
Cold email infra
without the infra.
EmailHello@coldsend.pro

Socials

© 2025 ColdSend. All rights reserved.