Skip to main content
The script has two halves. The Steps to Follow are the proactive half: what the agent drives toward, in order, from hello to goodbye. The Conversational FAQ is the reactive half: what it does when the lead throws something at it. This page is about the first half. It is the part that decides whether a call feels like a conversation with a purpose or a voice reading a table of contents. The agent moves through the Steps to Follow: open, qualify, book, wrap up. When the lead asks how much it is, the agent answers from the Conversational FAQ, then goes back to the step it was on. The agent moves through the Steps to Follow: open, qualify, book, wrap up. When the lead asks how much it is, the agent answers from the Conversational FAQ, then goes back to the step it was on.

One rule before anything else

Objections are not steps. Neither are off topic questions. “Objection Handling”, “Address Concerns”, “Answer Questions” are never steps. A step is something the agent drives toward. An objection is something the lead throws at you, so it is reactive, and it lives in the Conversational FAQ. This is the single most common mistake in a step list, and it is worth holding the line on from the first draft, because a script with an “Objection Handling” step tends to go looking for objections.

The shape of a step

Every step is built the same way.
Three things make it work:
  • The header is a goal plus the state it reaches. Never a bare topic noun. “Open, reach the right person and land why you called” is a step. “Introduction” is a label.
  • A whole call is four to six steps, in order: open, qualify, optionally pitch or set up, the objective (book, transfer, tag), wrap. Twelve steps means you split the call by sentences. Two means you were too coarse.
  • Plain prose underneath. No arrows, no “go to step 4”, no flowchart symbols. The agent reasons in language, not diagrams.

A worked example

This is a complete, well formed Steps section for an outbound agent that qualifies and then transfers. It is the quality bar. Square brackets are the parts you fill in for your business, and they are never spoken aloud.
Every technique on this page is already in that example. Worth reading it once more with this list beside it:
  • Goal plus state headers on all four steps.
  • A prose briefing under each, with the conditions written as normal English (“On an outbound call… On an inbound call…”, “If they’re outside those areas… otherwise move on”).
  • Guide lines on the moments that carry the call: the opener, the hand off, the wrap. Step 2 has none on its header, because it itemizes instead.
  • Step 2 collects four things one at a time, with the order pinned.
  • Step 2 marks the service area list as internal, never to be read aloud.
  • Step 1 puts a wait in words between two lines that are separate turns.
  • Branches written on the step they affect, not in a routing block.
  • No objection step. No backup plan step. The genuine next move, calling back later, is folded into Wrap.

A step is a goal, not a label

One step is one goal the agent drives toward, plus the state that means the goal is met. It is not a sentence and not a single utterance. Splitting a script by utterances is exactly why scripts turn to mush: the number of turns changes every call, the goal does not. Two tests:
  • The goal test. Can you name one thing the agent is trying to get or do here? One goal is one step.
  • The exit test. Can you write a single “done when”? Two different answers means two steps. You do not have to print “done when” anywhere, because the state phrase in the header already is it: “get them willing to keep talking”.
A step can hold several asks if they share one goal. Qualify is one step even when it asks four things, because those are beats inside a single goal.

What a weak draft produces

  1. Introduction
  2. Qualification
  3. Objection Handling
  4. Transfer
  5. Wrap-up

What you write instead

  1. Open, reach the right person and land why you called
  2. Qualify, find out if we can actually help
  3. Hand off, get the qualified caller onto a specialist
  4. Wrap up, confirm the next step and close cleanly
A bare noun tells the agent the topic but not what it is trying to achieve or when it is finished, so it improvises a one liner and moves on. A header with no briefing under it is not a finished step.

Branches belong in prose

Write every branch as plain “if X, then Y”, with the reason baked in. The reason is what lets the agent handle the cases you did not spell out. “If they’re outside our area, let them down gently and wrap up, there’s no point handing off someone we can’t serve” covers a hundred variations that a bare rule would not. There are three shapes, and each is written on the step it affects:
Key every condition to something the agent can see right now: a variable, or what the lead just said. Never to a fact it would have to remember from an earlier step. Voice models do not hold derived state across turns reliably. Facts it can check again work, remembered ones do not.

Guide lines, and what they are really for

Under a step, give one example line, written as e.g. "...". It is a guide, not a locked script, and the agent delivers it naturally rather than reading it. Its real job is not wording. It is observability. When a call goes wrong you put the transcript next to the guide line and you can see immediately which of three things happened: the wording was wrong, the delivery drifted, or the step never fired at all. Without a guide line you cannot tell those apart. Put one on every moment that carries the call forward: the opener, the pitch, the objective step, the wrap. Skip it on lines the agent already nails (“ask their city”) and on a step that itemizes instead. Do not put one on every single line or the script starts to sound recited. But if a moment carries the call and has no guide line, it is under specified.

End the guide line with a question

Every important spoken line should end with exactly one forward moving question. That question is the turn boundary. Once the agent asks a question it stops and waits, which the platform already handles for you, so a question is how you hand control back to the lead without writing any “stop” instructions.
For the pitch, ask the question that moves them toward the objective. For the booking or transfer or tag step, ask the question that starts the mechanic. For qualification, each item is its own short question, asked one at a time.

The opening has two parts

An opening is allowed to contain two sections, but they must not be merged:
  1. Identity confirmation. Confirm you have the right person, or on an inbound call, understand why they rang.
  2. Context of the call. Say who you are, why this call is happening, and what they showed interest in.
The identity question only stops the identity section. It does not also stop the context section. So if the context is followed by a pitch, a qualification, a booking, a transfer or a tag, the last spoken line of the context has to end with a question that gets permission or engagement.
If someone reports “it goes straight into the pitch” or “it just keeps going”, this is almost always the cause, and the fact that the pitch is numbered as its own step is not a defence. Look at the last spoken line of the section BEFORE it. If that line is a statement, make it a question.
Do not write pause instructions in brackets, like “(Pause…)” or “(Wait for response…)”. Brackets inside a quote are easy for a voice agent to read as words to say. If the pause matters, write it as ordinary prose outside the quote: “Pause for their answer before moving to the pitch.”

Mark what is internal and what is spoken

This is the highest leverage line on the page. The agent cannot always tell an internal instruction, data it should use to decide something, from a line to say out loud. Drop a list of service areas, accepted plans, or prices into a step and it will recite the whole thing down the phone at a real person. So whenever a step carries reference data, mark it and name the prohibition:
One mislabelled list is the difference between “so whereabouts are you based?” and the agent reading eight place names at somebody. Any time you write a list, a set of criteria, or a number into a step, ask whether it is for the agent to use or to say. If it is to use, label it.

Stacking two lines that are separate turns

A line break does not mean “wait here”. Two lines next to each other read as one turn, so the agent says both together. Most of the time the one question per turn rule handles this for you. You only need to act when you deliberately stack two quoted lines that are meant to be separate turns. Put the wait into words, as a short clause between them:
No ellipsis, no arrow. The clause is the turn boundary. Use it only where you stack separate turn quotes. Scattering “wait” and “stop” through the script puts you back to babysitting every line.

The objective step changes with the job

In the worked example, step 3 is a hand off. That step is the call’s objective, and it is the only one that changes with what the agent is for. Everything around it, open and qualify and wrap, keeps the same shape. Not every agent books. Check what this one is for, on Campaign types and capabilities, before you write the objective step.

What not to write

There is a layer underneath your script that runs on every call, and it already owns: sounding human, pacing, one question per turn, speech that reads well aloud, handling the first reaction (wrong number, busy, not interested, “are you AI”), persona and tone, acknowledgements, and the conversion mechanics. Do not restate any of it. It bloats the script and, worse, it can conflict with the layer and make the agent hesitate. Your Steps carry this campaign’s own flow and nothing else.

Shipping it

The Steps are the first section of the script. The Conversational FAQ is the second. On a first build, propose the step list, just the goal headers in order, and get agreement on the shape before writing the briefings. Then write each step out in full: header, prose briefing, and guide lines on the moments that carry the call.

In the API