Sequences
Realign Sequence Enrollments
Move waiting enrollments to the start of a changed sending window without cancelling or re-enrolling them
POST
Realign Sequence Enrollments
Realign Sequence Enrollments
Changing a live sequence’s sending window deliberately leaves contacts who are already waiting on an email-bound delay step alone: they keep the wake-up time their delay produced. That means a widened window never reaches them, and a narrowed window pushes them to the next allowed day - a full extra cycle on a weekly sequence. This endpoint pulls those waits forward instead. It never cancels or re-enrolls anyone.Guarantees
- A wait only ever moves earlier, never later.
- A wait never moves to a different local day in the window’s timezone, so nobody changes weekly cycle.
- A wait never moves earlier than now, so nothing is sent retroactively.
- Per-step “wait until weekday” gates are respected: a contact is never moved earlier than the step’s own window opening.
- Sequence windows never advance SMS, webhooks, branches, or other non-email actions.
- Running it twice is a no-op. Waits already sitting at their opening report
already_at_window_start.
Request
string
required
Sequence ID.
array
Step IDs to limit realignment to. Use
nodeIds from Get
Sequence or currentNodeId values from List
Enrollments. Defaults to every
step when omitted; when provided, it must contain at least one non-empty ID.array
Up to 500 subscriber IDs to limit realignment to. Defaults to every waiting
contact when omitted; when provided, it must contain at least one non-empty
ID.
string
Opaque continuation cursor. When a response has
hasMore: true, pass its
nextCursor here to continue after the enrollments already scanned.boolean
When
true (the default), returns the new wait times without writing them.
Set it to false to queue a background apply job.Why an enrollment did not move
unchangedReasons counts each reason:
Paging through a large sequence
Each job moves at most 1,000 enrollments and inspects at most 20,000. An applied request returns HTTP 202 with ajobId; poll GET /api/v1/sequences/{sequenceId}/enrollments/realign-sending-window/jobs/{jobId} until it completes. When the completed result has hasMore: true, pass its nextCursor back as cursor to queue the next bounded job.
Responses
Realign Sequence Enrollments