> ## Documentation Index
> Fetch the complete documentation index at: https://docs.teamfollowup.ai/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Use the public API base URL: https://api.teamfollowup.ai/api.
> Authenticate public API requests with Authorization: Bearer YOUR_API_KEY.
> Use product-owned terms: agents, campaigns, projects (GoHighLevel sub-accounts), contacts, calls, outcomes, skills, cadences, phone numbers.
> Scope requests by locationId rather than projectName.
> Read the guide linked from each API reference group before recommending an endpoint.

# Writing the Steps to Follow

> The Steps are the proactive spine of the call: what the agent drives toward, in order. Here is the shape that works, and the four ways a step list goes wrong.

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](/agents/writing-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.

<img className="block dark:hidden" src="https://mintcdn.com/teamfollowupai/QX4GFVxyRVTtiDDs/images/agents/steps-and-faq-light.gif?s=6ea5aa17aa67acb881ff299641cfdca5" alt="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." width="1000" height="440" data-path="images/agents/steps-and-faq-light.gif" />

<img className="hidden dark:block" src="https://mintcdn.com/teamfollowupai/QX4GFVxyRVTtiDDs/images/agents/steps-and-faq-dark.gif?s=48e8a180fcee43ecb745b8b9a221c0de" alt="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." width="1000" height="440" data-path="images/agents/steps-and-faq-dark.gif" />

## 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](/agents/writing-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.

```
N. <Goal word> - <the state you are driving toward in this step>.
<Two or three plain sentences: how to do it, plus any "if X, then Y"
conditions written as normal prose.>
e.g. "<one guide line on the major scripted moments>"
```

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.

```
# Steps to Follow

1. Open - reach the right person, say who you are and why you're calling, and get them willing to keep talking.
On an outbound call, first check you've got the right person, then introduce yourself and land the reason: they asked about [what they enquired about], and you're following up. On an inbound call, thank them for calling, say who you are, and ask how you can help. Keep it warm and short - you're opening the door, not pitching yet.
e.g. (outbound):
"Hey - is this {{first_name}}?"
Wait for them to confirm it's them, then:
"Hi {{first_name}}, it's [agent] from [business]. You put in about [the thing], so I'm just following up to get that sorted for you. Have you got a minute?"
e.g. (inbound): "Hey, thanks for calling [business] - this is [agent]. how can I help?"

2. Qualify - work out whether this is someone we can actually help, before you take up a specialist's time.
Collect these one at a time, in this order - phrase them your own way, but ask plainly, one simple question each:
- What they're after - lead with this, before anything else. e.g. "so I can point you the right way - what were you hoping to get sorted?"
- [the main qualifying fact, e.g. their situation or timeline] - just ask it straight.
- Whether you're speaking to the person who actually makes this decision.
- Where they're based - ask as one open question ("whereabouts are you?"). NEVER read the list of areas we cover out loud - it's only for you to check their answer against [area A, area B, area C, and so on].
If they're outside those areas, or [the disqualifier], we can't help - let them know warmly and wrap up. Otherwise, move on.

3. Hand off - get the qualified caller to a specialist while they're still engaged.
Once they qualify, set the transfer up in a sentence: a quick word with [who they're transferred to], who can actually [what that person does for them], no obligation. Then make the connection. If they're clearly keen already, skip the setup and just bring the person on; if they're hesitant, give them one reason it's worth the couple of minutes before you offer.
e.g. "perfect - quickest thing is I get you straight onto one of our [specialists], they'll sort the exact details with you. give me one sec to bring them in?"

4. Wrap up - close cleanly, whether or not the hand-off happened.
If the specialist isn't reachable, don't leave them hanging - grab the best time to call back and tell them someone will. Either way, check there's nothing else they need before you end - don't hang up until they've said they're all set.
e.g. "no worries at all - when's a good time to catch you? I'll make sure someone calls you back then - anything else before I let you go?"
```

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.

<CardGroup cols={2}>
  <Card title="What a weak draft produces" icon="circle-x">
    1. Introduction<br />
    2. Qualification<br />
    3. Objection Handling<br />
    4. Transfer<br />
    5. Wrap-up
  </Card>

  <Card title="What you write instead" icon="circle-check">
    1. Open, reach the right person and land why you called<br />
    2. Qualify, find out if we can actually help<br />
    3. Hand off, get the qualified caller onto a specialist<br />
    4. Wrap up, confirm the next step and close cleanly
  </Card>
</CardGroup>

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:

| Shape | What it does | In the example |
| - | - | - |
| **End early** | The step's exit closes the call, because the lead is disqualified or a wrong fit | Step 2, out of area |
| **Skip a step** | A guard at the top of a step | Step 3, skip the setup if they are already keen |
| **Adapt in place** | The step flexes without changing shape | Step 3, a hesitant lead gets one extra reason |

<Warning>
  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.
</Warning>

## 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.

<CodeGroup>
  ```text Ends as a statement, so it keeps talking theme={"dark"}
  e.g. "honestly, this is built to help you follow up faster and book more demos."
  ```

  ```text Ends as a question, so it waits theme={"dark"}
  e.g. "honestly, this is built to help you follow up faster and book more demos - want to find a time to see it?"
  ```
</CodeGroup>

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.

<CodeGroup>
  ```text Context ends flat, so the agent carries on into the pitch theme={"dark"}
  "Is this {{first_name}}?"
  Wait for them to confirm it's them, then:
  "awesome, this is Emma with EvolvE. I'm reaching out because you checked us out online and I wanted to follow up."
  ```

  ```text Context ends with a question, so the lead gets the floor theme={"dark"}
  "Is this {{first_name}}?"
  Wait for them to confirm it's them, then:
  "awesome, this is Emma with EvolvE. I'm reaching out because you checked us out online and I wanted to follow up. Have you got a quick minute?"
  ```
</CodeGroup>

<Tip>
  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.
</Tip>

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:

```
Where they're based - ask as one open question ("whereabouts are you?").
NEVER read the list of areas we cover out loud - it's only for you to check
their answer against [area A, area B, area C].
```

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:

```
"Hey - is this {{first_name}}?"
Wait for them to confirm it's them, then:
"Hey {{first_name}}, it's [agent] from [business], following up on your enquiry."
```

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.

| Agent's job | The objective step |
| - | - |
| Booking | "Book, get them onto a real appointment time." Offer only the times the booking flow returns, then lock one in. |
| Transfer | "Hand off, get the qualified caller onto a specialist." |
| Tagging | "Tag, get the one piece of info the tag needs, confirm it, set it." |

Not every agent books. Check what this one is for, on [Campaign types and
capabilities](/agents/agent-types), 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](/agents/writing-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

* [Get agent](/api-reference/agents/get-agent) with `view=script` reads the script
* [Update agent](/api-reference/agents/update-agent) writes it back as `prompt`, in one piece
* [The prompt](/agents/prompt) maps every script field
