Skip to main content
Sequences define automated follow-up emails that trigger based on recipient behavior. Each follow-up step has its own email variants.

How Sequences Work

  1. Initial email is sent to lead
  2. ColdSend waits the configured number of days
  3. If the trigger condition is met, follow-up is sent
  4. Process repeats for subsequent steps

Configuring Sequences

Provided in the sequences array when updating a campaign:
response = requests.put(
    f"{base_url}/api/public/v1/campaigns/{campaign_id}",
    headers={"X-API-Key": api_key},
    json={
        "sequences": [
            {
                "step_number": 2,
                "trigger_type": "NOT_OPENED",
                "wait_days": 3,
                "variants": [
                    {
                        "variant_name": "A",
                        "subject_template": "Following up on my previous email",
                        "email_content": "Hi {{first_name}},\n\nI wanted to follow up on my previous email...\n\nBest,\nJohn",
                        "distribution_percent": 100
                    }
                ]
            },
            {
                "step_number": 3,
                "trigger_type": "NOT_REPLIED",
                "wait_days": 5,
                "variants": [
                    {
                        "variant_name": "A",
                        "subject_template": "Last thought",
                        "email_content": "Hi {{first_name}},\n\nOne last thought I wanted to share...\n\nBest,\nJohn",
                        "distribution_percent": 100
                    }
                ]
            }
        ]
    }
)

Sequence Fields

FieldTypeRequiredDescription
step_numberintYesSequence position (2-4). Step 1 is the initial email.
trigger_typestringYesWhen to send: NOT_OPENED, NOT_REPLIED, or OPENED_BUT_NOT_REPLIED
wait_daysintYesDays to wait (1-30)
enable_unsubscribeboolNoOverride campaign setting. Inherits if not specified.
variantsarrayYesAt least one email variant required per sequence

Trigger Types

TriggerFires When
NOT_OPENEDLead has not opened any previous email
NOT_REPLIEDLead has not replied to any email (includes those who opened but didn’t reply)
OPENED_BUT_NOT_REPLIEDLead opened at least one email but hasn’t replied
NOT_REPLIED is the most commonly used trigger — it reaches both non-openers and openers who didn’t respond.

Sequence Limits

LimitValue
Maximum sequences3 per campaign
Step numbers2, 3, or 4
Wait days per sequence1-30 days
Total sequence duration45 days maximum

Best Practices

StepRecommended WaitPurpose
2 (first follow-up)2-4 daysReference original email, add value
3 (second follow-up)5-7 daysOffer a case study or specific resource
4 (final follow-up)7-10 daysCreate urgency or breakup email

Subject Line Patterns

ApproachExample
Reference previousRe: Quick question about {{company}}
Fresh angleOne more thing about {{company}}
CuriosityDid you see this?

Next Steps

Email Variants

A/B testing and personalization for follow-ups.

Personalization

Use variables, spintax, and conditionals.