GoHighLevel AI: how do I get client approval before the AI sends, and a stop button per sub-account?
Answer: Inside GoHighLevel, Conversation AI's Suggestive mode creates reply suggestions for your team to review and send manually, and the bot can be switched off per contact. For AI actions outside chat, and for the n8n or Make automations you run beside GoHighLevel, send the action through an approval step and check a stop flag per sub-account before anything runs.
What GoHighLevel covers natively
- Bot modes. Conversation AI runs in Off, Suggestive or Auto-Pilot mode. Suggestive "creates reply suggestions for your team to review and send manually". Auto-Pilot sends replies automatically [1].
- Status per contact. You can change the bot's status for one contact without changing it for others. The bot also stops when a contact replies with an opt-out keyword such as "STOP", when it reaches the maximum configured AI message limit, and after a manual reply if sleep settings pause the AI [2].
These controls are scoped to Conversation AI. Workflows you run in n8n or Make next to GoHighLevel need controls of their own.
Client approval for actions outside chat
- In a GoHighLevel workflow, use the Webhook (Outbound) action to send the event to n8n. By default it sends contact fields such as name, email, phone, tags and custom fields, and the documentation says location data is present in most cases [3].
- In n8n, run your approval sub-workflow with the location ID as the client key. Our page on client approval without n8n access shows the steps.
- Send the result back to a second GoHighLevel workflow that starts with an Inbound Webhook trigger, which accepts POST, GET and PUT requests [4].
- Record who approved what, keyed by location ID.
A stop button per sub-account
Keep a stop flag per location ID in a table, and have every workflow that acts for that sub-account check it before it acts. Give the client a link that sets the flag, and let only you clear it, so every restart has a reason on record. To pause GoHighLevel's own bot as well, set Conversation AI to Off in that sub-account [1].
FAQ
Can I stop the AI for a single contact?
Yes. Bot status can be changed per contact without affecting other contacts [2].
What data reaches n8n?
By default, the outbound webhook sends contact fields and custom fields, and in most cases location data as well. Other objects, such as appointments or opportunities, are only included when the workflow's trigger involves them [3].
What should the stop flag cover?
Everything that acts for that sub-account: GoHighLevel workflows that call out, and every n8n or Make workflow that acts on its behalf.
Can I cap AI cost per sub-account?
For model calls your own automations make, yes. Use a per-client budget keyed by location ID and reserve the worst-case cost before each call. See our page on capping AI spend per client in n8n.
Sources
- HighLevel, How to create and set up a Conversation AI bot: https://help.gohighlevel.com/support/solutions/articles/155000004401-how-to-set-up-a-conversation-ai-bot
- HighLevel, Bot status for individual contacts: https://help.gohighlevel.com/support/solutions/articles/155000004096-bot-status-for-individual-contacts
- HighLevel, Workflow action: Webhook (Outbound): https://help.gohighlevel.com/support/solutions/articles/155000003299-workflow-action-webhook-outbound-
- HighLevel, Workflow trigger: Inbound Webhook: https://help.gohighlevel.com/support/solutions/articles/155000003147-workflow-trigger-inbound-webhook
Disclosure: this page is written by the team building Keelstamp, a tool for client approvals and stops. It isn't released yet, and everything above works without it.