Simple vs Advanced agents: picking a context level

Advanced agents pre-load the contact's opportunities and custom fields into every turn. When to flip it on, what it costs, and when not to.

Updated June 26, 2026

Every agent is one of two context levels. It's set when you create the
agent, shown on the agent's settings page, and can be flipped at any time —
no data migration, no downtime.

The short version

  • Simple — the default. The agent sees the contact's name, tags, and
  • Advanced — also sees the contact's recent opportunities and custom

If your agent only handles generic questions ("what are your hours?",
"can I book an appointment?"), use Simple. If your agent needs to
discuss specific things the contact has already shown interest in
(vehicles, properties, courses, product SKUs, pending quotes), use
Advanced
.

What Advanced actually loads

Every time the agent replies, in addition to the usual prompt, it sees:

  1. Your Business Context glossary — the plain-English explanation
  2. The contact's custom fields — only the ones with values. Shown
  3. Open opportunities — up to 8 most recent live inquiries
  4. Won deals — up to 5 most recent completed sales within
  5. Lost / abandoned — up to 5 most recent closed-lost or

If any bucket has more opportunities than fit in its slice, the
agent is told the exact number that were dropped and that it can call
get_opportunities for anything it can't see directly.

What it looks like on a real turn

To make this concrete — here's the exact block that gets injected
into the system prompt for an Advanced agent at a used car dealer,
where the contact has three live inquiries, one closed sale earlier
this year, and one deal they passed on:

## Business Context
We are a used car dealership. Each opportunity is a specific vehicle
the contact has inquired about. monetaryValue is the listed sale
price in USD. Custom fields starting with vehicle_ describe the car…

## Contact Context
### Custom fields
- budget_cap: 40000
- preferred_body_style: Truck

### Open opportunities — 3 live inquiries, $132,000 still in play
1. 2019 Ford F-150 4x4 — $45,000 — stage: test_drive_scheduled
   vehicle_color=red, vehicle_year=2019, vehicle_miles=42000
2. 2021 Toyota RAV4 LE — $35,000 — stage: interested
   vehicle_color=silver, vehicle_year=2021, vehicle_miles=18000
3. 2020 Ford F-250 — $52,000 — stage: new
   vehicle_color=white, vehicle_year=2020, vehicle_miles=60000

### Won deals — 1 closed in last 6 months, $18,500 captured
1. 2015 Hyundai Accent — $18,500 — sold 2025-12-04
   vehicle_color=blue, vehicle_year=2015, vehicle_miles=95000

### Lost / abandoned — 1 in last 6 months, $22,000 missed
1. 2018 Honda Accord — $22,000 — lost 2025-11-12

The three-bucket split gives the agent explicit revenue context:

  • $132,000 still in play — pipeline the agent can move forward
  • $18,500 captured — don't re-offer what they already own, but
  • $22,000 missed — the Accord is off the table, don't pitch it

With that visible on every turn, the agent can write things like
"The F-150 is $5k over your budget — want me to pull some trucks
under $40k to compare?"
or "I see the Accord wasn't the right fit
last month — is size what pushed you toward trucks?"
without
calling a tool.

Using merge fields against this data

Merge fields give you {{token|fallback}}
placeholders for pre-written templates (fixed-mode trigger messages,
follow-up steps, voice openers, fallback replies). Contact-level data
in the Advanced context is available as merge tokens:

  • {{contact.first_name|there}} — the contact's first name
  • {{custom.budget_cap|your budget}} — contact custom field
  • {{custom.preferred_body_style|something nice}} — another one

So a fixed-mode trigger message authored as:

Hi {{contact.first_name|there}}, we've got new {{custom.preferred_body_style|vehicles}}
under {{custom.budget_cap|your budget}} that just landed on the lot. Want to
take a look this week?

...renders for the contact above as:

Hi Jamie, we've got new Truck under 40000 that just landed on the
lot. Want to take a look this week?

Note the fallbacks — |there, |your budget,
|vehicles — kick in for contacts where those fields are empty, so
the same template still reads naturally for a brand-new lead who
hasn't had their budget captured yet.

Merge fields inside the glossary itself

The Business Context glossary also runs through the merge-field
renderer
before it's handed to the LLM. So you can personalise the
glossary per contact, not just pre-written messages:

You are speaking with {{contact.first_name|the contact}}. Their budget
is {{custom.budget_cap|not disclosed}} and their assigned salesperson
is {{user.name|our team}} ({{user.phone|call the showroom}}).

We are a used car dealership. Each opportunity is a specific vehicle
the contact has inquired about. monetaryValue is the listed sale
price in USD…

At runtime the agent sees resolved values: "You are speaking with
Jamie. Their budget is 40000 and their assigned salesperson is Alex
Chen (+1 415 555 0100)."
The same token syntax you use in trigger
messages works inside the glossary.

Tokens available in the glossary:

  • {{contact.first_name|fallback}} and all contact tokens
  • {{custom.<fieldKey>|fallback}} for contact custom fields
  • {{user.name|fallback}}, {{user.email}}, {{user.phone}}
  • {{date.today}} / {{date.tomorrow}}

Click any Start from an example chip in the Business Context
editor to load a starter glossary that uses merge fields and
fallbacks — easiest way to see the pattern is to pick one closest to
your industry and edit from there.

Merge fields vs opportunity details — an important distinction

Merge fields only resolve contact-level data. There is no
{{opportunity.name}} or {{custom.vehicle_color}} token — those
details live on opportunities, not on the contact, and there can be
many per contact. Trying to merge them makes no sense ("which one?").

Instead, the AI references opportunities naturally when it writes
its own reply, because it's reading the same Active inquiries section
you saw in the injected block above. If the contact texts "is the
red one still available?"
, the agent resolves "red one" to the
F-150 by cross-referencing vehicle_color=red, and writes back
conversationally. You don't template that — you just rely on the
agent seeing the data.

Rule of thumb:

  • Pre-written template with a single contact in front of it → use
  • AI-generated reply that references specific cars / deals / rooms

What stays the same regardless

Both Simple and Advanced agents see:

  • The contact's basic fields (name, phone, email, tags)
  • Your agent's system prompt and extra instructions
  • Qualifying questions, Rules,
  • Prior conversation history
  • Agent persona + working hours

Advanced doesn't replace any of this — it adds commercial context on
top. Everything you'd tune on a Simple agent tunes the same way on an
Advanced one.

When to use Simple

  • Customer support — the contact's issue is in the message, not in the
  • Booking-only agents — time-slot lookups don't need past-deal context
  • FAQ agents — the answers are in your knowledge base, not in the
  • High-volume outbound where token cost matters
  • Any agent where the contact is usually brand-new and has no deal

When to use Advanced

  • Car dealers — each opportunity is a vehicle, custom fields are specs,
  • Real estate agents — opportunities are properties shown, custom fields
  • B2B sales reps — opportunities are deals at different stages, custom
  • Quote-based services (trades, event vendors) — opportunities carry the
  • Course and coaching providers — opportunities are programs the contact
  • Anywhere a contact accumulates a pipeline of specific things and

What it costs

Advanced is an opt-in because it isn't free:

  • Tokens per turn — expect a few hundred extra tokens per reply,
  • CRM API calls — three extra calls on each turn: fetch

No billing impact beyond normal token usage. If you hit GHL's rate
limit it'll be from a different workflow — the extra reads are light.

How to switch

From the agent's base Settings page, the Context Level section
has a Simple / Advanced toggle. Flip it and hit Save. Changes take
effect on the next inbound — no downtime, no re-indexing.

Advanced-only fields (like your Business Context glossary) stick around
in the database even if you flip back to Simple, so you can toggle
freely during testing. When the agent is Simple, the glossary is just
dormant.

When to pick at creation vs later

You'll pick a level in the new-agent wizard's Build step. Default
is Simple. There's no penalty to starting Simple and upgrading later,
and no penalty to starting Advanced and discovering you don't need it.
Pick whichever matches how you imagine the agent's first real
conversation going — you can always swap.

Duplicating keeps the level

When you duplicate an agent
or save it as a template, both the Context Level and the Business
Context glossary come with it. Great for multi-location setups where
every dealership or every clinic uses the same glossary with minor
tweaks.

Tool use isn't replaced

Even with Advanced on, your agent still has its normal tool palette
(get_opportunities, get_contact_details, etc.). Advanced is
about what the agent knows without having to ask. Tools are still
there for anything outside the pre-loaded snapshot (deeper history,
fresh stage lookups, cross-contact searches). The trade-off isn't
"context vs tools" — it's "start with context then tools if
needed."