← Back to blog

The Developer's Guide to Drip Sequences

PushMail Team··3 min read

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:

  1. Finds all active enrollments where nextStepAt <= now
  2. Looks up the next step for each enrollment
  3. Renders the template with the contact's properties
  4. Queues the email for sending
  5. 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)

StepDelaySubject
1ImmediateWelcome — here's how to get started
21 dayDid you create your first project?
32 days3 features most users miss
44 daysHow {{company}} uses [Product]
57 daysYour trial ends soon — questions?

Lead Nurture (3 emails, 5 days)

StepDelaySubject
1ImmediateHere's your download
22 daysThe problem most teams miss
35 daysReady to see it in action?

Re-engagement (3 emails, 14 days)

StepDelaySubject
1ImmediateWe miss you
25 daysHere's what you're missing
314 daysLast 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/detail

This returns enrollment counts, completion rates, and per-step metrics. You can also see individual enrollment status:

GET /api/v1/sequences/5/enrollments

Each enrollment shows: current step, status (active, completed, cancelled), and the full send log.

Common Mistakes

  1. 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.

  2. 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).

  3. Generic content. Use template variables. An email that says "Hi Sarah" and references their specific plan converts better than a generic blast.

  4. Set and forget. Review your sequence metrics monthly. If step 3 has a 2% open rate, rewrite it or remove it.

  5. 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.