Skip to main content
The call is done. The agent has decided what happened and written it down. See What your agent records. Now the campaign acts on it. This is where a plain phone call turns into real follow-up.

Outcomes are buckets

Think of every call dropping into a labelled bucket:
  • Booked. They set a time.
  • Transferred. They got handed to a person.
  • Callback. They asked to be reached later.
  • Asked for info. They wanted details, not a booking yet.
  • Needs a human. A person should step in.
  • Opted out. They asked you to stop.
  • No answer or voicemail. Nobody picked up.
Which buckets exist depends on the agent’s capabilities. An agent with Appointment Booking has a “booked” bucket, one with Live Transfer has a “transfer” bucket, and so on. The full list, with the name each bucket goes by in the API, is in Every outcome, by name. Detectors can trigger additional follow-up for conditions specific to your business.

The platform already handles the basics

You don’t start from zero. On every call, the platform does the groundwork: it records what happened, keeps your dialler moving, and raises alerts when a transfer fails. On a GoHighLevel sub-account it also tags each person by the outcome: booked, opted out, transferred. So your follow-up rules are the extra touches you add on top, not a list you have to build from scratch. A brand-new campaign with no rules of your own still tags people correctly after every call.
Because the platform tags people automatically, you don’t need to re-create those tags yourself. Add your own labels and actions for the extra steps you want, and let the built-in tagging do its job.

The automatic labels

On a sub-account that uses GoHighLevel these are the labels the platform applies for you, so you can trigger your own follow-up off them. On one that keeps its contacts here the same outcomes are on the contact and the call record instead: Use these as triggers. For example, when someone gets tfu_ai_standby, that’s your cue to send information and check back in a few days. Not every outcome has an automatic label: voicemail and no actionable result do not receive one.

You decide what each bucket does

For each outcome, you set the follow-up. It’s a set of “when this happens, do that” rules:
  • When they ask for info, text them your booking link.
  • When they book, send a friendly confirmation.
  • When they need a human, label them so your team picks it up.
  • When it’s a voicemail, leave a note on the contact.
You chain simple actions: update a field, book the appointment, and, on a GoHighLevel sub-account, add a note, send a text or an email, add or remove a label, or move them in your pipeline. To start one of your own GoHighLevel workflows, add a label that workflow listens for. Small actions, wired to the outcome that should trigger them. The rules live in the campaign’s workflow, one branch per outcome, and you can branch on the details the agent captured, so “asked for info and budget over ten thousand” can do something different from plain “asked for info”.

Campaign workflows

The graph, the node types, the conditions, and how to edit it safely while the campaign is live.

These run after the call, and only after it

Follow-up actions fire once the call has ended. They cannot do anything while the caller is still on the line, and nothing here can stand in for something that has to happen during the call.
  • Transferring is not a follow-up action. The “needs a human” outcome means the call was marked for someone to pick up afterwards. It does not connect anybody. A live handoff is an ability on the agent.
  • Booking here is not booking on the call. If you want the agent to offer times and book while you have them talking, that is the booking ability, not a follow-up action.
  • The script can’t do any of this either. What you write in the script is only what the agent says. It cannot apply a label, send a text, move a stage, or touch your CRM, so writing “then tag them as booked” into the script does nothing at all. Wire it here instead.
The rule going the other way is just as firm, and it’s the one people get wrong more often: if something doesn’t have to happen during the call, put it here. An action here runs every time that outcome happens, off what actually happened on the whole call, and it can branch on a value. A mid-call ability runs only when the agent reaches for it. Labels that record an outcome, notes, stage moves and follow-up messages all belong here. See during the call, or after it for where the line sits.

In the API