Skip to main content

Sequencing

Multi-step outreach cadences — call, wait, branch on outcome, retry or text.

4 min read

A single AI call is one touch. Sequencing is the whole follow-up campaign around it — call, and if they don't pick up, wait an hour and try again; if they answer, text them the link. You draw that plan once on a canvas, and the engine runs it for every contact, picking up where each step leaves off.

The short version: a Finn is one conversation. A sequence is many steps over time — call → wait → branch on what happened → retry or send an SMS → repeat. It's the layer above your agents.


When you actually need it

You don't need a sequence to make calls — a deployment already does that. Reach for sequencing when the follow-up logic matters:

  • "Call them. If no answer, retry after an hour. After 3 tries, give up."
  • "If they pick up, text the payment link. If it goes to voicemail, try again tomorrow."
  • "Call → wait a day → call again with a different message."

If your outreach is "call this list once," skip sequencing. If it's "keep working each lead until something happens," this is the tool.


The pieces (nodes)

You build a sequence by dragging nodes onto the canvas and wiring them together:

NodeWhat it does
StartWhere the sequence begins. Every sequence needs one.
VoiceCalls the contact with a Finn you've already built, then waits for the result.
WaitPauses — minutes, hours, or days — before the next step.
ConditionSplits the path based on what happened (e.g. "did they answer?").
SMSSends a text. Supports {variables} like {contact_name}.
EndStops that path.

After every Voice step, the sequence remembers what happened so a Condition can branch on it:

  • call_answeredtrue / false
  • call_outcomeanswered, no_answer, voicemail, failed, …
  • call_voicemailtrue / false

Build your first cadence

Let's build the classic: call the borrower; if they don't answer, wait and retry; if they do, text the payment link.

  1. Go to Sequences in the sidebar → New sequence.
  2. Drag on: Start → Voice → Condition, then two paths off the Condition.
  3. Voice node → pick your Finn, set it to outbound.
  4. Condition node → add two branches:
    • Answered → rule: call_answered is true.
    • No answer → mark this one Default (the fallback).
  5. Wire Answered → SMS:
    • To: {contact_phone}
    • Message: Hi {contact_name}, here's your payment link: …
  6. Wire No answer → Wait (1 hour) → Voice (retry) → End.
  7. Wire the SMS → End.

When the graph is sound, flip the sequence to Live. The editor won't let you go live with missing pieces — it tells you exactly what's wrong.


Run it

Open the sequence → RunRun live. Drop in contacts, one per line:

9876543210
Jane Doe,9876543210
Jane Doe,9876543210,91
+14155551234

(name,phone,countryCode — the part with digits is the phone.) Each contact starts its own run. The History tab shows every run live:

  • running — moving through steps
  • waiting — paused on a call outcome or a wait timer
  • completed — reached the end
  • failed — a step errored with no fallback wired

Heads up: Run live places real calls and sends real texts. Each call is billable and checks your wallet first. Use the Preview path button for a dry walk that sends nothing.


How the timing works

  • 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 the timer is up (checked every ~30 seconds — so cadences are minute- and hour-grained, not to-the-second).
  • Runs are durable: they survive restarts and never double-fire, so a "wait 2 days" step is safe.

Tips & limits

  • One starting point per sequence for now.
  • Sending SMS needs a number on your account; otherwise the SMS step is skipped (and follows an error path if you wired one).
  • A failed text won't kill the cadence by default — the call flow keeps going.
  • One run = one contact. 500 contacts = 500 independent runs, each on its own timeline.

What's not here yet

You may see extra node types on the canvas — WhatsApp, API call, custom Function, Loops, Parallel branches, Calendar and CRM steps. Those are coming. For now, stick to Voice, Wait, Condition, SMS — if a sequence uses an unsupported node, going live will tell you which one to remove.

Start simple: one call, one retry, one text. That alone turns a cold list into a worked one.

Was this page helpful?

Still stuck or have feedback?

Email support@hirefinn.ai or use the chat bubble in the bottom-right corner — it's a Finn that knows the Academy cold.