schemas/sequence
The Sequence object returned by campaign/get_sequences_by_id, campaign/post_sequences_by_id, and sequence/patch_by_id.
A sequence is a conditional branch inside a campaign: prospects enter it when its trigger rule matches, and then receive the followups it holds (see schemas/followup).
| field | type | constraints | description |
|---|---|---|---|
| sequenceId | integer | int64 | Unique identifier. |
| name | string | max 64 | Descriptive sequence name. |
| shortName | string | max 8 | Short name used in reporting and the UI. |
| conditionReply | string | one of: All, Opened, NotOpened, NotReplied, Replied, RepliedInterested, RepliedNotInterested, RepliedNeutral, RepliedMaybeLater, Converted, NotConverted, Won, MeetingBooked, MeetingCompleted | Reply-based half of the trigger rule. |
| conditionAction | string | one of: Opened, Clicked, Bounced, Unsubscribed, Converted, Replied | Action-based half of the trigger rule. Reads back null on rows whose stored value is absent or unrecognized. |
| conditionOperator | string | one of: GreaterThanOrEqual, LessThanOrEqual, Equal, NotEqual, GreaterThan, LessThan | Comparison applied between the observed count and conditionTimes. Reads back null on rows whose stored value is absent or unrecognized. |
| conditionTimes | integer | 0–100 | How many times the condition must be met. |
| conditionExtra | boolean | Apply a further condition beyond the base one. | |
| conditionNegate | boolean | Invert the trigger rule. |
Create responses may omit conditionNegate; the list operation returns it.
The condition* fields are one rule
They are only meaningful read together: conditionReply/conditionAction name the condition, conditionTimes is how many times it must be met, conditionOperator is the comparison applied to that count, conditionNegate inverts the result, and conditionExtra adds a further condition on top.
So conditionTimes counts nothing by itself. It is a threshold whose subject is whatever that same sequence's conditionReply/conditionAction names — never an engagement metric in its own right. conditionTimes: 3 does not mean "3 opens"; read all six fields before reporting what a sequence does. Per-step engagement counts live on the followups instead.
A sequence that reads back conditionAction: null or conditionOperator: null is a valid, readable sequence — the stored value is simply absent or unrecognized. That null cannot be sent back: to leave such a field as it is, omit it from the update; to set it, send one of the listed values.
Not specified: how conditionReply and conditionAction combine when both are set (i.e. which one conditionTimes counts), or what condition conditionExtra adds.