Sequences

Drip campaigns. A series of emails sent on delays from when a contact joins.

What sequences do

A sequence is an ordered list of emails, each with a delay relative to enrollment. Once a contact joins (manually, via tag trigger, or via API), they receive each step at the configured offset.

Sequence: "Welcome series"
  Step 1: Welcome — immediately
  Step 2: Onboarding tips — 1 day
  Step 3: Feature deep-dive — 3 days
  Step 4: Customer story — 7 days
  Step 5: Pricing reminder — 14 days

Build a sequence

  1. Brand → Sequences → New sequence.
  2. Click + Add step. Each step is an email with a delay (immediately / N minutes / N hours / N days).
  3. Set the enrollment trigger: one or more tags. Any contact who gains those tags auto-enrolls.
  4. Activate the sequence. Existing contacts with the trigger tag enroll immediately; future contacts enroll on tag-add.

Triggers

  • Tag-based: when a contact gets tag X, they enroll. Most common pattern. Wire form submissions, integration events, or manual tags to this.
  • Manual: from the contact detail page, click "Enroll in sequence".
  • API: via POST /api/public/sequences/:apiKey/enroll — see Public API.
  • Integration action: any integration's "Enroll in sequence" action.

How advancement works

The cron loop runs every minute. It:

  • Looks for enrollments whose next_send_at is in the past.
  • Enqueues a send_sequence_email job per due enrollment.
  • Computes the next step's delay and updates next_send_at.

Auto-unsubscribe handling

If a contact unsubscribes mid-sequence, future steps stop. They stay enrolled (so they re-resume if they re-subscribe) but no more emails go out unless they opt back in.

Test before activating
Use a test contact (e.g. yourself with a sub-address like [email protected]) and manually enroll. Watch the steps fire on their configured delays.