Docs/Sequences

Sequences

Sequences are native, multi-step drip campaigns that reach a contact over time. Chain together email, SMS, and conditional branch steps, put a delay in front of each one, then enroll people and let Modality deliver the steps on schedule. This guide covers step types, delays, the sequence lifecycle, how contacts get enrolled, and the full enrollment lifecycle including pause, resume, and unenroll.

Sequences are a Pro feature. Enrolling contacts on a Free workspace is blocked with an upgrade prompt (HTTP 402). You can still design a sequence and its steps before upgrading.
The Sequences list showing each sequence with its status badge (DRAFT / ACTIVE / PAUSED) and its step and enrollment counts.
The Sequences list showing each sequence with its status badge (DRAFT / ACTIVE / PAUSED) and its step and enrollment counts.

What Is a Sequence?

A sequence is an ordered list of steps. Each contact you add to a sequence becomes an enrollment that walks through those steps one at a time. Before each step runs, the enrollment waits for that step's configured delay. Delivery is driven by a scheduled processor (a cron), so you don't send anything by hand, you build the steps once and enroll people, and Modality fires each step when it comes due.

  • Steps, the ordered actions (email, SMS, or a condition gate), each with its own delay.
  • Enrollment, one contact's progress through the sequence, tracked by a current-step pointer and a next-run time.
  • Processor, the scheduled job that finds due enrollments, runs the current step, and advances them.

Creating a Sequence

  1. 1

    Open Sequences

    Go to Sequences in the sidebar. The list shows every sequence in your workspace with its status and its step and enrollment counts.

  2. 2

    Create a new sequence

    Give it a name and an optional description. New sequences start in DRAFT so you can build and edit steps without any contact receiving a message.

  3. 3

    Add your steps

    Open the sequence and add steps in order (see Step Types below). Set the delay in front of each step.

  4. 4

    Activate it

    When the steps are ready, set the sequence to ACTIVE. Only active sequences are processed, an enrollment never advances while its sequence is in DRAFT, PAUSED, or ARCHIVED.

Sequence Status: Draft, Active, Paused

Every sequence has one of four statuses. The status is the master switch for whether its steps are delivered:

  • DRAFT, the default for a new sequence. You can add, edit, reorder, and remove steps freely. No enrollment is ever processed while a sequence is a draft.
  • ACTIVE, live. The processor picks up due enrollments in this sequence and runs their steps. This is the only status in which steps are sent.
  • PAUSED, temporarily stopped. Enrollments stay exactly where they are and nothing is sent; set it back to ACTIVE to resume from where each contact left off.
  • ARCHIVED, retired. Treated like paused for delivery (nothing is processed), and kept out of the way.
Pausing the whole sequence stops delivery for everyone in it at once. To stop just one contact, pause or unenroll that individual enrollment instead (see Managing Enrollments).

Step Types

A sequence supports three kinds of step. Add a step from the sequence editor, pick its type, set its delay, then fill in the type-specific content.

Email steps

An email step has a subject and HTML content, edited with the same visual email editor used for campaigns. When the step runs, Modality:

  • Renders merge tags in the subject and body, profile fields ({{firstName}}, {{company}}), linked-company fields ({{company.*}}), and your custom fields ({{custom_key}}).
  • Adds a working unsubscribe link plus one-click List-Unsubscribe headers, minting an unsubscribe token for the contact if one doesn't exist yet.
  • Counts against your workspace's marketing-send allotment (the send is refunded automatically if it fails).

SMS steps

An SMS step carries a text message (with the same merge-tag support). It sends through your workspace's Twilio integration, your own connected Twilio if you have one, otherwise the platform sender metered against your SMS quota. A message is only sent when the contact has both a phone number and SMS consent; if either is missing the step is skipped for that contact but the enrollment still advances, so nobody gets stuck.

Adding an SMS step requires an active Twilio integration, the editor blocks saving an SMS step until Twilio is connected, the same gate the campaigns builder uses.

Condition steps

A condition step is a gate: it doesn't send anything, it decides whether the contact continues. When the step runs, Modality evaluates the condition against the contact:

  • If the condition is met, the enrollment advances to the next step as normal.
  • If the condition is not met, the enrollment exits the sequence, it's marked completed with the reason condition_not_met, and no further steps run.

Conditions reuse the automations engine's evaluator. Choose a field, has tag, status, custom status, lead score, or email, an operator (equals, does not equal, contains, greater than, less than, exists, does not exist), and a value where the operator needs one.

Adding a step to a sequence, switching between the Email, SMS, and Condition tabs in the step dialog, showing the email subject/body editor, the SMS message field, and the condition field/operator/value pickers.

Per-Step Delays

Each step carries a delay expressed in days and hours (hours 0–23). The delay is the wait before that step runs, measured from when the previous step completed (or, for the first step, from the moment of enrollment).

  • The default for a new step is 1 day, 0 hours.
  • Set both days and hours to 0 and the step runs immediately when the enrollment reaches it, useful for a first step that fires right on enrollment.
  • Delays chain: a 0-day step followed by a 2-day step means the second message goes out two days after the first.
Delivery is driven by a scheduled processor that runs on an interval (roughly every 5–15 minutes), so a step fires on the first run after its delay elapses, treat delays as "at or shortly after," not to-the-second timing.

Ordering and editing steps

  • Steps run in position order, top to bottom.
  • Adding a step appends it to the end by default, or you can insert it at a position, later steps shift down to make room.
  • Removing a step re-indexes the remaining steps so there are no gaps.
  • You can edit a step's type, content, and delay at any time; changing an email step to another type clears its old subject/body.

Enrolling Contacts

There are two ways a contact enters a sequence:

  • Manually, open the sequence, use the Enroll dialog to search your People and select one or more contacts, and enroll them.
  • From an automation, add the Enroll in Sequence action to any automation rule. When the rule fires for a contact (for example, a tag is added or a form is submitted), that contact is enrolled automatically. This is how you wire triggers like "tag added" or "form submitted" to a drip.

On enrollment, the contact is placed at step 0 and the first step's delay is scheduled. A couple of guards keep enrollments clean:

  • If the contact is already actively enrolled, they aren't double-enrolled.
  • Re-enrolling a contact who previously finished resets them to the beginning (step 0, retry counters cleared).
  • Enrolling into a sequence with no steps completes the enrollment immediately (there's nothing to send).
The Enroll dialog on a sequence, a contact search box with several People selected as chips, ready to enroll.
The Enroll dialog on a sequence, a contact search box with several People selected as chips, ready to enroll.

Enrollment Lifecycle

Each enrollment carries a status that reflects where the contact is in the drip. There are five:

  • ACTIVE, moving through the steps. The processor runs the current step when its delay is up, then schedules the next.
  • COMPLETED, reached the end of the sequence (or exited early at a failed condition gate, or was manually unenrolled). Terminal; kept for history.
  • PAUSED, held. Set manually, or automatically when a step's send keeps failing (see Delivery & retries). Resuming returns it to ACTIVE.
  • UNSUBSCRIBED, the contact opted out. Reached when the contact's status is unsubscribed, or when an email send is suppressed because the recipient bounced or unsubscribed. Terminal.
  • BOUNCED, reserved for hard-bounced recipients.

The sequence header rolls these up into live counts, active, completed, paused, bounced, and unsubscribed, so you can see the shape of an enrollment base at a glance.

How a step is processed

  1. The processor selects ACTIVE enrollments whose next-run time is due, but only within ACTIVE sequences (batched, so large audiences drain across several runs).
  2. If the contact has unsubscribed, the enrollment is moved to UNSUBSCRIBED and stops.
  3. The current step runs by type, email/SMS send, condition gates.
  4. On success, the current-step pointer advances and the next step's delay is scheduled; reaching the last step marks the enrollment COMPLETED.

Delivery & retries

  • If a send fails transiently, the step is retried with a back-off (about 15 minutes). After a few failed attempts the enrollment is paused with the reason send_failed so it stops re-firing; resuming grants a fresh attempt budget.
  • If an email is suppressed (the recipient bounced or unsubscribed), the enrollment goes straight to UNSUBSCRIBED, no retries.
  • If you're temporarily out of marketing-send quota, the step stays due and is retried on the next cycle rather than being lost.

Screenshot: the Enrollments tab of a sequence listing contacts with their status pills (Active / Completed / Paused / Unsubscribed) and the per-row action menu.

Demo GIF / screenshot to be added

Managing Enrollments

Switch to the Enrollments tab on a sequence to see everyone in it and act on individual contacts. Each row's action menu offers three controls:

  • Pause, hold this one contact where they are (reason manual). Nothing is sent to them until you resume; everyone else keeps flowing.
  • Resume, return a paused contact to ACTIVE and run their current step on the next cycle. Resuming also resets the retry counter, so a resume after a send failure starts fresh.
  • Unenroll, stop the drip for this contact for good. The enrollment is marked COMPLETED (reason unenrolled) rather than deleted, so the history is preserved.
Unenrolling and completing are both terminal, the contact won't receive further steps. To start someone over, re-enroll them, which resets them to the first step.