What a sequence is
A deployment makes calls. A sequence decides what happens after each call. You draw the plan once on a canvas, and the engine runs it independently for every contact, resuming where each step left off.
One Finn is one conversation. One sequence is many steps over time: call, wait, branch on the outcome, retry or text, repeat.
Reach for sequencing when the follow-up logic matters:
- Call. If no answer, retry after an hour. After three tries, stop.
- If they pick up, text the payment link. If it hits voicemail, try tomorrow.
- Call, wait a day, call again with a different message.
If your outreach is "call this list once," you do not need a sequence. Configure retries on the deployment instead (see outbound-campaigns).
Nodes
You build sequences in the dashboard under Sequences in the sidebar. There is no API for creating or running sequences.
| Node | What it does |
|---|---|
| Start | Entry point. Every sequence needs one. |
| Voice | Calls the contact with an existing Finn, then waits for the result. |
| Wait | Pauses for minutes, hours, or days. |
| Condition | Splits the path on what happened. |
| SMS | Sends a text. Supports variables such as {contact_name}. |
| End | Stops that path. |
Other node types appear on the canvas: WhatsApp, API call, custom Function, Loops, Parallel branches, Calendar and CRM steps. They are not implemented yet. If a sequence uses one, going live fails and names the node you have to remove.
Branching on call outcome
After every Voice step the run stores what happened, and a Condition can read it.
| Variable | Values |
|---|---|
call_answered | true, false |
call_outcome | answered, no_answer, voicemail, failed, and others |
call_voicemail | true, false |
See call-outcomes for what each outcome means.
Build a retry cadence
Call the contact. If they answer, text the link. If not, wait and retry.
- Sequences → New sequence.
- Drag on Start → Voice → Condition, then two paths off the Condition.
- On the Voice node, pick your Finn and set it to outbound.
- On the Condition node, add two branches: one named Answered with the rule
call_answeredis true, and one named No answer marked Default. - Wire Answered → SMS. To:
{contact_phone}. Message:Hi {contact_name}, here's your payment link: ... - Wire No answer → Wait (1 hour) → Voice (retry) → End.
- Wire SMS → End.
- Flip the sequence to Live.
The editor blocks going live with a broken graph and tells you what is missing. Always mark one Condition branch as Default. A run that reaches a Condition and matches no branch has nowhere to go.
Running it
Open the sequence → Run → Run live. Paste contacts one per line:
9876543210
Jane Doe,9876543210
Jane Doe,9876543210,91
+14155551234
The format is name,phone,countryCode, and the field with digits is the phone.
Run live places real calls and sends real texts. Each call is billable and checks your wallet before dialing. Use Preview path for a dry walk that sends nothing.
Each contact starts its own run. 500 contacts means 500 independent runs, each on its own timeline. The History tab shows every run:
| State | Meaning |
|---|---|
| running | Moving through steps. |
| waiting | Parked on a call outcome or a wait timer. |
| completed | Reached an End node. |
| failed | A step errored and no fallback path was wired. |
Timing
A Voice step parks the run as waiting until the call finishes, then fills in the call_* values for the next Condition.
A Wait step resumes shortly after its timer expires. The scheduler checks roughly every 30 seconds, so cadences are minute- and hour-grained, not to-the-second. Do not build a sequence that depends on a step firing at an exact clock time.
Runs are durable. They survive restarts and do not double-fire, so a "wait 2 days" step is safe to rely on.
Limits and failure modes
- One starting point per sequence for now.
- SMS requires a number on your account that can send texts. Without one the SMS step is skipped, and follows an error path if you wired one. See number-capabilities.
- A failed text does not kill the run by default. The call flow continues.
- Wait steps do not enforce calling hours. A Wait of 14 hours off an evening call can land the retry in the middle of the night. Choose intervals that keep retries inside the hours you want, or keep the initial dial early enough that the arithmetic works out.
- A run that fails stays failed. There is no automatic retry of the sequence itself, only the retries you drew.
Related
- outbound-campaigns — single-pass dialing with a retry policy, no canvas.
- agents-voicemail — what the Finn does when a machine answers.
- concurrency — how many of those 500 runs dial at once.
- call-outcomes — outcome values a Condition can branch on.