sequences
Sequences

Sequences

Sequences are automated, multi-step email workflows — drip campaigns. Contacts enroll on an event, then advance through ordered steps (email, wait, condition, webhook) as the tick job fires every minute.

Read
5 min
Sections
5
Limits
Free 1 · Pro 10 · Business ∞

How sequences work

A sequence is a named workflow with an ordered list of steps. When a contact is enrolled, DataRunner schedules the first step. The SequenceTickJob runs every minute, picks up to 500 active enrollments whose next step is due, executes the current step, then advances the enrollment to the next step — or marks it completed when the list ends.

  • emailrender and send a templated email to the contact
  • waitpause the enrollment for a fixed delay before the next step
  • webhookPOST to an external URL (e.g. notify your CRM)
  • conditionbranch point (pass-through in v1; always continues)

Triggers

The triggerKind decides how contacts get enrolled:

  • manualyou enroll contacts explicitly via the UI or API
  • signupa new contact (e.g. from a form) is enrolled automatically
  • tag_addedenroll when a tag is applied to a contact
  • apienroll programmatically from your own systems

Create a sequence

http
POST /api/v1/sequences
Authorization: Bearer <token>
Content-Type: application/json

{
  "name": "Welcome Series",
  "triggerKind": "signup"
}

Add steps

Steps are ordered by their order field. An email step:

http
POST /api/v1/sequences/{id}/steps
Content-Type: application/json

{
  "kind": "email",
  "order": 1,
  "configJson": "{\"subject\":\"Welcome!\",\"body\":\"Hi {{contact_name}}, thanks for signing up.\"}"
}

A wait step pauses the enrollment for delaySeconds:

http
POST /api/v1/sequences/{id}/steps
Content-Type: application/json

{
  "kind": "wait",
  "order": 2,
  "configJson": "{\"delaySeconds\": 86400}"
}

Email step variables

Subject and body support Scriban-style {{var}} placeholders: contact_name, contact_address, and sequence_name.

Enroll a contact

http
POST /api/v1/sequences/{id}/enroll
Content-Type: application/json

{
  "contactId": "contact-uuid"
}
Compliance:every email send checks the unsubscribe flag, the suppression list, and adds RFC 8058 one-click List-Unsubscribe headers. Sends increment your workspace email quota.