Skip to main content
Every call leaves behind a small record, and it is the most useful thing the call produces. That record has two parts: the outcome (what happened) and the details (the facts worth keeping). Get both right and every follow up downstream gets sharper.

The outcome: what happened

The agent sorts each call into one clear result. Did they book? Ask for a callback? Ask you to stop calling? This one word summary is called the outcome, and it’s how the campaign knows what to do next. See Campaign workflows. Some outcomes are decided for you and always work the same way. Four are yours to describe in your own words, so the agent knows exactly what each one means for your business: For each of these, you write a short line telling the agent when it applies. Plain language is best: “Opt out means the person clearly asked us to stop calling.” In the API these lines are analysis.outcomes on the agent. Get campaign shows them under outcomes beside the defaults, and Update campaign changes one at a time with outcomes.<key>.prompt. Describe what the person actually said or agreed to. Editing this wording changes how an existing result is recognised; it does not create a new outcome. Change one prompt, save it, and review a test call before refining it further.

Your capabilities decide which outcomes exist

Not every outcome is available to every agent. The ones that describe something the agent did only exist when the agent can actually do it: The rest describe the call rather than the agent’s action, so they are always available. Add a capability and its outcome appears. Remove it and the outcome goes with it, along with whatever your campaign had routed off it. So it is worth settling the capabilities before you build out the follow-up.

How the campaign groups them

On the campaign’s outcome cards, every result sits under one of three fixed groups: The routes under Nurture: Inbound campaigns do support callbacks: someone who calls your business can still ask to be called back later. “No outcome” and “no answer” describe different situations but share one route. Someone may answer and have a conversation without agreeing to a next step; that call still belongs here. You cannot add, rename or remove the standard groups and routes. You can adjust the four detection prompts above and choose the follow-up actions attached to each result.

Every outcome, by name

The same outcome shows up under three names depending on where you read it: the constant a workflow branches on, the type on a contact’s disposition, and, on a GoHighLevel sub-account, the automatic tag applied in the CRM. On a call record the outcome is the disposition object: its type, a human label, a color, and the tag when one was applied.

The details: your AI-generated fields

Beyond the outcome, the agent can pull specific facts out of the call. These are your AI-generated fields: the agent generates each one from what was actually said. It always saves the basics, like a short summary, and on top of that you can ask it to grab whatever else you care about. You add an AI-generated field by describing it in plain English:
  • A name for it (like “roof age”).
  • What kind of answer it is: text, a number, yes/no, or one from a list.
  • What the agent should listen for (“the age of the roof in years”).
The agent then fills it in from the conversation, when it comes up. It’s like handing the agent a small form to complete after each call. In the API a field is one entry in analysis.fields[] on the agent: Each call’s values come back as fields on the call detail. The same fields also travel in the flat postCallFields form on Update agent, which replaces the whole list, so read it first. There type is string, number, boolean or enum with choices, and system-presets addresses the wording of the built-in call_summary, call_successful and user_sentiment.

Signals: the yes/no ones

A yes/no field has its own name: a signal. Signals are the ones your campaign can act on. “Wants a callback” flips to yes, and a follow up fires. Think of a signal as a switch the rest of your campaign can wire into, so a plain fact from the call turns into an action. In the API a signal is a field with type: boolean, and a workflow if node tests it with is_true.
When you update your agent later, your own signals and AI-generated fields are the only ones that change. The standard, system managed ones are always kept safe, even if you don’t mention them. They are listed as platformFieldNames on the agent.
A few fields belong to a capability rather than to you: the booking time and the booked signal come with Appointment Booking, the failed-transfer signal with Live Transfer. They are listed under analysis.locked. You can reword what the agent listens for, but you cannot delete one or change its type while the capability is installed, and trying to will come back as an error. Remove the capability and its fields go with it.

Add your business’s own conditions with detectors

The standard outcomes handle the common calling situations. Your business may also need to notice something specific, such as an urgent deadline or interest in a particular service. That is what detectors are for. A detector answers an additional yes-or-no question about the conversation. A call can have one main outcome and several detectors that are true. For example, a call may end in Asked for info while also detecting Needs help this week. The information request can send the usual details, while the detector can trigger an extra follow-up for your team. Detectors extend the campaign’s follow-up logic without replacing its standard outcomes. See Detectors to create one.

Choose what happens next

Attach follow-up workflows to the relevant outcome or detector: send a message, add a tag, write a note or move a pipeline stage. The outcome chooses the route; the configured workflow determines the actions. Not every result needs an extra action of your own. The Subscribe to notes switch controls whether that result adds a summary note to the contact. It does not change how the result is detected.
Older campaigns may share one agent’s detection wording. Campaign outcome edits are blocked when that agent is shared with unrelated campaigns, until this campaign has its own agent. Explicit Master agent families intentionally share their wording; split test variants share their campaign’s outcome settings.

Why this matters

The record is the bridge between the call and everything after it. A clean outcome plus a few good fields means your follow up can be sharp: text the people who asked for info, leave alone the ones who opted out, and flag the ones who need a human. Garbage in, garbage out, so it’s worth describing your outcomes and fields clearly.

In the API