T
transmit.

Sequences (Drip Campaigns)

Create automated multi-step email sequences that send on a schedule. Build welcome series, onboarding flows, and re-engagement campaigns.

Build automated email sequences that deliver the right message at the right time. Sequences (also known as drip campaigns) let you set up a series of timed emails that send automatically when contacts are enrolled.

Before You Start

Sequences require the Automations feature. This is available on Marketing and BYOK plans.

PrerequisiteLink
Verify a senderSenders Guide
Create a list (for list-triggered sequences)Lists Guide

How Sequences Work

A sequence is a series of email steps with configurable delays between them. When a contact is enrolled, they progress through each step automatically.

Contact enrolled
      |
      v
Step 1: Welcome Email (immediately)
      |
      v  (wait 2 days)
Step 2: Feature Highlights
      |
      v  (wait 3 days)
Step 3: Call to Action
      |
      v
Sequence complete

Creating a Sequence

Step 1: Setup

Define the basics:

  • Name: Internal name for your sequence
  • Trigger Type: How contacts get enrolled
    • List trigger: Auto-enroll when a contact is added to a specific list
    • API / Manual: Enroll contacts via the API or manually from the dashboard
  • Default Sender: The sender address for all emails in the sequence
  • Enroll Existing: Whether to enroll contacts already in the trigger list when the sequence is activated

Step 2: Build Steps

Add email steps to your sequence. Each step has:

  • Name: Internal label (e.g., "Welcome Email")
  • Subject: The email subject line
  • Delay: When to send relative to the previous step (e.g., "immediately", "after 2 days")
  • Body: The email content. Supports variables like {{firstName}}, {{lastName}}, {{email}}, and any custom metadata fields
  • Sender Override (optional): Use a different sender for a specific step

Step 3: Review & Activate

Review your sequence settings and timeline. You can save as a draft or activate immediately.

Triggers

List Trigger

The most common trigger. When a contact is added to the trigger list (via the dashboard, API, or bulk import), they are automatically enrolled in the sequence.

# Adding a contact to a list also enrolls them in any active sequences
curl -X POST https://api.xmit.sh/api/lists/lst_xxx/contacts \
  -H "Authorization: Bearer pm_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{"contactIds": ["con_xxx"]}'

API / Manual Trigger

Enroll contacts programmatically:

curl -X POST https://api.xmit.sh/api/sequences/seq_xxx/enroll \
  -H "Authorization: Bearer pm_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{"contactIds": ["con_xxx", "con_yyy"]}'

Lifecycle Management

ActionWhat Happens
ActivateStarts the sequence. Enrollments begin processing. Optionally enrolls existing list members.
PauseStops all sending. Active enrollments are paused. No new enrollments are created.
ResumeResumes sending. Paused enrollments pick up where they left off (stale send times are bumped to avoid flooding).
ArchivePermanently stops the sequence. All active enrollments are exited.

Enrollment States

Each contact's enrollment has a status:

StatusDescription
ActiveCurrently progressing through the sequence
CompletedFinished all steps successfully
PausedSequence is paused, enrollment will resume when sequence resumes
ExitedRemoved from sequence (unsubscribed, bounced, or manually exited)

Auto-Exit Conditions

Contacts are automatically exited from sequences when they:

  • Unsubscribe from emails (via unsubscribe link or API)
  • Bounce (permanent bounce or validation reject)
  • File a complaint (spam report)
  • Are manually exited by a team member

Step Delays

Delays are configured per step and determine when each email is sent relative to the previous step:

DelayExample Use
0 days (immediately)First welcome email right after enrollment
1 dayFollow-up the next day
3 daysGive contacts time to engage before the next touch
7 daysWeekly cadence
30 minutesQuick follow-up (e.g., after signup)

Domain Warmup Integration

Sequences respect your domain warmup limits. If the daily sending limit is reached, pending emails are automatically deferred and retried on the next scheduler run (every minute). No manual intervention is needed.

Analytics

Track per-step performance on the sequence detail page:

MetricDescription
SentEmails successfully sent for this step
OpensOpen tracking per step
ClicksClick tracking per step
BouncesFailed deliveries per step
SkippedContacts skipped (suppressed, inactive, or warmup deferred)

Variables

Use Liquid-style variables in your email content:

VariableDescription
{{email}}Contact's email address
{{firstName}}Contact's first name
{{lastName}}Contact's last name
{{unsubscribe_url}}One-click unsubscribe link (always included)
{{custom_field}}Any key from the contact's metadata

API Reference

Create Sequence

POST /api/sequences
{
  "name": "Welcome Series",
  "triggerType": "list_add",
  "triggerListId": "lst_xxx",
  "senderId": "snd_xxx",
  "enrollExisting": false
}

Add Step

POST /api/sequences/seq_xxx/steps
{
  "name": "Welcome Email",
  "subject": "Welcome to {{companyName}}!",
  "bodyHtml": "<p>Hello {{firstName}},</p><p>Welcome aboard!</p>",
  "delayAmount": 0,
  "delayUnit": "days"
}

Activate

POST /api/sequences/seq_xxx/activate

Enroll Contacts

POST /api/sequences/seq_xxx/enroll
{
  "contactIds": ["con_xxx", "con_yyy"]
}

List Enrollments

GET /api/sequences/seq_xxx/enrollments?status=active&limit=50&offset=0

Best Practices

Keep it concise. 3-5 emails is the sweet spot for most sequences. Too many emails increases unsubscribe rates.

Front-load value. The first email should deliver immediate value, not just a generic "thanks for signing up."

Test step delays carefully. Start with longer delays (2-3 days) and shorten based on engagement data.

Use the warmup-friendly approach. If you are warming up a new domain, start with a small trigger list and gradually increase volume as your domain reputation builds.

On this page