A drip sequence is a series of emails sent automatically over time. Unlike a campaign (which blasts one email to everyone at once), a sequence delivers the right message at the right time relative to when each contact was enrolled.
Sequences are the highest-leverage email tool most developers underuse.
Why Sequences Work
When someone signs up for your product, they don't need a newsletter. They need help. A well-timed sequence of 3-5 emails in the first week can:
- Double activation rates — remind users to complete setup
- Reduce support tickets — answer common questions before they're asked
- Drive upgrades — introduce paid features at the right moment
- Recover churned users — re-engage before they forget you exist
The key advantage over campaigns: sequences meet the user where they are, not where you are.
Anatomy of a Sequence
A PushMail sequence has three parts:
1. The sequence itself
A named container with a sending configuration:
POST /api/v1/sequences
{
"name": "Onboarding Flow",
"sendingConfigId": 1
}2. Steps (the emails)
Ordered emails with delays between them. The delay defines how long to wait after the previous step (or enrollment for the first step):
POST /api/v1/sequences/5/steps
{
"subject": "Welcome to {{app_name}}",
"html": "<h1>You're in!</h1><p>Here's how to get started...</p>",
"delayValue": 0,
"delayUnit": "minutes",
"position": 1
}
POST /api/v1/sequences/5/steps
{
"subject": "Did you set up your first project?",
"html": "...",
"delayValue": 1,
"delayUnit": "days",
"position": 2
}
POST /api/v1/sequences/5/steps
{
"subject": "3 things most users miss",
"html": "...",
"delayValue": 3,
"delayUnit": "days",
"position": 3
}Delay units: minutes, hours, days, weeks.
3. Enrollments
Contacts are enrolled into a sequence. Each enrollment tracks which step the contact is on and when the next step should fire:
POST /api/v1/sequences/5/enroll
{ "contactId": 123 }You can also enroll in bulk:
POST /api/v1/sequences/5/enroll
{ "contactIds": [123, 456, 789] }How the Engine Works
PushMail's cron worker runs every minute and:
- Finds all active enrollments where
nextStepAt <= now - Looks up the next step for each enrollment
- Renders the template with the contact's properties
- Queues the email for sending
- Advances the enrollment to the next step (or marks it complete)
This means your sequence emails are never more than ~60 seconds late, even under load.
Practical Sequence Patterns
SaaS Onboarding (5 emails, 7 days)
| Step | Delay | Subject |
|---|---|---|
| 1 | Immediate | Welcome — here's how to get started |
| 2 | 1 day | Did you create your first project? |
| 3 | 2 days | 3 features most users miss |
| 4 | 4 days | How {{company}} uses [Product] |
| 5 | 7 days | Your trial ends soon — questions? |
Lead Nurture (3 emails, 5 days)
| Step | Delay | Subject |
|---|---|---|
| 1 | Immediate | Here's your download |
| 2 | 2 days | The problem most teams miss |
| 3 | 5 days | Ready to see it in action? |
Re-engagement (3 emails, 14 days)
| Step | Delay | Subject |
|---|---|---|
| 1 | Immediate | We miss you |
| 2 | 5 days | Here's what you're missing |
| 3 | 14 days | Last chance — should we remove you? |
Template Variables in Sequences
Just like campaigns, sequences support {{variable}} substitution and conditional blocks:
{{#if plan equals "free"}}
<p>You're on the free plan. Here's what Pro unlocks:</p>
{{/if}}
<p>Hi {{first_name}}, here's step {{step_number}} of your onboarding.</p>Monitoring Sequences
Track sequence performance via the API:
GET /api/v1/sequences/5/detailThis returns enrollment counts, completion rates, and per-step metrics. You can also see individual enrollment status:
GET /api/v1/sequences/5/enrollmentsEach enrollment shows: current step, status (active, completed, cancelled), and the full send log.
Common Mistakes
-
Too many emails too fast. Space your steps out. Nobody wants 5 emails in 2 days. For onboarding, 1 email per day for the first week is a good cadence.
-
No way to stop. Always handle unsubscribes. PushMail's suppression system automatically skips suppressed contacts, but consider adding early-exit logic (e.g., if they already converted, don't send the "upgrade" email).
-
Generic content. Use template variables. An email that says "Hi Sarah" and references their specific plan converts better than a generic blast.
-
Set and forget. Review your sequence metrics monthly. If step 3 has a 2% open rate, rewrite it or remove it.
-
Not testing the full flow. Enroll yourself as a test contact and experience every step. You'll catch tone issues, broken links, and awkward timing that you'd never see in a preview.
Sequences + Campaigns Together
The most effective email programs combine both:
- Sequence: Automated onboarding for every new signup
- Campaign: Monthly product update to all active users
- Sequence: Re-engagement drip for users inactive 30+ days
- Campaign: Feature launch announcement
Sequences handle the repeatable journeys. Campaigns handle the one-time moments. Together, they cover every touchpoint.
Ready to build your first sequence? Head to Sequences in your dashboard, or read the API reference.