GHL COMMANDUser Guide

GHL Command

What do you want to get done?

Every guide is a job, in plain English: open one, copy a prompt, paste it to Claude. A job is not a button, so one guide usually puts a dozen of GHL Command's tools to work at once. Every prompt marked "Proven live" was run against a real GoHighLevel account before it shipped.

41 guides10 categoriesUpdates with the product

Automations

Add an exit workflow

Cleanly pull people out of a sequence when they reply, tag them, and get you notified.

Full license~5 minutesOpen guide →

What your AI bot knows, and where to put it

Three places a bot reads from, one of which silently ignores your custom values.

Free plan~5 minutesOpen guide →

Audit your workflows

Find silent failures and dead ends in existing workflows before your client does.

Free plan~2 minutesOpen guide →

Branch on tags and fields

If they are a VIP, send this. Otherwise, send that. Built correctly the first time.

Full license~5 minutesOpen guide →

Build a nurture sequence

A follow-up machine that texts, emails, waits, and stops the second someone replies.

Full license~15 minutesOpen guide →

Text back every missed call

The phone rings out, a text goes back within seconds, and the caller is still yours.

Full license~10 minutesOpen guide →

Send GHL data to another app

Push contacts into Slack, Sheets, Zapier, Make or your own software the moment something happens in GHL.

Full license~2 minutesOpen guide →

Answer a new lead in seconds

The text goes out the moment the form lands, the deal card appears, and a real person gets the task.

Full license~10 minutesOpen guide →

Win back a cold list

Wake up the contacts a client already paid for, over thirty days, without burning the list.

Full license~15 minutesOpen guide →

When a workflow runs fine but will not save

Understand the error that names steps you never touched, and fix it without dropping anyone mid-sequence.

Free plan~3 minutesOpen guide →

Content and social

Plan social posts

Queue posts as drafts across your connected social accounts, ready for you to publish.

Full license~5 minutesOpen guide →

No guides match that yet. Try a different word, like "contacts" or "workflow".

GHL Command User Guide

Account admin basics

Users, phone numbers, exports, and the whole exit package the day a client leaves.

Full license~1 minuteAccount admin
← All guides

What you'll get

  • Who has access to an account, with their role, in one ask.
  • The account's phone numbers, media library, and connected pieces, read without clicking through five settings screens.
  • A full written export of what an account contains, and a straight comparison between two accounts.

Say this

Who has access to this account?
What phone numbers does this account have?
Export everything in this account so I can see what is in it.
Compare this account to my template account and tell me what is missing.

The pro prompt

The exact ask we run on real client accountsProven live

Give me an inventory of my [MCP Testing] account. I want: every user with their role, every phone number, how many files are in the media library, and which pipelines, calendars, forms, and workflows exist by name. Then compare it to my [template] account and tell me what the first account is missing that the second one has. Do not change anything. This is a read.

Everything in [brackets] is yours to change. Run this the day you take over a client account. It is the fastest honest picture of what you have inherited.

What happens when you ask

  1. Claude reads the account across users, phone numbers, media, and the objects that matter.
  2. It lists what exists by name rather than by ID, so you can read it.
  3. Compared against another account, it names the gaps in both directions.

Good to know

  • The comparison is the useful one. Line a new client's account up against your template account and the setup list writes itself.
  • User roles matter for workflow notifications. A notification pointed at somebody who has left the business fails silently, and this is where you spot them.
  • Snapshots are how you carry a whole account setup to a new client. Claude can list what you have and create a share link for one.
  • Chat creation is off until you enable “Let GHL Command create sub-accounts from chat” in Your agency. This switch does not enable deletion. GHL Command creates sub-accounts on GoHighLevel's Agency Pro plan; on other plans you create it in GoHighLevel and register it in GHL Command with its key. Creation also needs an agency key with permission to create locations. Deletion requires separate confirmation and GoHighLevel authorization; its current plan gate has not been verified. Removing a saved key only disconnects an account.
  • Needs the full license. Reading users and numbers is free.
  • Destructive actions ask before they act. Twelve of them did not until 31 August, including deleting a custom field, which erases that field on every contact, and deleting or voiding an invoice.
  • Changing a sub-account's business details is refused if Claude cannot read the account first. Those are the details your text-message registration is filed against, and a check that could not run is not a check that passed. Timezone and other settings are unaffected.

Where people go wrong

What happenedThe fix
"Workflow notifications go to nobody."They point at a user who has gone. List the users, then ask Claude to repoint the notification.
"Texts fail on a new client account."The account has no number, or is not registered for texting yet. The number list shows you in seconds.
"The export is huge."Ask for the part you care about: "just the workflows and pipelines by name".
"The comparison says the other account is empty."Each account's key only works on that account, so the other one could not be read at all. Save its key once and compare again. Claude now says "unavailable" rather than showing zeros, so you can tell the two apart.

When a client leaves

Most agencies have an onboarding checklist and no offboarding one, so the day a

client goes turns into a week of hunting for logins and exports. One ask

assembles the whole exit package.

The exact ask we run on real client accountsProven live

Build the offboarding kit for my [MCP Testing] account. I want the full contact export, everything the account contains, every person and connected account that can still get into it, and a handoff document the next person can follow. Tell me plainly if the contact export is short, and list anything nobody has recorded an owner for. Do not change anything. This is a read.

Everything in [brackets] is yours to change. Run it the day you take a client on,

not the day they leave, and the answers are already there when you need them.

  • The contact export is the part that matters. It says how many it exported

and what GoHighLevel's own index says, side by side. Those two numbers are

counted differently, so a small gap is normal. If the export stopped early it

says INCOMPLETE in the document itself, not in small print.

  • Ownership is the one thing GoHighLevel cannot tell you. It stores nothing

about who paid for the domain or who keeps the logo. So the kit asks once, and

the answers are saved inside the client's own account where they survive you.

Answer them at setup and every later run is instant.

  • Keys are never printed. No tool can read them, including this one. You get

a list of every place a key lives so you can rotate them, which is what you

actually needed.

  • A section that could not be read says so. It never shows an empty list for

something it simply could not see.

Record who owns what for this account: the domain is the client's, the logo is mine.

The rest of the account

One ask covers the things you only look at when something is wrong.

Who has access to this account?
What phone numbers does this account have?
Show me the files in media storage.
  • Users come back with their name, email, phone and role. This is the fastest way to answer "who can see this client's data", and you need a real user id whenever a workflow has to notify or assign someone.
  • Phone numbers list with their label, so you can tell which number a client is actually texting from before you wire a workflow to it.
  • Media is the file library behind your emails and pages. Worth a look when an image stops rendering.
  • Businesses are GHL's optional grouping layer above contacts. Most accounts have none, and an empty answer here means exactly that, not a failure.

Related guides

  • switch-between-client-accounts
  • audit-your-workflows

Create or register a sub-account

For chat creation, open Your agency in the cockpit and enable “Let GHL Command create sub-accounts from chat”. Save the setting. It takes effect the next time Claude starts and allows creation only. Confirm the target agency and new client details before asking GHL Command to create the account.

You can also use the “Register an existing sub-account” card on New client. Create the account in GoHighLevel first, then register its own Private Integration key. This path stays available whether or not chat creation is enabled.

Works in Claude Desktop and Claude Code. Stuck? Email support@ghlcommand.com and a human answers.

GHL Command User Guide

Add an exit workflow

Cleanly pull people out of a sequence when they reply, tag them, and get you notified.

Full license~5 minutesAutomations
← All guides

What you'll get

  • A small four-step workflow that runs the moment someone replies: it takes them out of the nurture, tags them, writes a note on their record, and pings you.
  • No more robot follow-ups landing after a real conversation has started. That single embarrassment is what this exists to prevent.
  • A pattern you can attach to any sequence you already have, not just new ones.

Say this

Add an exit workflow to my New Lead Nurture so people drop out when they reply.
Anyone who books a consult should stop getting the follow-up texts.
Build the exit workflow for the sequence we just made.

The pro prompt

The exact ask we run on real client accountsProven live

Build an exit workflow in my [Radiance Med Spa] account called "[New Lead Nurture] Exit". Trigger: when a contact replies to us on any channel while they are in [New Lead Nurture]. Then, in this order: (1) remove them from [New Lead Nurture], (2) add a note on their record saying they replied and when, (3) tag them [warm-lead], (4) notify [me] so a human picks it up. Before you build: confirm the exact workflow you are removing them from by looking it up in my account, and confirm the real user you are notifying. If either one does not exist, stop and tell me instead of guessing.

Everything in [brackets] is yours to change. The last paragraph is doing the heavy lifting. Exit workflows that point at the wrong thing fail in total silence.

What Claude builds

They reply on any channelthen
Remove from the nurturethen
Note on the contact record: what they said, whenthen
Tag: warm-leadthen
Notify you, so a human takes it from herethen

What happens when you ask

  1. Claude looks up the real workflow you want people removed from, and the real person to notify. Not names, actual records.
  2. It shows you the four steps for approval.
  3. It builds the exit workflow, then hands you the link to open it in GHL.

Good to know

  • Build the main sequence first, then the exit workflow. The exit needs to point at a workflow that already exists.
  • Four steps is the whole pattern: remove, note, tag, notify. Longer exits are where they start breaking.
  • A notification aimed at one person has to name a real user in that account. Aim it at somebody and leave the recipient blank and it saves, runs, and notifies nobody, which is why an exit built by hand often looks fine and is not. Notifying everyone is a different shape and is fine. Claude picks the user up from the account, so this is handled for you.
  • Needs the full license.

Where people go wrong

What happenedThe fix
"People still got the next text after replying."The main sequence also needs stop-on-reply switched on. The exit removes them; stop-on-reply prevents the message already in flight. Ask for both.
"I deleted the nurture and the exit workflow broke."They are a pair. If you delete or rebuild one, say "update the exit workflow to match" so it does not point at something gone.
"The notification never arrived."It was pointed at a user who is no longer in the account. Run an audit and Claude will find it.

Related guides

  • build-nurture-sequence
  • audit-your-workflows

Works in Claude Desktop and Claude Code. Stuck? Email support@ghlcommand.com and a human answers.

GHL Command User Guide

What your AI bot knows, and where to put it

Three places a bot reads from, one of which silently ignores your custom values.

Free plan~5 minutesAutomations
← All guides

What you'll get

  • A clear rule for what belongs in your bot's prompt, what belongs in its knowledge base, and what has to be typed out in full.
  • The one place custom values are quietly ignored, which is the difference between a bot that answers correctly and one that invents a name.
  • The exact text of your own values, ready to paste where tokens will not work.

The rule

A bot reads from three places. Only two of them understand {{custom_values.something}}.

Where it livesCustom valuesWhat belongs there
Bot Goals: Personality, Goal, Additional InformationResolvedWho the business is. Name, hours, phone, booking link, tone
Workflow texts and emailsResolvedAnything the bot hands off to
Knowledge base answersIgnoredFacts, written out in full, with no tokens at all

Put identity in Bot Goals. Keep the knowledge base generic, or write the real words into it. Never put a token in a knowledge base answer.

Say this

List my custom values and show me what each one is actually set to.
Which of my custom values are empty?
I am writing knowledge base answers. Give me the real text for each value so I can paste it in.

The pro prompt

The exact ask we run on real client accountsProven live

In my [MCP Testing] account, list every custom value with the text it is currently set to, and flag any that are empty. I am about to write knowledge base answers for an AI bot, and knowledge base answers ignore these tokens, so I need the literal words to paste in rather than the token names. Do not change anything. This is a read.

Everything in [brackets] is yours to change. Run it before you write a single knowledge base answer, and keep the output next to you while you write.

What goes wrong, in the bot's own words

A knowledge base answer was written like this:

Disputed charges are escalated to {{custom_values.refund_officer}}, who reviews them within 4 business days.

The value was set correctly. The knowledge base saved. Retrieval scored a strong match. Asked who handles a disputed charge, the bot told the customer:

"Disputed charges are escalated to ZZPROBE CONTROL BETA, who reviews them within 4 business days."

It did not read the braces out loud, and it did not invent a plausible name. It took the words sitting next to the token and served them up as a person. Whatever text happens to neighbour that token becomes the answer, which means you cannot predict what a customer will be told.

Why this passes your testing

Here is the part that catches people. If the same fact is in your Bot Goals and in a knowledge base answer, the bot answers correctly, because it fills the gap from the prompt where the value did resolve. Your test passes.

It only breaks for facts that live in the knowledge base alone. Those are the specific ones: a person's name, a policy window, a price, a room number. So the bug hides from exactly the check you would run, and surfaces on the answers that matter most.

Test with a fact that appears nowhere in your Bot Goals. That is the only test that tells you anything.

Good to know

  • Bot Goals has a size limit, around 1,800 words across all three boxes. That is enough for identity and tone. It is not enough for a hundred service descriptions, so most of a real knowledge base has to be plain written text either way.
  • Both brace styles work in Bot Goals: with inner spaces and without. Neither works in a knowledge base.
  • Building an account you will reuse for other clients? Custom value keys travel to the new account but their values arrive empty. Combined with the rule above, that means a knowledge base written for one client is never portable: it has to be rewritten with the new client's real words. Plan for that at the point you take their answers, not afterwards.
  • Ask your client the specific questions up front. Every fact you would have reached for a token to fill is a question that belongs in your intake, so the answer can be typed into the knowledge base in full.
  • Reading your values works on the Free plan. Changing them needs the full license.

Where people go wrong

What happenedThe fix
"The bot told a customer a made-up name."A token in a knowledge base answer. Replace it with the real words.
"It worked when I tested it and broke in front of a client."The fact you tested was also in Bot Goals. Retest with something that lives only in the knowledge base.
"I put the agency name in the knowledge base so it would be easy to change later."Put it in Bot Goals instead, as a custom value. That is the place changing it once actually works.
"I reused a client's setup and the new bot says nothing useful."Values do not travel between accounts, and knowledge base text was never tokenised. Rewrite the answers with the new client's facts.

Related guides

  • custom-fields-and-objects
  • build-nurture-sequence

Works in Claude Desktop and Claude Code. Stuck? Email support@ghlcommand.com and a human answers.

GHL Command User Guide

Remind people about their appointment

A reminder the day before and two hours ahead, timed off the booking itself rather than off the tag.

Full license~10 minutesBooking and calendars
← All guides

What you'll get

  • A reminder the day before and another two hours out, both counted from the appointment time, not from when the workflow started.
  • Fewer empty chairs, which is the cheapest revenue in the whole account.
  • Messages that carry the time, the address and a way to move the booking, so a reminder does not create a phone call.

Say this

Set up appointment reminders on my client's consult calendar.
Remind people the day before and again two hours ahead.
We are getting too many no-shows. Start with reminders.

The pro prompt

The exact ask we run on real client accountsProven live

Build an appointment reminder workflow in my [Radiance Med Spa] account. Trigger: an appointment is booked on the [Consult] calendar. Then: wait until [24 hours before] the appointment and send a text and an email; wait until [2 hours before] the appointment and send one short text. Every message must carry the appointment date and time from the booking itself, the address, and one line on how to move it if they need to. Write them for [someone who booked a week ago and has half forgotten], warm and plain, and keep the two-hour text to one line. Before you build: confirm the [Consult] calendar exists and scope the trigger to it. Use waits that count back from the appointment time, not fixed delays after the booking, and tell me if that is not possible rather than substituting a fixed wait.

Everything in [brackets] is yours to change. The last sentence matters more than it reads: a fixed delay after booking sends the day-before reminder at whatever time they happened to book, which for a booking made three weeks out is a reminder three weeks early.

What Claude builds

Appointment booked on the Consult calendarthen
Wait until 24 hours before the appointmentthen
Text and email: date, time, address, how to move itthen
Wait until 2 hours before the appointmentthen
One short textthen

What happens when you ask

  1. Claude confirms the calendar and ties the trigger to it.
  2. It uses appointment-relative waits, so the reminders track the booking rather than the enrolment.
  3. It writes the messages with the real booking fields in them and shows you first.
  4. It builds as a draft; you publish it.

Good to know

  • Two reminders is the sweet spot. One is not enough for a booking made a fortnight ahead, and three starts to feel like nagging.
  • Put the address in the day-before message. A surprising share of no-shows are people who could not find you.
  • Give them a way to move it. A rescheduled appointment is worth far more than a silent no-show, and people will only move it if you make it easy.
  • Pair it with a no-show rescue. Reminders reduce misses; they never eliminate them.
  • Same rule as every appointment trigger: scope it to one calendar.

Where people go wrong

What happenedThe fix
"The reminder arrived three weeks early."Fixed delays were used instead of appointment-relative waits. Rebuild the waits to count back from the appointment.
"It reminded people about the wrong appointment type."The trigger was not scoped to a calendar.
"They got a reminder after they cancelled."Add an exit so cancellations drop out of the sequence.

Related guides

  • rescue-a-no-show
  • set-up-a-booking-calendar
  • see-and-manage-appointments

Works in Claude Desktop and Claude Code. Stuck? Email support@ghlcommand.com and a human answers.

GHL Command User Guide

Audit your workflows

Find silent failures and dead ends in existing workflows before your client does.

Free plan~2 minutesAutomations
← All guides

What you'll get

  • Every workflow in the account checked for the one thing GHL never tells you about: an action pointing at something that no longer exists.
  • A ranked list of what is broken, what could not be checked, and what looks fine.
  • The reason this matters: when a GHL action points at a deleted pipeline, stage, field, user, or form, that action fails without a word, and every action after it in that workflow can stop too.

Say this

Audit all the workflows in this account.
Is anything in my automations pointing at something that no longer exists?
Check this one workflow before I turn it on.

The pro prompt

The exact ask we run on real client accountsProven live

Audit every workflow in my [Radiance Med Spa] account for silent failures. For each problem: name the workflow, the action inside it, what the action is pointing at that no longer exists, and what would actually happen to a contact who hits it. Sort the list worst first, where worst means it stops the rest of the workflow. Then tell me which ones you can fix safely and which ones need a decision from me. Do not change anything yet.

Everything in [brackets] is yours to change. The last line keeps this a read-only check. Nothing moves until you say so.

What happens when you ask

  1. Claude opens every workflow in the account and follows each action to whatever it references.
  2. Anything pointing at a missing pipeline, stage, custom field, user, form, calendar, survey, or other workflow gets flagged.
  3. Where it cannot be certain, it says "could not verify" instead of calling something broken. No false alarms.

Good to know

  • This is the first thing to run on an account you have just inherited. It finds in two minutes what takes an afternoon of clicking.
  • The most common find by far is a workflow built before somebody deleted a pipeline stage. It looks perfectly healthy in GHL.
  • Run it again after any big cleanup. Deleting things is exactly what creates these.
  • This works fully on the Free plan. Fixing what it finds needs the full license.

Where people go wrong

What happenedThe fix
"The workflow looks fine in GHL, so I ignored the warning."GHL shows the action. It does not show that what the action points at is gone. That is the whole problem.
"It said could not verify, so I assumed broken."Could not verify means exactly that. Ask Claude to open that one workflow and explain what it saw.
"I fixed it by rebuilding the workflow."Do not rebuild. Ask Claude to update the broken action in place, so triggers and history stay attached.

Related guides

  • build-nurture-sequence
  • add-an-exit-workflow

Works in Claude Desktop and Claude Code. Stuck? Email support@ghlcommand.com and a human answers.

GHL Command User Guide

The Blueprint: build inside a client account

From intake form to a complete, reviewed account build you approve before it runs.

Full license~1 hourClient builds and pages
← All guides

What you'll get

  • One intake form your new client fills in, and a complete build plan for their account written from their answers.
  • A two-part checklist: everything GHL Command builds for you, and the short list only you can do, in order.
  • A hard stop before the build. You read the plan, you change what you want, and not one pipeline, field, message or workflow is created until you approve it. The one thing written before that gate is the intake form itself, because your client cannot answer a form that does not exist yet.

Say this

Run the Blueprint for a new client.
Build my Blueprint from the intake this client just submitted.
Show me the plan first. Do not build anything yet.

The pro prompt

The exact ask we run on real client accountsProven live

Run the GHL Command Blueprint for a new client. The business: [Radiance Med Spa], a [med spa] in [Austin, Texas]. What they sell: [body contouring and injectables]. Their main goal for the next 90 days: [fill the consult calendar]. Install the intake form in my [MCP Testing] account, give me the link to send them, and once their answers are in, build the plan from those answers. Show me the full plan before anything is created: pipeline and stages, custom fields, tags, calendar, form, the emails and texts written out, and every workflow. Mark clearly which items you will build and which ones I have to do myself in GHL. Build nothing until I say approved.

Everything in [brackets] is yours to change. The last line is the gate. The Blueprint is designed to stop there and wait for a human.

What happens when you ask

  1. Claude installs the intake form in the account and gives you the link to send the client.
  2. When their answers land, it turns them into a build plan: pipeline, fields, tags, calendar, form, messages, workflows. Every message written out in full. The answers arrive as a contact in the account, tagged blueprint-intake, carrying every question as a field on that contact. That is where Claude reads them from.
  3. You read it and change anything in plain English. Then you approve, and only then does it start building. Before your approval the plan is a dry run: it resolves every reference and reports what it would do, and writes none of it.
  4. It builds in order, checks each piece exists after it creates it, and hands you the manual checklist for the parts that need a human in GHL.

Good to know

  • The Blueprint does not build a funnel, a page, or a website, and that is deliberate. GoHighLevel's own page builder was never good enough to hand a client, so the build stops at the account: pipeline, fields, tags, calendar, form, messages and workflows. A plan that asks for a funnel is refused rather than half-built. You have not lost funnels. GHL Command still installs one of GoHighLevel's own designed funnels from its library (see *Build a funnel from a template*), still creates funnels and pages directly, and Page Studio still composes pages and whole sites. Pages are simply their own job, after the account exists, on hosting you choose.
  • Triggers get scoped to the thing you actually meant. An appointment trigger can be tied to one calendar, so a caregiver interview does not start the family consultation sequence. A reply trigger can be narrowed to a tag or to whether the reply was a yes or a no, instead of firing on every inbound message. Missed calls can be caught by call outcome, and failed phone-number checks by validation state. Say which one you mean in plain English and the plan carries it through.
  • If a workflow step moves a deal to a new stage, the plan makes it find the deal first. That pairing is checked before the build runs, because a stage move on its own saves cleanly and then does nothing at all.
  • The manual list is short but real: connecting a payment provider, phone and A2P registration, connecting social accounts, and domain settings. Those need a human with account access, and no tool can honestly do them for you.
  • If you are told there are no submissions, the answers are not lost. GoHighLevel does not report submissions for forms created outside its own editor, which is every intake form this installs, so the tool that reads submissions will say there are none even after your client has filled it in. The answers are on the contact tagged blueprint-intake. Say "read the intake from the contact" and Claude will pull it from there with the ordinary contact tools and carry on into the plan.
  • Blueprint builds assets inside a registered sub-account. GHL Command creates sub-accounts on GoHighLevel's Agency Pro plan; on other plans you create it in GoHighLevel and register it in GHL Command with its key. Confirm that account before building. On an account that has been built before, it refuses to quietly compose a second, different plan. That refusal is deliberate: it is what stops you ending up with duplicate pipelines and duplicate workflows.
  • The build plan is worth keeping. It is the document you walk your client through on the kickoff call.
  • Budget an hour end to end, most of it your review time. The building itself is minutes.
  • Needs the full license.

Where people go wrong

What happenedThe fix
"It built into the wrong client's account."Confirm the account before you approve. Ask "which account am I in" and say the account name inside the prompt.
"I approved without reading the messages."The messages are the client's voice going out to their patients. Read them. Editing takes minutes; a bad send costs a relationship.
"Some workflows are not live."Built is not published. Blueprint leaves things reviewable on purpose. Publish them yourself once you have read them.

Related guides

  • stand-up-a-pipeline
  • page-studio-pages-and-sites

Works in Claude Desktop and Claude Code. Stuck? Email support@ghlcommand.com and a human answers.

GHL Command User Guide

Branch on tags and fields

If they are a VIP, send this. Otherwise, send that. Built correctly the first time.

Full license~5 minutesAutomations
← All guides

What you'll get

  • A workflow that splits: one path for people who match, another for everyone else.
  • Both paths written out and connected properly, which is the part that is fiddly to do by hand and easy to get subtly wrong.
  • A condition based on what you actually know about the person: a tag, a custom field, where they came from.

Say this

If they are tagged vip, send the VIP text. Otherwise send the standard one.
Split the follow-up: existing patients get one message, brand new leads get another.
Add a branch for anyone whose treatment interest field is Botox.

The pro prompt

The exact ask we run on real client accountsProven live

In my [Radiance Med Spa] account, build a workflow called "[New Lead Split]". Trigger: when the tag [new-lead] is added. Then branch on this question: does the contact have the tag [vip]? If yes: text "[Hi {{first name}}, it is Dana. Since you are one of our regulars I saved you a priority slot this week. Want it?]" If no: text "[Hi {{first name}}, thanks for reaching out to Radiance. Want me to grab you a free consult this week?]" Before you build: confirm both tags exist in my account, and show me the two paths side by side so I can check the split reads correctly. Build nothing until I approve.

Everything in [brackets] is yours to change. Ask for the two paths side by side every time. Reading them next to each other is how you catch a branch that is the wrong way round.

What Claude builds

Tag new-lead is addedthen
Question: are they tagged vip?then
TextVIP path, priority slot
Textstandard path, free consult offer

What happens when you ask

  1. Claude checks the tag or field you want to branch on actually exists in the account.
  2. It shows you both paths, written out, before anything is built.
  3. It builds the branch with both sides properly connected, then gives you the link to review in GHL.

Good to know

  • Use branches sparingly. Two clean linear sequences with a tag deciding which one someone enters are usually easier to read and to fix later than one workflow with branches inside branches.
  • Branch on tags where you can. Tags are simple and visible. Custom-field conditions work too, but you have to keep the field filled in.
  • A branch with nothing on one side is legal and almost always a mistake. Say what happens to the people who do not match.
  • Needs the full license.

Where people go wrong

What happenedThe fix
"Everyone went down the same path."The tag is added later in the same workflow than the branch that checks it. Move the check after the tag, or trigger on the tag itself.
"The branch does nothing at all."The tag in the condition does not exist in that account, usually a typo or a different spelling. Run an audit.
"It got complicated fast."Stop nesting. Split into two workflows and let a tag decide which one people enter.

Related guides

  • build-nurture-sequence
  • audit-your-workflows

Works in Claude Desktop and Claude Code. Stuck? Email support@ghlcommand.com and a human answers.

GHL Command User Guide

Build a client funnel from a real GoHighLevel template

Search the 900+ designed funnels GoHighLevel already ships, install the one that fits your client, and have it arrive in their brand.

Full license~10 minutesClient builds and pages
← All guides

# Build a client funnel from a real GoHighLevel template

What you get

GoHighLevel already ships over 900 designed funnel templates: proper pages with photography, layout and structure, in sixteen industries. This finds the right one for a client, installs it into their sub-account, repaints it in their brand, and then tells you what is wrong with it before they see it.

That last part is the bit nothing else does.

Before you start

  • You are switched to the client's sub-account (switch_location).
  • The workflow builder is set up for it. The template library needs that same one-time Firebase sign-in; an API key alone is refused. If you have ever built a workflow in this account you already have it.
  • Optionally, a look to brand it with. Six are built in, and you can adjust one to a client's colours and faces before you use it. Without one you can still install a template. It just arrives in the designer's own colours.

Do this

1. Find one.

Find me a GoHighLevel template for a chiropractic clinic, in warm gold and cream.

You get a shortlist with install counts, a thumbnail you can open, and the reason each one is on the list. Install count is other agencies voting with their accounts. It is the only quality signal GoHighLevel publishes, and it is not the same as good.

To see what the library is organised by first: *Show me the GoHighLevel template categories.*

2. Install it, in the client's brand.

Install template 68158120b6bd0de1fe287f59 into this account, branded with the calm-clinic look.

You confirm before it writes. It installs one funnel, reads the account back, and reports the funnel that actually appeared with the exact call that removes it.

3. Grade it before the client sees it.

Grade the home page of that funnel.

This is the step people skip. GoHighLevel's own templates are designed and frequently not accessible. The one we tested had text at 1.65:1 contrast, which is close to unreadable. You get a list of what to fix, with the measurement beside each one.

What it does to the account

One funnel and its pages. Nothing else. Measured against a full before-and-after count: no workflows, no forms, no pipelines, no custom fields, no calendars, even though every template carries a snapshot id. That is why it is safe to run on a client's live account.

The pages are drafts. Publishing stays a human click.

Honest limits

  • "In your client's colours", not "a bespoke design". The re-paint claims six roles: the accent, the ground, the body colour, a second hue, the tint big section bands use, and the two faces. Some large background areas keep the template's own colour, because painting every remaining shade would wreck the photography.
  • It cannot invent proof. The template arrives with the designer's placeholder testimonials and stock numbers. Those are yours to replace with things that are true.
  • A branded page is not a persuasive page. The design check measures craft, not whether anyone would buy. If you want that judged too, ask for the copy to be graded.

If something goes wrong

  • *"not authorized for this scope"*: the sub-account has no workflow-builder sign-in yet. Run enable_workflow_builder for it.
  • *"You are not authorized to access this company"*: you are signed in as a different agency than the one that owns this sub-account. Run switch_location for the sub-account you actually mean.
  • The funnel appears but the pages are empty for a moment. GoHighLevel indexes the funnel before its pages. The tool waits for both; if you are looking in the UI, give it a few seconds.

Works in Claude Desktop and Claude Code. Stuck? Email support@ghlcommand.com and a human answers.

GHL Command User Guide

Build email templates

Reusable, branded templates created and edited without the GHL editor.

Full license~10 minutesEmail and SMS
← All guides

What you'll get

  • A branded email template saved in the account, ready to drop into any workflow or campaign.
  • Editing, renaming, and archiving templates from the chat, including the housekeeping the GHL editor makes tedious.
  • Text templates too, for the short messages you send over and over.

Say this

Create an email template called Consult Confirmation.
List the email templates in this account.
Rename the old welcome template and archive it.

The pro prompt

The exact ask we run on real client accountsProven live

In my [MCP Testing] account, create an email template called "[Consult Confirmation]". Subject: "[You are booked, here is what happens next]". Three short paragraphs: confirm the appointment with the date and time merged in, say what to bring and where to park, and one line on how to reach a human if plans change. One button to [my booking link]. Warm, plain, no hype. Use the contact's first name at the top, and use merge fields for the appointment date and time so it works for everybody. When it saves, list the templates in the account so I can see it landed, and tell me exactly where in GHL I will find it.

Everything in [brackets] is yours to change. Ask for the list at the end. It proves the template is where you will look for it, not just that a save came back happy.

What happens when you ask

  1. Claude writes the email and saves it as a template in the account.
  2. It lists the templates so you can confirm it is there under the name you chose.
  3. Edits are in place: "change the second paragraph" keeps the same template rather than creating a second copy.

Good to know

  • Templates and workflow emails are different things. A template is a reusable asset. A workflow email is written into a specific step. Ask for a template when several sequences will use the same email.
  • Templates are created in the editor's own format (vibe-editor) so they open and edit in Marketing → Emails → Templates. A template made the old way (type "html") looks fine in its preview but shows GHL's sample when opened, and opening it replaces the saved copy with that sample.
  • Claude writes the email in your voice if you give it one. Paste an email you have actually sent and say "write like this".
  • Actually sending a campaign to a list is done in GHL. What you get here is the writing, the template, and the housekeeping.
  • Archiving beats deleting. An archived template stops cluttering the list without breaking anything that referenced it.
  • Needs the full license.

Where people go wrong

What happenedThe fix
"The email arrived as one wall of text."Say how you want it structured: short paragraphs, one button. Claude will lay it out.
"The name did not merge."The merge field name has to match this account's setup. Ask Claude to check the field exists before saving.
"I have four versions of the same template."Say "update the existing template" instead of describing it again. Repeating the description creates a new one.

Campaigns, and what is scheduled

Templates are what an email looks like. Campaigns are the sends built on them.

What email campaigns exist in this account?
Show me every scheduled email send.
  • Campaigns come back with their name, subject and how many sends sit under them, which is the quickest way to spot an old sequence still running against a client's list.
  • A template is not a send. Editing one does not change anything already scheduled.
  • An empty campaign list on a busy account usually means the sends live in workflows instead. Ask for the workflows.

Related guides

  • build-nurture-sequence
  • send-texts-and-emails

Works in Claude Desktop and Claude Code. Stuck? Email support@ghlcommand.com and a human answers.

GHL Command User Guide

Build a nurture sequence

A follow-up machine that texts, emails, waits, and stops the second someone replies.

Full license~15 minutesAutomations
← All guides

What you'll get

  • A ready-to-review workflow in your GHL account: texts, emails, and waits in the right order, every message written out.
  • Stop-on-reply built in, so nobody gets a robot follow-up after a human conversation has started.
  • Quiet hours, so the sequence never texts somebody at two in the morning because a wait timer landed there.
  • A matching exit workflow: when someone replies, they leave the nurture, get tagged, and you get notified.

Quick start

Build a 7-day nurture for new leads: text right away, email an hour later, then follow up daily until they reply.
Only let this workflow send between 8am and 9pm.
Show me the full plan first. Do not build anything until I approve it.

The pro prompt

The exact ask we run on real client accountsProven live

Build a nurture workflow in my [Radiance Med Spa] account called "New Lead Nurture 7 Day". Trigger: when the tag [new-lead] is added. The sequence: (1) Immediately, text: "Hi {{first name}}, this is [Dana] from [Radiance Med Spa]. Thanks for reaching out about our [body contouring special]! Want me to grab you a free consult this week?" (2) Wait 1 hour, then send an email, subject "Your consult is waiting", friendly, three short paragraphs, one button to my booking link. (3) Wait 1 day, then text a soft check-in. (4) Wait 2 days, then email a before-and-after story from a real client. (5) Wait 3 days, then text a last-call message about the special ending. Set quiet hours on this workflow: it may only send between [8am] and [9pm], [every day]. Nothing goes out outside that window. Stop the sequence the moment they reply on any channel. Also build the exit workflow: when they reply, remove them from the nurture, tag them [warm-lead], add a note with what they said, and notify me. Before you build anything: show me every message written out for my approval, and verify my account's real pipeline, tag, and calendar IDs so nothing fails silently.

Everything in [brackets] is yours to change. The last paragraph is the safety net: it makes Claude plan first and check your account's real setup before touching it.

What Claude builds

Textinstant hello, offer a consult
Wait 1 hourthen
Email"Your consult is waiting" + booking button
Wait 1 daythen
Textsoft check-in
Wait 2 daysthen
Emailbefore-and-after story
Textlast call
QUIET HOURS: nothing sends outside 8am to 9pm, whenever a wait timer landsthen
the whole track stops the moment they reply, on any channel

What happens when you ask

  1. Claude shows you the full plan: every message written out, every wait, in order. Nothing is built yet.
  2. You edit in plain English: "make step 3 warmer", "move the last text to day 5". Then approve.
  3. Claude checks your account's real pipelines, tags, and calendars first, then builds the workflow and the exit workflow, and hands you the link to review in GHL.

Good to know

  • Ask for quiet hours on anything that sends texts. Wait timers do not care what time it is: a one-day wait started at 11pm fires at 11pm. A window of 8am to 9pm is the common answer, and it is set per workflow, so every sequence that texts needs its own.
  • Quiet hours are the only place a sending window lives. There is no time-of-day setting inside the AI agent builders, so if a bot hands off to a workflow, this is what protects the handoff.
  • Once set, quiet hours stay set. Edit a message or add a step later and the window comes through untouched.
  • GHL's editor struggles past about 40 steps in one workflow. Claude knows this and splits long sequences automatically.
  • Messages come out in your voice if you give Claude a sample first: paste one text you would actually send and say "write like this".
  • The nurture and its exit workflow are a pair. If you ever remove one, ask Claude to update the other, so nothing points at a workflow that is gone.
  • If a step in your sequence moves a deal to a new stage, it needs to find that deal first. Say "look up the opportunity, then move it" and Claude wires both. A move on its own saves cleanly and then does nothing.

Where people go wrong

What happenedThe fix
"It built the workflow but nothing ever sends."Say "audit this workflow". GHL fails silently when something inside is misconfigured; the audit finds it in seconds.
"A text went out at 3am."The workflow has no quiet hours. Say "only let this workflow send between 8am and 9pm" and Claude sets the window.
"I set quiet hours and later they were gone."Versions before 3.65.0 dropped the window whenever the workflow was saved again. Open any workflow that texts, check its window, and set it once more. From 3.65.0 on it survives every later edit.
"The messages sound generic."Give Claude your voice before building: paste a real text you have sent and say "write like this".
"I want to change one message."Say "update step 3's text to..." and never rebuild from scratch. Updates keep everything connected.

Related guides

  • add-an-exit-workflow
  • audit-your-workflows

Works in Claude Desktop and Claude Code. Stuck? Email support@ghlcommand.com and a human answers.

GHL Command User Guide

Bulk tag and clean up

Tag, untag, or update hundreds of contacts in one instruction, then save the group as a list.

Full license~2 minutesContacts and leads
← All guides

What you'll get

  • One instruction that tags, untags, or updates a whole group of contacts at once.
  • A count of exactly who is about to be touched, before anything is touched.
  • A report of what actually landed: how many succeeded, how many failed, out of how many.
  • The group saved as a list you can open in GHL any day, instead of rebuilding the same filter every week.

Say this

Tag everyone who came in from the September ad as september-lead.
Remove the cold-lead tag from anyone who has replied to us.
Tag these twelve contacts as needs-follow-up.
Save everyone tagged needs-follow-up as a list called Needs Follow Up.

The pro prompt

The exact ask we run on real client accountsProven live

In my [Radiance Med Spa] account, find every contact tagged [website-lead] that also has [no tag of consult-booked]. First: tell me how many there are and show me five examples, and stop there so I can approve. Once I say go: add the tag [needs-follow-up] to all of them, then tell me how many succeeded and how many failed. Do not delete anything, do not send anything, and do not change any other field.

Everything in [brackets] is yours to change. The two safety lines matter more than the rest: Claude counts and stops before it touches anything, and the last line rules out everything you did not ask for.

Save the group as a list

Tagging answers "who needs chasing today". A saved list answers it again next Monday without you rebuilding the filter. Once a group is tagged, ask Claude to save it.

The exact ask we run on real client accountsProven live

In my [Radiance Med Spa] account, save a contact list called "[Needs Follow Up]" that shows everyone tagged [needs-follow-up]. Read it back to me once it is saved so I know it exists, and tell me where to find it in GHL. Do not change any contact, and do not delete any list that is already there.

The list appears in your contacts view in GHL like any other saved list. Ask Claude to delete one by name when a campaign is over.

What happens when you ask

  1. Claude builds the group and tells you the size, with a few examples so you can spot a mistake.
  2. You approve, or you narrow it. Nothing has changed yet.
  3. Claude applies the change in batches and reports back what actually landed.
  4. If you asked for a saved list, it creates it and reads it back so you can see it exists.

Good to know

  • Ask for the count first, every time. It is the difference between tagging 40 people and tagging 4,000.
  • Bulk delete is real, and it does not come back. Claude will make you confirm, and it is worth reading that message twice.
  • Tags are the backbone of GHL automation. Tag now, and your workflows have something to trigger on later.
  • Saved lists are built from conditions, not from a frozen set of names. Tag somebody tomorrow and they appear in the list on their own.
  • Saving lists needs version 3.65.0 or later. In every version before it, the list tools reported success and quietly created nothing, so if you tried this before and found nothing in GHL, that is why. Ask Claude "what version are you running" if you are not sure.
  • Bulk changes need the full license. The Free plan can find and count the group, but not change it.
  • A bulk update with nothing in it is refused. It used to report every contact as updated while changing nothing at all.

Where people go wrong

What happenedThe fix
"It tagged more people than I meant."Always ask for the count and the examples first. Approve after you see them, not before.
"I saved a list before and it never showed up in GHL."Versions before 3.65.0 could not actually save lists, though they said they had. Update, then ask again.
"I asked for duplicates to be merged."GHL does not merge from the outside. Claude can find likely duplicates and list them, then you merge in GHL.
"The tags are not showing in GHL yet."GHL's contact index lags a few seconds behind. The report of what succeeded is the truth; the list view catches up.

Related guides

  • find-and-list-contacts
  • audit-your-workflows

Works in Claude Desktop and Claude Code. Stuck? Email support@ghlcommand.com and a human answers.

GHL Command User Guide

Clone and rebrand a site

Rebuild an existing page for a new client, with a rights check and a review report.

Full license~30 minutesClient builds and pages
← All guides

What you'll get

  • A page rebuilt for your client from a page you point at, with their name, colours, contact details, and copy.
  • A rights question at the start that decides how the rebuild is done, and an honest answer either way.
  • A review report at the end listing everything that still belongs to whoever owned the original.

Say this

Clone this page for my client: [paste the URL].
Rebuild this landing page for Radiance Med Spa.
What is left over from the original on this clone?

The pro prompt

The exact ask we run on real client accountsProven live

Clone [https://example.com/their-landing-page] for my client [Radiance Med Spa]. My rights to that page: [I built it for a previous client of mine and reuse the layout]. Rebrand it: company name [Radiance Med Spa], phone [512-555-0100], email [hello@radiance.example], colours [deep green and cream]. Leave the page's words alone for now. I will ask for a rewrite separately. Point the form and any booking button at my [MCP Testing] account, not at whatever it points at now. When you are done, give me the review list of everything still belonging to the original owner: names, testimonials, photos of their people, any claim I cannot back up, and anywhere a lead or a payment would still go to them.

Everything in [brackets] is yours to change. Answer the rights question honestly. It changes what gets built, and getting it wrong is your problem, not the tool's.

What happens when you ask

  1. Claude asks what rights you have to the page, and records your answer.
  2. With rights, it makes a faithful rebuild. Without them, it takes the design system, meaning the layout logic, spacing, and type scale, and builds a fresh page on it instead of copying the original.
  3. It swaps in your client's brand: name, contact details, colours. It does NOT rewrite the page's words.
  4. It hands you a review list: everything it found that still belongs to the original owner and everything it could not be sure about.

Good to know

  • Changing the colours is riskier than it sounds. A palette is a set of relationships, not a list of hex codes. Swap a dark background for a light one and text that was white for the dark background is now white on light, and invisible. Nothing checks this for you. After any colour change, look at the page before you show anyone.
  • A clone copies. It does not rewrite. When it finishes, the layout and brand are your client's and every word is still the original's, so the page still reads as the other business. Rewriting is a second ask, on purpose: a clone that paraphrases as it copies is the one that comes back "not even close".
  • Read the review list. It exists because some things cannot be caught by find and replace: a brand name split across styled text, a logo inside an image, branding baked into a booking widget, another business's testimonials.
  • Lead and payment destinations are the dangerous ones. A cloned page that still posts leads to the original owner is worse than no page.
  • Regulated claims travel with the copy. If the original made a medical or income claim, it is now on your client's page and it is now your client's liability.
  • Needs the full license.

Where people go wrong

What happenedThe fix
"The clone still has the other company's name in one spot."That is what the review list catches, usually a name split across styled text. Fix the items it names before you show the client.
"A booking button still goes to the original business."Say which account and which calendar the buttons should point at, in the ask. Then check every button on the live page.
"The new colours made half the page unreadable."Text colours were not swapped alongside the backgrounds they sit on. Caught live: a navy-to-cream background left white headings invisible. Change colours only if you will check the result by eye, or leave them alone and clone exactly.
"The header still showed the old brand after a clean replace."A two-tone brand mark is split across markup, so no find-and-replace can reach it. It is caught and listed for a hand edit. The proving run had exactly two.
"The logo still says the other company."The brand is inside the image file. Pixels cannot be substituted; the review list names the files so you can swap the artwork.
"It refused to make an exact copy."You said you have no rights to the page. That answer routes you to a rebuild on the design system instead, which is the version you can actually ship.

Related guides

  • page-studio-pages-and-sites
  • create-forms-and-read-submissions

Works in Claude Desktop and Claude Code. Stuck? Email support@ghlcommand.com and a human answers.

GHL Command User Guide

Confirm a booking and move the deal

They book, the chasing stops, the deal moves up the pipeline, and the confirmation goes out.

Full license~10 minutesPipelines and sales
← All guides

What you'll get

  • The follow-up sequences switched off the instant somebody books, so nobody gets chased for a thing they have already done.
  • The deal card moved to the booked stage, so the client's pipeline reflects reality without anyone dragging cards.
  • A confirmation text and email, and the team told.

Say this

When someone books, stop the follow-ups and move their deal.
Our pipeline is always out of date. Fix it when they book.
Build the booking confirmation workflow.

The pro prompt

The exact ask we run on real client accountsProven live

Build a booking confirmation workflow in my [Radiance Med Spa] account. Trigger: an appointment is booked on the [Consult] calendar. Then, in this order: remove them from [Speed to Lead], [Lead Nurture] and [Win-back] so no more chasing goes out; tag them [consult-booked]; find their existing deal and move it to stage [Consult Booked] on [the main pipeline]; notify [me]; and send a confirmation text and email with the date, time and address. Before you build: look up the real calendar, the real workflows you are removing them from, and the real pipeline and stage. If the deal move cannot find an existing deal for the contact, say so rather than building a step that silently does nothing. Stop and show me the plan first.

Everything in [brackets] is yours to change. The line about finding the deal first is doing real work: a stage move on its own saves cleanly, runs, and changes nothing, because there was no card to move.

What Claude builds

Appointment booked on the Consult calendarthen
Remove from Speed to Lead, Lead Nurture and Win-backthen
Tag: consult-bookedthen
Find their deal, then move it to Consult Bookedthen
Notify the teamthen
Confirmation text and email: date, time, addressthen

What happens when you ask

  1. Claude looks up every workflow you are removing them from by name, in the account, and tells you if one does not exist.
  2. It pairs the stage move with a find step, so the move has something to act on.
  3. It shows you the plan and the confirmation messages before building.
  4. It builds as a draft; you publish it.

Good to know

  • This is the piece that makes the rest trustworthy. Speed to lead and nurture sequences are only safe to run if something reliably switches them off.
  • Name every sequence they should be removed from. Missing one is how a booked customer keeps getting "are you still interested".
  • A stage move without a find step is the quietest failure in GoHighLevel. It looks built, it runs, nothing moves.
  • Keep the confirmation short and factual. The persuasion is over; they said yes.
  • If the client also books by phone, the front desk needs to create the appointment in GoHighLevel or none of this fires.

Where people go wrong

What happenedThe fix
"The deal never moved."The move had no find step, or the stage does not exist. Ask Claude to check both and rebuild.
"They booked and still got chased."One of the sequences was not in the removal list. Name them all.
"Nothing fires for phone bookings."Those appointments are not being created in GoHighLevel. That is a front desk habit, not a workflow problem.

Related guides

  • track-and-move-opportunities
  • add-an-exit-workflow
  • appointment-reminders

Works in Claude Desktop and Claude Code. Stuck? Email support@ghlcommand.com and a human answers.

GHL Command User Guide

Count and report your contacts

Ask for a number, get the real number, with the date range printed next to it.

Free plan~10 secondsContacts and leads
← All guides

What you'll get

  • The number GHL's own contact index reports for your window. If Claude cannot verify a count, it says so instead of guessing.
  • The date window spelled out next to every figure, in your account's timezone.
  • The same number GHL would show you at that moment, without opening GHL.

Say this

How many new contacts did we add in the last 7 days?
How many contacts did the Phoenix account add in July?
Compare new contacts this week to last week.
List my new contacts from this week and give me a spreadsheet.

What it looks like

Your Claude conversation
How many new contacts did we add in the last 7 days?
29 new contacts, counted from Jul 30 through Aug 6, Arizona time, straight from GHL's contact index. Want the list as a spreadsheet?

What happens when you ask

  1. Claude asks GHL's contact index directly. One call, about a second.
  2. It repeats the exact window it counted, for example: "Jul 30 through Aug 6, Arizona time." You always know what the number means.
  3. If a number cannot be verified, Claude says so and shows why. It will not guess.

Good to know

  • A brand-new contact can take up to half a minute to show up in GHL's index. If a count looks one short, ask again in a moment.
  • Counts use the date a contact was added to the account. Counting by other dates, like appointments booked, is a different ask. See the booking guides.
  • This works fully on the Free plan. No upgrade needed.

Where people go wrong

What happenedThe fix
"I asked for a count and got a long list."Say "how many", not "show me". A count is one number. A list is a spreadsheet.
"The number seems off by one."Contacts added in the last half minute may not be indexed yet. Ask again.
"I wanted last month, it counted this month."Name the dates: "from July 1 to July 31". Claude will echo the window back so you can check.

Related guides

  • find-and-list-contacts
  • weekly-account-report

Works in Claude Desktop and Claude Code. Stuck? Email support@ghlcommand.com and a human answers.

GHL Command User Guide

Create forms and read submissions

Intake forms built to spec, and submissions pulled into a clean summary.

Full license~10 minutesForms and reviews
← All guides

What you'll get

  • An intake form built with the exact questions you want, saved in the account and ready to attach to a page.
  • Answers that land on the contact record instead of in a text box nobody can filter, because the questions are wired to real fields.
  • The submissions read back to you as a summary rather than a list you have to click through.

Say this

Build a consult intake form: name, email, phone, treatment interest, and best time to call.
Show me this week's submissions for the consult form.
Add a question to the intake form about how they heard about us.

The pro prompt

The exact ask we run on real client accountsProven live

In my [MCP Testing] account, create a form called "[Consult Intake]" with these questions in order: [first name, last name, email, phone, which treatment are you interested in (choose one: body contouring, injectables, skin, not sure), what is your goal in your own words, best time to reach you (morning, afternoon, evening)]. Wire [treatment interest] and [best time to reach you] to real custom fields on the contact record so I can filter on them later. Create those fields if they do not exist yet. When it saves, read the form back to me question by question, and tell me exactly where in GHL I will find it.

Everything in [brackets] is yours to change. The wiring line is the one that matters. Answers that only live inside a submission are almost useless later; answers on the contact record drive your automations.

What happens when you ask

  1. Claude checks which custom fields exist and creates the missing ones.
  2. It builds the form with your questions in order and the right answer types.
  3. It reads the form back question by question so you can check it before you put it in front of anybody.

Good to know

  • Fewer questions convert better. Name, contact detail, and one qualifying question will out-perform your ten-question dream form every time.
  • Wire the answers to contact fields. That is what lets you tag, segment, and branch on them later.
  • Attach the form to a page in a funnel, or send the form link directly. Both work.
  • Submissions can be read on the Free plan. Building and changing forms needs the full license.
  • Reading submissions with no other instruction works from 31 August. It used to fail unless you happened to name a page size, and the error blamed a number you never gave it.

Where people go wrong

What happenedThe fix
"The answers are not on the contact record."The questions were not wired to fields. Ask Claude to wire them, and it will create the fields it needs.
"The form saved but looks wrong on the page."The page has its own copy of the form settings. Rebuild the page section with the form after you finish the form, not before.
"Nobody finished the form."Too many questions. Cut it to four and put the rest in the follow-up conversation.
"It says my test phone number is invalid."Numbers starting 555 are reserved for fiction and GHL rejects them. Test with a real-format number instead.
"I submitted a test and the contact does not come up in search."Search runs off an index that lags a few moments behind. The contact record itself is already correct, so open it directly or just ask again shortly.

Surveys, and the difference from forms

A form captures somebody in one screen. A survey walks them through questions, often over several pages, and stores its answers separately.

List the surveys in this account.
Show me the last 20 survey responses.
  • Ask for surveys explicitly. "Show me my forms" will not include them, and a client asking why their intake answers are missing is usually looking at a survey.
  • Both return their answers with the contact attached, so you can go from a response straight to the person.
  • Submissions are paged. Ask for a date range or a limit, or you will get the first page and think that is all of them.

Related guides

  • page-studio-pages-and-sites
  • custom-fields-and-objects

Works in Claude Desktop and Claude Code. Stuck? Email support@ghlcommand.com and a human answers.

GHL Command User Guide

Custom fields and objects

The fields and records your niche needs, created correctly the first time.

Full license~5 minutesAccount admin
← All guides

What you'll get

  • The fields this business actually needs on a contact: treatment interest, referral source, next review date, whatever the niche runs on.
  • Custom records for the things that are not people, like a piece of equipment, a property, or a policy, and the link between those records and the contact.
  • The field list read back to you, which is what every workflow you build afterwards depends on.

Say this

What custom fields exist in this account?
Create a dropdown field called Treatment Interest with four options.
Add a date field for Next Review.

The pro prompt

The exact ask we run on real client accountsProven live

In my [MCP Testing] account, first list the custom fields that already exist so we do not duplicate anything. Then create these on the contact record: [Treatment Interest] as a dropdown with the options [body contouring, injectables, skin, not sure]; [Referral Source] as a dropdown with [Google, Instagram, friend, walk in]; [Next Review Date] as a date. Read them back to me afterwards with their exact names and types, and tell me which ones I can now use as a condition inside a workflow.

Everything in [brackets] is yours to change. Ask for the existing list first. Half the messy GHL accounts in the world have three fields that mean the same thing.

What happens when you ask

  1. Claude lists what already exists so you can see the duplicates before you make more.
  2. It creates the fields with the right types and options.
  3. It reads them back, and from then on every form, workflow, and branch you build can point at them properly.

Good to know

  • Fields are the foundation. Build them before the forms and workflows that use them, and everything downstream stops failing silently.
  • Dropdowns beat free text for anything you will filter on. Free text is where segmentation goes to die.
  • Renaming a field is safe. Deleting one is not: anything pointing at it goes quiet. If a field is retired, leave it and stop using it.
  • Custom objects are for things that are not people. Most accounts never need one, and that is fine.
  • Needs the full license. Reading the field list is free.
  • Deleting a custom field now asks you to confirm. It takes the stored value on every contact with it, which is not something you can undo, and until 31 August it happened from a single instruction with no check.
  • Searching, editing and deleting custom object records works from 31 August. All three were aimed at addresses GoHighLevel does not answer on, so none of them did anything.

Where people go wrong

What happenedThe fix
"A workflow condition on my field never matches."The field is free text and the values are spelled four different ways. Make it a dropdown and set the options.
"I deleted a field and workflows broke."Deleting a field kills anything referencing it, silently. Run an audit, and retire fields instead of deleting them.
"There are three fields that mean the same thing."List first, create second. Ask Claude which ones look like duplicates and it will tell you.

Related guides

  • create-forms-and-read-submissions
  • audit-your-workflows

Works in Claude Desktop and Claude Code. Stuck? Email support@ghlcommand.com and a human answers.

GHL Command User Guide

Documents and contracts

Proposals and contracts sent for signature and tracked from Claude.

Full license~5 minutesPipelines and sales
← All guides

What you'll get

  • Your existing contract and proposal templates, listed by name, ready to send.
  • A document sent to a named contact for signature without opening GHL.
  • A read on what is out there: what has been sent, what is signed, what is still sitting unopened.

Say this

List my contract templates.
Send the standard service agreement to Dana Miller.
Which contracts are still unsigned?

The pro prompt

The exact ask we run on real client accountsProven live

In my [Radiance Med Spa] account, list every document and contract that has gone out, with the contact it went to, the template it came from, and its current status. Group them: signed, sent but not signed, and anything older than [10] days with no signature. Do not send anything or resend anything. This is a read. Then tell me which ones I should chase, in order.

Everything in [brackets] is yours to change. The unsigned pile older than ten days is where the money quietly leaks out of an agency.

What happens when you ask

  1. Claude reads the documents in the account and the templates available to send.
  2. It groups them by status and names the contact on each.
  3. Sending is a separate, deliberate instruction, and it names the recipient back to you before it goes.

Good to know

  • Build the templates in GHL. That editor handles signature fields and layout, and rebuilding that from the outside would give you a worse document.
  • What Claude adds is everything around the template: choosing it, sending it to the right contact, and telling you what is outstanding.
  • GHL hands documents over in modest batches, so on a busy account a full read takes a few passes. Claude will say when it is still fetching.
  • A document sent to the wrong contact cannot be unsent. Say the full name or the email in the ask.
  • Needs the full license.
  • A contract built from a template is prepared as a draft. It is only sent when you say to send it. Before 31 August it went out to the customer the moment it was created, which is not something you can take back.

Where people go wrong

What happenedThe fix
"It sent to the wrong Dana."Two contacts, same first name. Give the email address and Claude confirms the match before sending.
"The template list is missing one."It exists in a different sub-account. Confirm which account you are in first.
"The client says the document is blank."The template has no signature or content blocks filled in. That is fixed in the GHL template editor, then resent.
"I only wanted to see what it would look like, and the client got it."That was the old behaviour and it changed on 31 August. Creating from a template now leaves the contract as a draft, and sending is a separate instruction.

Related guides

  • invoices-and-payments
  • track-and-move-opportunities

Works in Claude Desktop and Claude Code. Stuck? Email support@ghlcommand.com and a human answers.

GHL Command User Guide

Find and list contacts

Pull a clean list into a spreadsheet you can open in Excel or Google Sheets.

Free plan~1 minuteContacts and leads
← All guides

What you'll get

  • The actual people, not a number: name, email, phone, tags, and the date they came in.
  • A spreadsheet file you can open in Excel or Google Sheets, or a short list right in the chat.
  • A search that looks across name, email, and phone at once, so a half-remembered detail is enough to find someone.

Say this

Show me the contacts we added this week.
Find the contact with the email dana@example.com.
List everyone tagged new-lead and give me a spreadsheet.

The pro prompt

The exact ask we run on real client accountsProven live

List the contacts added to my [Radiance Med Spa] account since [August 1], newest first. Give me a spreadsheet with these columns: first name, last name, email, phone, tags, date added. Show me the first ten rows in the chat so I can sanity check them before you write the file, and tell me the total number of rows you found.

Everything in [brackets] is yours to change. The last line is what makes this trustworthy: you see the top of the list before the file is written.

What happens when you ask

  1. Claude pulls the matching contacts from your account, in pages, until it has them all.
  2. It shows you the first few rows so you can confirm it found the right people.
  3. It writes the spreadsheet and tells you where the file is and how many rows it holds.

Good to know

  • For "how many", ask for a count instead. A count is one call and one number. See the counting guide.
  • Very large lists take longer because GHL hands them over a page at a time. Claude will say so rather than quietly stopping short.
  • A brand-new contact can take up to half a minute to appear. If someone you just added is missing, ask again in a moment.
  • This works fully on the Free plan.

Where people go wrong

What happenedThe fix
"I got a number when I wanted the names."Say "show me" or "list", not "how many".
"The spreadsheet is missing a column I need."Name the columns you want in the ask. Anything on the contact record can be a column.
"It found a contact I did not expect."The search looks at name, email, and phone together. Narrow it: "find the contact whose email is exactly ...".

Related guides

  • count-and-report-contacts
  • bulk-tag-and-clean-up

Works in Claude Desktop and Claude Code. Stuck? Email support@ghlcommand.com and a human answers.

GHL Command User Guide

Install GHL Command

One install, two short steps, whether you are on the Free plan or the full license. Nothing left to add later.

Free plan~6 minutesGetting set up
← All guides

Before you start: what you need

  • A GoHighLevel plan that includes API access. That is GoHighLevel Unlimited ($297 a month) or Agency Pro ($497). The $97 Starter plan has no API, so nothing can connect to it, GHL Command included. Check under Settings, then Billing, in GoHighLevel before you install.
  • Claude on this computer. GHL Command runs inside the Claude Desktop app or inside Claude Code in a terminal. It cannot run in a claude.ai tab in your browser. Not sure which you have? The Members Hub page Which Claude do I use? settles it in two minutes, and with it every later question about restarts.
  • A Private Integration token from the sub-account you want to work in, and that sub-account's location ID (the part of its GoHighLevel web address after /location/). Claude asks for both during setup, not the installer. GoHighLevel shows the token under Settings, then Private Integrations.

What you'll get

  • GHL Command connected to your GoHighLevel account, ready to work from Claude.
  • The same install whether you are on the Free plan or the full license. Upgrading later is just pasting a new license key. Nothing to reinstall.
  • The complete install: every tool present, nothing more to download later. Your license decides what runs. The Free plan reads, counts, and audits; the full license also builds and sends.

The two steps

  1. Paste one command, once. Open a terminal. On a Mac press Cmd+Space, type Terminal and press Return. On Windows press the Windows key, type cmd and press Enter. Paste npx -y @elitedcs/ghl-mcp@latest cli install and press Enter. That one command writes GHL Command into the Claude Desktop app's settings for you, so there is no JSON to hand-edit and anything else already in there is left alone. Your account and your license are connected in the next breath, inside Claude, not in the terminal. Using Claude Code instead? Paste this line instead of the installer: claude mcp add --scope user -t stdio ghl -- npx -y @elitedcs/ghl-mcp@latest. Then quit Claude fully and open it again (Desktop app: Cmd+Q on a Mac, not just closing the window; on Windows close it from the system tray too. Claude Code: start a new session). The new tools only load on a fresh start. Now say to Claude: "Set up GHL Command with my license key." Claude asks for your email, your license key and that sub-account's Private Integration token and location ID, then answers: "Step 1 of 2 done."
  2. One 60-second browser login. Say to Claude: "Unlock the Workflow Builder." A Chrome window opens and you log into GoHighLevel like you always do. This is how GHL itself trusts the workflow tools. One last step: quit Claude fully and open it once more so the workflow tools load. That is two restarts in all, thirty seconds each, and the install is finished.

Say this

Set up GHL Command with my license key.
Unlock the Workflow Builder.
Run a health check on my GHL Command install.
Which account am I in?

Good to know

  • Done means: you asked "Which account am I in?" and Claude answered with the right account name. That is the whole test.
  • Step 2 is part of the install, not an extra. Until it is done, Claude will keep reminding you the install is one step from finished. Nothing will pretend to be complete when it is not.
  • If anything says "not working" afterward, say "run a health check": it tests every connection and tells you in plain English what, if anything, needs attention.
  • Stuck at any point? Email support@ghlcommand.com and a human answers.

Where people go wrong

What happenedThe fix
"I use Claude on the website. Where do I paste the command?"The install needs the Claude Desktop app or Claude Code on this computer. A browser tab cannot run it. The Members Hub page Which Claude do I use? shows the difference.
"I ran the installer and Claude says it has no GHL Command tools."Quit Claude fully (Cmd+Q on a Mac; system tray on Windows) and open it again. The tools load on a fresh start, never into a window that was already open.
"GoHighLevel says API access is not on my plan."Only Unlimited ($297) and Agency Pro ($497) include the API. On Starter ($97) nothing can connect, so upgrade the plan first.
"It said step 1 of 2 done. Is it broken?"No, it is honest. Do step 2 (the browser login) and you are finished.
"The workflow tools give errors after the login."Restart Claude completely. Quit and reopen. The new login only loads on a fresh start.
"I upgraded to paid. Do I reinstall?"No. Say "set up GHL Command" and paste only your email and new key. Everything you set up before is kept.
"GHL Command shows only Connection closed, so it looks like my licence stopped working."The copy of GHL Command saved on your computer is incomplete. Your licence is fine. Quit Claude. In Finder, click Go in the menu bar, then Go to Folder, type ~/.npm and press Return. Drag the folder named _npx to the Trash. Reopen Claude and it downloads a fresh copy. This only removes downloaded program copies, nothing of yours. On Windows this is untested: email support@ghlcommand.com.

Works in Claude Desktop and Claude Code. Stuck? Email support@ghlcommand.com and a human answers.

GHL Command User Guide

Bill a client and see what you were paid

Products, invoices, coupons, and the money reads, without opening the billing screen.

Full license~5 minutesPipelines and sales
← All guides

What you'll get

  • An invoice raised against a real contact, itemised and priced, without touching the billing screen.
  • A promo code you can hand out, and a product catalogue Claude can price from.
  • A straight answer to "what came in this month", read from the account rather than a dashboard.

Say this

Invoice Dana Miller 250 dollars for a consultation, due in 30 days.
Show me every unpaid invoice.
Make a 10 percent promo code called SPRING10.
What payments have come in this month?

The pro prompt

The exact ask we run on real client accountsProven live

In my [MCP Testing] account, raise an invoice for [Dana Miller] for [one consultation at 250 dollars], due [30] days from today. Build it as a draft and read it back to me with the total, the currency and the line items, so I can check it before anyone sees it. Do not send it. I will send it myself once I have read it.

Everything in [brackets] is yours to change. The last line matters more than the rest: sending is the step that reaches a real person, and it is the one thing worth doing with your own eyes on the screen.

What happens when you ask

  1. Claude finds the contact and reads their details, because an invoice carries the client's name and email on its face, not just a link to their record.
  2. It builds the invoice as a draft, priced in your account's currency, and reads it back with the total.
  3. It stops. Nothing is emailed until you say so.

Good to know

  • Invoices are created as drafts and stay that way until sent. A draft costs nothing and can be deleted; a sent invoice has landed in someone's inbox and cannot be unsent.
  • Say "do not send" in the ask when you are experimenting. Claude honours it, and it removes the only irreversible step in the whole flow.
  • New invoices are real and payable by default. If you want one that cannot be paid, for a demo or a screenshot, ask for a test-mode invoice explicitly.
  • Products are the catalogue, invoices are the bill. Creating a product does not create a price on its own, so ask for the price in the same breath if you want one attached.
  • Coupons need a code, a type (percentage or fixed) and an amount. Without all three GHL rejects it.
  • "What was I paid" is a different question from "what did I invoice". Ask for transactions or orders for money that actually moved, and for invoices for money you asked for.
  • Invoicing needs the full license. The Free plan can read invoices and payments but not raise them.
  • Estimates and quotes work from 31 August. Before that they failed outright, you could not create one, list them, or delete one. If you tried earlier and gave up, try again.
  • Invoice dates now follow the sub-account's timezone. An invoice raised late in the evening used to be dated the next day, because the date was worked out in UTC.
  • Deleting or voiding an invoice now asks you to confirm. Voiding asks you to say VOID rather than DELETE, so the word matches what you are actually doing.
  • Estimate dates are plain calendar dates. Give them as year-month-day. A full timestamp is refused rather than quietly shifted by a day when it is converted back.
  • Renaming an invoice and sending one both work from 31 August. Neither did before: an edit was rejected outright, and a send was refused for missing details the tool never supplied. If you gave up on either, try again.
  • Recording a payment is final. Once an invoice has a payment against it, GoHighLevel will not let it be voided or deleted, by us or by anyone. Take the payment when you mean it.

Where people go wrong

What happenedThe fix
"Creating an invoice used to just fail."It did, for everyone, until 3.65.2. The call was missing six fields GHL requires and crashed its server rather than telling us. Update and it works.
"It sent before I was ready."Say "do not send it" in the ask. Sending is the only step here that reaches a customer.
"The invoice shows the wrong name or no email."Those come from the contact record, not the invoice. Fix the contact first, then raise the invoice.
"My revenue number looks too low."You are reading invoices, which is money requested. Ask for transactions instead, which is money received.
"The promo code was rejected."A coupon needs all three of code, type and amount. Percentage discounts take a number like 10, not "10%".
"An invoice is dated tomorrow."Fixed on 31 August. Dates are now taken from the sub-account's own timezone rather than UTC. Invoices raised before then may carry the wrong day; check any that were created late in the evening.

Related guides

  • track-and-move-opportunities
  • stand-up-a-pipeline

Works in Claude Desktop and Claude Code. Stuck? Email support@ghlcommand.com and a human answers.

GHL Command User Guide

Text back every missed call

The phone rings out, a text goes back within seconds, and the caller is still yours.

Full license~10 minutesAutomations
← All guides

What you'll get

  • A text that goes out the moment a call is missed, so the caller is answered instead of ringing your competitor next.
  • The call logged on the contact, tagged, with a real person told to call back.
  • One polite follow-up an hour later, and nothing more, because two texts about a missed call is help and three is harassment.

Say this

Set up missed call text back for my client.
If nobody answers the phone, text them straight away.
We are losing calls after hours. Fix it.

The pro prompt

The exact ask we run on real client accountsProven live

Build a Missed Call Text-Back workflow in my [Radiance Med Spa] account. Trigger: an inbound call is missed. Include no answer, busy and voicemail, and only inbound calls. Immediately: send a text apologising for missing them and asking what they need, tag them [missed-call], tag them [needs-callback], notify [me], and raise a call task for [me] due today. Then wait one hour and, if they have not replied, send one more short text offering a time to talk. Nothing after that. Write both texts for [a busy person who just wanted an answer], warm and plain, no marketing, and sign them from [the clinic] rather than from a system. Before you build: confirm the account has a phone number that can send texts, and confirm the real user you are notifying. If there is no SMS-capable number, stop and tell me, because every text step will fail silently.

Everything in [brackets] is yours to change. The check for an SMS-capable number is the one that saves you: a texting workflow in an account with no number builds perfectly and sends nothing.

What Claude builds

Inbound call missed: no answer, busy, or voicemailthen
Text back, straight awaythen
Tag: missed-callthen
Tag: needs-callbackthen
Notify you, and raise a call task due todaythen
Wait one hourthen
One more text, if they still have not repliedthen

What happens when you ask

  1. Claude checks the account can actually send a text before it builds anything that sends one.
  2. It writes both messages for the caller you described and shows you them first.
  3. It builds the workflow as a draft and hands you the link to read it in GoHighLevel.
  4. You publish it.

Good to know

  • This is the automation most local businesses buy on the spot, because the loss it prevents is one they can feel. A missed call is a customer who is already trying to give you money.
  • It covers no answer, busy and voicemail. Leaving voicemail out is the usual mistake, and voicemail is where the intent is highest.
  • Restrict it to inbound. Without that, your own outbound calls that ring out will text your customers.
  • Send it from the business, not from a person who might leave. Use the business number and sign with the business name.
  • After hours is where this earns its keep, so do not put a time restriction on it unless the client insists.

Where people go wrong

What happenedThe fix
"It fires on calls we made."The direction filter is missing. Restrict the trigger to inbound calls only.
"Nothing sends and there is no error."The account has no SMS-capable number, or A2P registration is not finished. Ask Claude to check the account's numbers.
"It texts people who reached us fine."Voicemail is being counted as missed when the caller left a message and got a callback. Decide which statuses you want and say so.

Related guides

  • speed-to-lead
  • send-texts-and-emails
  • add-an-exit-workflow

Works in Claude Desktop and Claude Code. Stuck? Email support@ghlcommand.com and a human answers.

GHL Command User Guide

Page Studio: pages and sites

Compose landing pages and full sites that render correctly in GHL.

Full license~20 minutesClient builds and pages
← All guides

What you'll get

  • A landing page or a multi-page site built inside GHL, section by section, that actually renders in the GHL editor rather than breaking it.
  • Copy written for the business, not filler, and a form that posts into the right account.
  • The saved page read back and measured, plus a rendered preview image of the finished page you can look at before anyone else does.

Say this

Build me a consult landing page for a med spa.
Build a four-page site: home, services, about, contact.
Show me the preview of the page you just built.

The pro prompt

The exact ask we run on real client accountsProven live

In my [MCP Testing] account, build a new landing page for [Radiance Med Spa] in a funnel called "[Consult Funnel]". The page: a hero with the headline offer [free body contouring consult this week], three benefit blocks, a short form asking name, email, phone, and treatment interest, and a set of FAQs that answer the objections. Write the copy for [women aged 35 to 55 in Austin who have been thinking about this for months], warm and plain, no hype and no medical claims. Build it onto a brand new page, not over an existing one. When it is done, read the page back to confirm the copy saved, and show me the preview image so I can see it before I publish it.

Everything in [brackets] is yours to change. The "brand new page" line is not a stylistic preference, it is the rule that keeps this working. See below.

What happens when you ask

  1. Claude composes the page section by section, writing the copy as it goes. For a single landing page that is topbar, hero, three value cards, the form with its consent disclosures, FAQs and footer; a multi-page site gets the sections each page's role needs instead.
  2. It saves the whole page into the account in one pass, as a draft, and reads it back to confirm the save landed.
  3. It gives you the preview image GHL renders of the finished page, so you can check the desktop layout and the copy before anybody sees it.
  4. You publish it. Publishing is a click in the GHL page editor, and a public web address needs a domain connected to that funnel. Neither can be done from here, and the guide will not pretend otherwise.

Good to know

  • Always compose onto a fresh page. GHL accepts the first save onto a page and quietly ignores later attempts to replace that content. Building a new page takes seconds; fighting an already-populated one wastes an evening.
  • To change a page after it is built, say what you want changed and let Claude build the revised version as a new page, then point the funnel step at it.
  • The editor preview and the live page are not the same renderer. The preview image is enough to judge copy and layout; judge the finished thing on the live URL once you have published it and pointed a domain at the funnel.
  • A single landing page is a fixed set of sections: topbar, hero, three value cards, the form, FAQs, footer. There is no testimonial or social-proof section on a landing page, so put your proof in the FAQ answers or the hero subhead rather than asking for a section that cannot be built. A multi-page site is composed differently, with the sections each page's role calls for, so this fixed list is about landing pages only.
  • Images: the hero and the logo come from the built-in template until you supply your own. The tool says so every time it runs, and those two are the first things to replace before a client sees the page.
  • Needs the full license.

Where people go wrong

What happenedThe fix
"I asked it to replace the content on my existing page and nothing changed."That is GHL, not Claude. Build a new page and repoint the funnel step at it.
"The page looks fine in the editor but wrong when I visit it."The editor and the published page are different renderers. Check the preview image first, then judge the published page once it is live on your domain.
"I cannot find the live URL."There is not one yet. The page saves as a draft: publish it in the GHL page editor, and connect a domain to that funnel. Until both are done the page has no public address.
"The form submits nowhere."Once the page is published on a real domain, ask Claude to verify the funnel. It submits a test lead and reads GHL back to prove the contact was really created.

Related guides

  • clone-and-rebrand-a-site
  • create-forms-and-read-submissions

Works in Claude Desktop and Claude Code. Stuck? Email support@ghlcommand.com and a human answers.

GHL Command User Guide

Rescue a no-show

The appointment is missed, the rebook offer goes out the same hour, and somebody is told to ring them.

Full license~10 minutesBooking and calendars
← All guides

What you'll get

  • A same-day text and email that offer a new time instead of asking why they did not come.
  • The front desk told immediately, with a call task, because a no-show recovered by phone beats one recovered by text.
  • Two more attempts over the following week, then a clean stop with the contact tagged so the client can see the real number.

Say this

Build a no-show follow-up for my client's consult calendar.
When someone misses their appointment, text them to rebook.
How many people are not turning up, and what happens when they do not?

The pro prompt

The exact ask we run on real client accountsProven live

Build a No-Show Rescue workflow in my [Radiance Med Spa] account. Trigger: an appointment on the [Consult] calendar is marked no-show. Straight away: tag them [no-show], notify [me], raise a call task for [me] due today, then send a text and an email that offer a new time and do not ask them to explain themselves. Then wait 4 days and text again, wait to day 7 and email once more, then write a note on the contact and tag them [no-show-lapsed]. Stop there. Write everything for [someone who probably felt awkward about missing it], warm and plain, no guilt, and make rebooking one tap. Before you build: confirm the [Consult] calendar exists in this account and scope the trigger to that calendar only, so a different appointment type does not start this sequence. Confirm the real user for the notification and the task.

Everything in [brackets] is yours to change. Scoping the trigger to one calendar is what stops a missed staff interview from sending a patient a rebooking offer.

What Claude builds

Appointment marked no-show on the Consult calendarthen
Tag: no-showthen
Notify the team, and raise a call task due todaythen
Text and email: here is a new timethen
Wait 4 days, text againthen
Wait to day 7, email once morethen
Note on the contact, tag: no-show-lapsedthen

What happens when you ask

  1. Claude confirms the calendar exists and ties the trigger to it, rather than to every appointment in the account.
  2. It writes the messages and shows you them before building.
  3. It builds as a draft and hands you the link.
  4. You publish it, and from then on the empty chair has a process attached to it.

Good to know

  • No guilt anywhere in the copy. People miss appointments because life happened, and a message that makes them feel caught does not get answered.
  • The call task is the part that actually recovers bookings. The messages buy you permission; a person makes the appointment.
  • Tie it to one calendar. This is the single most common mistake with appointment triggers and it is invisible until a client complains.
  • Tag the ones who never come back. The client wants that number, and it is the honest measure of whether the recovery works.
  • Someone has to be marking no-shows in GoHighLevel. If nobody does, this workflow is perfect and never fires.

Where people go wrong

What happenedThe fix
"It fired for the wrong kind of appointment."The trigger was not scoped to a calendar. Point it at one and rebuild.
"It never runs."Nobody is marking appointments as no-show. Fix the front desk habit first, the workflow second.
"It went out while they were sitting in reception."They were marked no-show too early. Agree how long after the start time the mark happens.

Related guides

  • appointment-reminders
  • see-and-manage-appointments
  • add-an-exit-workflow

Works in Claude Desktop and Claude Code. Stuck? Email support@ghlcommand.com and a human answers.

GHL Command User Guide

Review your conversations

Catch up on replies and unread threads across every channel.

Free plan~1 minuteEmail and SMS
← All guides

What you'll get

  • Who has replied and not been answered, across text, email, and the rest of the inbox.
  • The actual last message in a thread, not just a name and a timestamp.
  • A catch-up you can do in a minute instead of scrolling the GHL inbox.

Say this

Who has replied to us and not been answered?
Show me the unread conversations in this account.
What did Dana say in her last message?

The pro prompt

The exact ask we run on real client accountsProven live

In my [Radiance Med Spa] account, show me every conversation with an unanswered inbound message from the last [7] days. For each one: the contact name, which channel it came in on, when it arrived, and the last thing they actually said. Put the oldest unanswered at the top, because that is the one costing me money. Do not reply to anyone. This is a read.

Everything in [brackets] is yours to change. Oldest first is deliberate. The thread that has been waiting three days is worth more of your attention than the one from an hour ago.

What happens when you ask

  1. Claude reads the account's conversations and finds the ones where they spoke last.
  2. It pulls the actual message text so you can triage without opening anything.
  3. It leaves everything untouched unless you ask it to reply or to mark something read.

Good to know

  • This is a read on every channel the account uses, not just text.
  • It reads what is in GHL. A reply that went to a personal phone or an outside inbox is not in the account and cannot be found here.
  • Reading conversations works fully on the Free plan. Replying needs the full license.
  • Pair this with a nurture that stops on reply, and the unanswered list stays short by itself.

Where people go wrong

What happenedThe fix
"It showed threads I have already handled."You answered from your own phone, so GHL never saw the reply. Answer inside GHL and the record stays honest.
"I only wanted texts."Say the channel: "unanswered texts only".
"A conversation is missing."The contact lives in a different sub-account. Confirm which account you are in first.

Related guides

  • send-texts-and-emails
  • weekly-account-report

Works in Claude Desktop and Claude Code. Stuck? Email support@ghlcommand.com and a human answers.

GHL Command User Guide

Give your setup a checkup

One command answers both questions: is everything still working, and what am I not using yet?

Free plan~1 minuteGetting set up
← All guides

What you'll get

  • A plain-English answer to "is my GHL Command still working properly?" Every capability is read live, right now, not from a list somebody typed once.
  • A separate, honest answer to "am I using all of this?", measured from what your GHL account actually contains.
  • The exact sentence to paste back to Claude for each thing you are not using yet.

Say this

Run a checkup on my GHL Command.
Give me a checkup from the neckup.
Is everything still working, and what am I not using?

What the three sections mean

1. Connection. The plumbing: your license, your API key, whether the account is reachable, whether the Workflow Builder login is still good. Same checks as "run a health check", included so you only have to run one thing.

2. What still works. Every capability area (contacts, pipelines, calendars, workflows, funnels, forms, invoices, social, and the rest) gets one real read against your account. This is the section that matters most, and it turns on one distinction:

What it saysWhat it means
WORKING, you have none yetThe feature is fine. Your account just has none of these.
BROKENGoHighLevel rejected a read that should work. Almost always a GHL change on their end, not something you did.
NO-ACCESSYour API key's permissions do not cover that area. Fixable in GHL in two minutes.
UNAVAILABLEThat feature is not switched on for your GHL plan. Normal.
INCONCLUSIVEGHL was slow, rate-limited, or having a moment. Says nothing. Run it again.

3. What you are not using yet. Ranked by what it is costing you, each with the sentence to paste.

Good to know

  • Everything it does is a read. It is safe to run on a live client account, and safe on the Free plan.
  • Nothing about your usage leaves your machine. Section 3 is worked out from what is in your GHL account, not from any record of what you have clicked.
  • If anything comes back BROKEN, send the whole report to support@ghlcommand.com. That report is exactly what we need, and it usually means GoHighLevel shipped a change we have not caught yet.
  • Run it monthly, and any time GHL feels off after one of their updates.

Where people go wrong

What happenedThe fix
"It says I have no forms, but I do."Check the verdict, not the count. BROKEN or NO-ACCESS means it could not read them, not that they are gone.
"Half of it says UNAVAILABLE."That is a GHL plan thing, not a fault. Those features are not switched on for that sub-account.
"It says NO-ACCESS on several areas."Your Private Integration key was created with only some scopes ticked. Make a new one in GHL with every scope selected, then run setup again.
"I ran it on the wrong client."It checks whichever sub-account is active. Say "switch to [client name]" first, then run the checkup.

Related guides

  • install-ghl-command
  • audit-your-workflows
  • switch-between-client-accounts

Works in Claude Desktop and Claude Code. Stuck? Email support@ghlcommand.com and a human answers.

GHL Command User Guide

See and manage appointments

Who is booked today, this week, or for a specific client, in one ask.

Free plan~10 secondsBooking and calendars
← All guides

What you'll get

  • Today's bookings, this week's bookings, or one person's history, read out in plain English.
  • The gaps: which slots are still open, so you know what to fill.
  • Appointment status where it matters: confirmed, cancelled, no show.

Say this

Who is booked today?
What does next week look like on the consult calendar?
When is Dana Miller's next appointment?
What slots are still free on Thursday?

What it looks like

Your Claude conversation
Who is booked today?
Three on the books today, Arizona time: 9:00 Dana Miller (confirmed), 11:00 Priya Shah (confirmed), 2:00 Marc Ellis (cancelled, so that slot is actually free). Two real appointments, one hole at 2:00. Want me to check tomorrow too?

What happens when you ask

  1. Claude finds the calendars in the account and reads the bookings in your window.
  2. It reports them in the account's timezone and says which timezone that is.
  3. For one person, it looks up the contact first and then their appointments, past and upcoming.

Good to know

  • Say the window plainly: today, this week, next Thursday, the rest of the month. Claude echoes the dates back so you can check.
  • Timezone comes from the sub-account. On a new client account, confirm it once, because everything downstream inherits it.
  • Booking, moving, and cancelling appointments need the full license. Reading them is free.
  • Appointment totals are deliberately left out of the weekly account report. Ask for them here instead, where the window is explicit.
  • Booking and moving now insist on knowing which 2pm you mean. If you say "book Dana at 2pm", Claude works that out against the sub-account's timezone before it books. Until 31 August a bare time was read as UTC, so a 2pm booking could land at 7am.

Where people go wrong

What happenedThe fix
"The times look an hour off."The sub-account timezone is set to the wrong city. Fix it in GHL once and every reading is right afterwards.
"It missed an appointment I know about."It is on a calendar you did not name. Ask "list every calendar in this account" and then ask across all of them.
"I asked for today and got this week."Say the word today on its own. Claude prints the window it used, so you can spot it immediately.
"It says the slot is not available, but the diary is empty."That was usually the time, not the diary. A time with no timezone on it was read as UTC and landed outside opening hours, and GHL reported it as an availability problem. It is now caught and explained before anything is booked. If you still see this, the slot really is outside the calendar's open hours.

Related guides

  • set-up-a-booking-calendar
  • weekly-account-report

Works in Claude Desktop and Claude Code. Stuck? Email support@ghlcommand.com and a human answers.

GHL Command User Guide

Send GHL data to another app

Push contacts into Slack, Sheets, Zapier, Make or your own software the moment something happens in GHL.

Full license~2 minutesAutomations
← All guides

What you'll get

  • A live connection that pushes contact details out of GHL into any app that can receive a web request, the moment the thing you care about happens.
  • It can fire on almost anything GHL knows about, not just a new contact: a tag added, a pipeline stage changed, an appointment no showed, a call missed, a form submitted.
  • It shows up in the client's own Automation list, so they can see it, pause it, and edit it without you.

Say this

Send every new contact to my Slack channel.
When a contact moves to Consultation Booked, post them to this address: https://hooks.zapier.com/...
Show me every webhook in this account and where each one is sending data.

The pro prompt

The exact ask we run on real client accountsProven live

Set up a webhook in my [Radiance Med Spa] account. Fire it whenever a contact gets the tag [hot-lead], and send it to [https://example.com/my-receiver]. Add my own fields to what it sends: [clinic] set to [Radiance Med Spa], and [greeting] set to the contact's first name. Then show me exactly what will land at the other end, and tell me what happens if my receiver is down.

Everything in [brackets] is yours to change. Ask for the last part every time. What GHL sends is not what most people expect.

What happens when you ask

  1. Claude builds a small workflow in the account: your chosen trigger, and one step that sends the data out.
  2. It publishes it, so it starts working immediately, and hands you back its ID.
  3. Ask it to fire a test, and it will tag a throwaway contact so you can watch the request land before you trust it with real leads.

Good to know

  • What arrives is a fixed set of contact fields, plus the sub-account details, plus which workflow sent it, plus any custom fields you asked for. Your own fields can include merge fields, so "the contact's first name" arrives already filled in.
  • tags arrives as one comma separated line of text, not a list. This catches people out constantly. If the receiving app checks whether tags contains "vip", it will also match a contact tagged "vip-waitlist". Split on the comma first.
  • If the receiving app is down, GHL keeps trying, roughly five minutes later, then ten minutes after that. Nothing is thrown away.
  • But the contact stops there while it retries, and so does everything after it in that workflow. If the send is not critical, put it at the end of the workflow, or give it a workflow of its own, so an outage at the other end cannot hold up your follow up.
  • GHL has a paid "Custom Webhook" step that lets you replace the whole message with your own format. You almost never need it. Adding your own fields, your own headers, and choosing POST, GET or PUT all work on every plan.

Where people go wrong

What happenedThe fix
"I deleted the webhook and it deleted my whole nurture."It will refuse to do that. A webhook here is a workflow, so if that workflow does other things too, Claude stops and tells you instead of deleting it. To just switch a webhook off, ask to set it back to draft.
"My receiver only got some of the leads."Something earlier in the workflow is holding contacts up, or the send is behind a step that failed. Ask Claude to audit that workflow.
"My code crashed on tags.map."tags is text, not a list. Split it on commas first.
"I pointed it at a test address and forgot."Ask for every webhook in the account and where each one sends. Old test addresses are the most common thing this turns up.

Related guides

  • audit-your-workflows
  • build-nurture-sequence
  • branch-on-tags-and-fields

Works in Claude Desktop and Claude Code. Stuck? Email support@ghlcommand.com and a human answers.

GHL Command User Guide

Send texts and emails

Message any contact from Claude, in your voice, on the right channel.

Full license~30 secondsEmail and SMS
← All guides

What you'll get

  • A single text or email to a named contact, written and sent from the chat.
  • The message shown to you in full before it goes, with the recipient named.
  • It lands in that contact's GHL conversation thread like any other message, so nothing is lost from the record.

Say this

Text Dana Miller that we have a 2pm slot open tomorrow.
Email Priya the parking details for her appointment.
Reply to the last message from Marc.

The pro prompt

The exact ask we run on real client accountsProven live

Send a text from my [Radiance Med Spa] account to the contact [Dana Miller]. The message: "[Hi Dana, it is Sarah at Radiance. We had a cancellation at 2pm tomorrow if you want it. Just reply yes and it is yours.]" Before you send: confirm the exact contact you matched, show me their phone number, and show me the message exactly as it will arrive. Then wait for me to say send.

Everything in [brackets] is yours to change. The confirm-then-wait pattern is not optional courtesy. A sent message cannot be recalled.

What happens when you ask

  1. Claude finds the contact and shows you the match, including the number or address the message would go to.
  2. It shows you the message exactly as written.
  3. It sends only when you say so, then confirms it went and where it landed in the thread.

Good to know

  • Texting requires the sub-account to have a phone number and, in the United States and Canada, completed A2P registration. Without that, texts fail at the carrier and no tool can work around it.
  • Sending from Claude uses the account's own number and inbox, so the client sees a normal conversation, not something from a robot.
  • One-off messages are for one person. For a sequence to many people, build a nurture instead so replies stop it automatically.
  • Compliance stays yours. Business hours, opt-out language, and consent are your responsibility, not the tool's.
  • Needs the full license.
  • Every send now tells you whether it actually went. GHL accepting a message is not the same as delivering it: on an account whose text registration is not approved, messages sit queued for ever and nothing looks wrong. You now get told which of those happened.
  • "Delivered" is the carrier's word, not proof somebody read it. It is right nearly always, and it is not a receipt. For anything that matters, confirm with the person.

Where people go wrong

What happenedThe fix
"The text says sent but never arrived."The sub-account is not fully registered for texting. Check A2P status in GHL. This is the most common cause by far.
"It went to the wrong person."Two contacts share a first name. Always give the full name or email and read the match Claude shows you.
"I meant to send twenty of these."Twenty one-off sends is a sequence in disguise. Build a nurture; it stops on reply and keeps you out of trouble.
"We texted them and they say they never got it."Check what the send reported. If it says queued, the account's text registration is almost certainly not approved and the message never left. Before 31 August this looked identical to a successful send.

Bulk campaigns

Individual messages are one thing; a campaign is the older bulk-send layer sitting alongside your workflows.

What campaigns are running in this account?
  • Most modern accounts have none, because workflows replaced them. An empty answer is normal, not broken.
  • If a client swears they are still emailing people and you cannot find the workflow, check here before you go hunting.

Related guides

  • review-your-conversations
  • build-nurture-sequence

Works in Claude Desktop and Claude Code. Stuck? Email support@ghlcommand.com and a human answers.

GHL Command User Guide

Set up a booking calendar

A consult calendar with the right slots, buffers, and the right person attached.

Full license~10 minutesBooking and calendars
← All guides

What you'll get

  • A booking calendar with real opening hours, appointment length, and gaps between appointments.
  • A daily booking cap and a minimum notice period, so a full day stays full and nobody books your next hour.
  • The right person attached to it, which is the step that quietly breaks calendars built in a hurry.
  • A read-back of what actually saved, plus the next available slots so you know it is bookable.

Say this

Create a 30-minute consult calendar, weekdays 9 to 5, with a 15-minute gap between appointments.
Cap the consult calendar at 6 bookings a day and require 24 hours notice.
Show me the calendars in this account.
What slots are free on the consult calendar this week?

The pro prompt

The exact ask we run on real client accountsProven live

In my [MCP Testing] account, create a booking calendar called "[Free Consult]". Appointments are [30] minutes, available [Monday to Friday, 9am to 5pm] in the account's timezone, with a [15] minute gap between appointments. Cap it at [6] bookings a day, and require at least [24] hours notice so nobody books the same morning. Attach it to [me], and look up my real user record in this account rather than guessing at a name. When it saves, read the calendar back to me and show me the next five bookable slots so I know it is genuinely open for business.

Everything in [brackets] is yours to change. Asking for the next five slots at the end is the whole test. A calendar that saves but offers no slots looks perfect and books nobody.

What happens when you ask

  1. Claude looks up the real user in the account so the calendar has an owner who exists.
  2. It creates the calendar with your hours, length, gaps, daily cap, and notice period.
  3. It reads the calendar back and pulls the next available slots so you can see it is live.

Good to know

  • Say who the appointments belong to. A calendar with nobody attached will happily save and then show no availability.
  • Ask for the daily cap and the notice period in the same breath as the hours. Six bookings protects a clinic day that also has patients in it, and twenty-four hours notice is what stops someone taking your next open slot while you are still in a room.
  • Timezones follow the sub-account's setting. If the account is set to the wrong city, every slot is wrong. Check that first on a new client account.
  • Round robin calendars, where several staff share the bookings, need each person listed. Name them all in the ask. On that type, a slot only opens if the calendar hours AND that person's own working hours both allow it, so a Saturday window needs somebody who works Saturdays.
  • Changing one setting later leaves the others alone. Rename a calendar or raise its daily cap and the slot length, the gaps and the opening hours all stay exactly as you left them.
  • Confirmation and reminder messages still live on GHL's calendar screen. Set those once in GHL. If you want real control over reminder wording, ask Claude for a reminder workflow instead.
  • Needs the full license.

Where people go wrong

What happenedThe fix
"The calendar exists but shows no times."Nobody is attached to it, or the hours fall outside the account's timezone. Ask for the next five slots and Claude will show you which it is.
"Clients are booking with no notice."Say how much notice you want and Claude sets it on the calendar. Twenty-four hours is the usual answer for a consult.
"One busy day swallowed my whole week."Ask for a daily cap. It limits how many bookings a single day can take, no matter how many hours are open.
"My slot lengths and opening hours went back to defaults on their own."Versions before 3.65.0 could reset untouched settings when you changed a different one. Ask Claude to read the calendar back and set them again. From 3.65.0 on, settings you do not mention are left alone.
"Appointments are back to back."Ask for a gap between appointments. Fifteen minutes is the usual answer for a clinic.

Related guides

  • see-and-manage-appointments
  • build-nurture-sequence

Works in Claude Desktop and Claude Code. Stuck? Email support@ghlcommand.com and a human answers.

GHL Command User Guide

Reuse a build across client accounts

Find your snapshots, share one, and know exactly what does not travel with it.

Full license~5 minutesClient builds and pages
← All guides

What you'll get

  • Every snapshot on your agency, named, so you can pick one without hunting through the agency view.
  • A clear split between the ones you built and the ones you imported from somebody else.
  • An honest list of what a snapshot leaves behind, which is the part that costs people a day when they find out late.

Say this

List my snapshots.
Which of these snapshots did I build, and which came from somewhere else?
Give me a share link for the Client Launch Template.

The pro prompt

The exact ask we run on real client accountsProven live

List every snapshot on my agency with its name and id, and split them into the ones I built here and the ones that were imported from somewhere else. I am about to roll one out to a new client, so tell me which is the most recent version of my own template, and remind me what will not carry across when it is applied. This is a read. Do not apply anything.

Everything in [brackets] is yours to change. Ask for the version explicitly. Agencies accumulate templates named v1 through v4.6, and applying last year's to a new client is a quiet, expensive mistake.

What does not travel

A snapshot carries structure. It does not carry the specifics, and nothing warns you.

TravelsDoes not travel
Workflows, pipelines, calendars, forms, funnelsCustom value values. The keys arrive, the values arrive empty
Custom field and custom value definitionsAnything typed into a knowledge base for the old client
AI agents and their knowledge basesYour Private Integration key. Each account needs its own

The custom values one catches everybody. Every text and email that referenced {{custom_values.booking_link}} now renders with a hole in it, and the workflow still reports success. Fill the values in as step one of every rollout, before you turn anything on.

Good to know

  • Snapshots are a copy, not a link. Fixing a workflow in your template does not fix the twelve accounts you already applied it to.
  • Check whether workflows arrive published. A snapshot that lands live starts messaging real contacts the moment the account has any, which is rarely what you want on day one.
  • Name your snapshots with versions and dates. "Client Launch Template v4.6" tells you something; "Client Template Final" does not.
  • Imported snapshots are somebody else's work and can change out from under you. If a template matters to your business, build your own from an account you control.
  • Reading snapshots and making share links use your agency key. Apply a snapshot in the GoHighLevel agency view, or select one during API creation on Agency Pro. GHL Command creates sub-accounts on GoHighLevel's Agency Pro plan; on other plans you create it in GoHighLevel and register it in GHL Command with its key.
  • Needs the full license.
  • A cloned automation is checked after it is copied. You are told how many steps and triggers actually landed, and whether anything in the copy still points back at the original.
  • This mattered: until 31 August a cloned automation could still enrol people into the workflow it was copied from. Clone a nurture sequence for a new client and their leads went into the previous client's automation, while the copy reported itself perfect.

Where people go wrong

What happenedThe fix
"The new account's texts have gaps where the details should be."Custom values arrived empty. Fill them in before switching anything on.
"The bot is answering with the last client's information."Knowledge base text was written for that client and copied verbatim. Rewrite the answers for the new one.
"It started messaging people on day one."Workflows came across published. Check their status before the account has contacts in it.
"Claude cannot see the account I just made."A new sub-account has no Private Integration key yet. Create one in that account, then save it.
"I applied the wrong version."Ask for the list first and read the names. Version numbers exist for exactly this.

Related guides

  • ai-bots-and-custom-values
  • blueprint-build-a-client-account

Works in Claude Desktop and Claude Code. Stuck? Email support@ghlcommand.com and a human answers.

GHL Command User Guide

Plan social posts

Queue posts as drafts across your connected social accounts, ready for you to publish.

Full license~5 minutesContent and social
← All guides

What you'll get

  • A week or a month of posts written and loaded into the GHL Social Planner as drafts.
  • The captions written for the business, with the accounts they are aimed at named.
  • A list of which social accounts are actually connected, which is usually where the surprises are.

Say this

Which social accounts are connected to this client?
Write me five posts for next week and load them as drafts.
Show me what is already in the social queue.

The pro prompt

The exact ask we run on real client accountsProven live

In my [MCP Testing] account, first list which social accounts are actually connected and which ones are healthy. Then write [five] posts for [Radiance Med Spa] for next week: [one patient result story, one myth we hear all the time, one behind the scenes, one offer, one question to the audience]. Write for [women 35 to 55 in Austin], warm and plain, no hype and no medical claims. Load all five into the Social Planner as DRAFTS only. Do not schedule them and do not publish anything. Then confirm back to me, one line each, that every post saved as a draft and which account it is aimed at.

Everything in [brackets] is yours to change. Keep the drafts-only line. Publishing is a decision a human should make with their eyes open, especially on an account that carries somebody's real name.

What happens when you ask

  1. Claude checks which social accounts are connected and flags any whose connection has expired.
  2. It writes the posts and loads them into the planner as drafts.
  3. You review them in GHL, adjust anything, and publish or schedule from there.

Good to know

  • Connections expire quietly. Instagram in particular drops its connection every so often, and the planner will happily hold posts for an account that cannot post. Ask for the health check first, every time.
  • Review the drafts in the Social Planner itself. Asking Claude to list them back is a poor substitute: the planner mixes drafts in with everything already scheduled and orders them by the date shown on the post, so a draft made today sits below posts queued for next month.
  • Images are not written by this. Attach them in the planner, or ask Claude to build an image separately and add it.
  • Publishing straight from the chat is possible, and this guide deliberately does not teach it. A misfired post on a client's real page is not a mistake you can quietly fix.
  • Needs the full license.
  • A scheduled post has to say which hour it means. A time with no timezone on it is read as UTC, so a post set for 9am would go out at 2am, publicly, on the client's own accounts, with nothing to undo. Claude now catches that before anything is scheduled.
  • Asking for scheduled posts now really gives you only scheduled posts. Until 31 August the filter was advertised and never applied, so a request for one queue came back with published and failed posts mixed in.

Where people go wrong

What happenedThe fix
"The posts went nowhere."The account connection had expired. Reconnect it in GHL, then the queue drains normally.
"The captions sound like a robot."Give Claude two real posts from the client and say "write like these". Voice comes from examples, not adjectives.
"It posted to the wrong page."Name the exact page or profile in the ask, and check the account list Claude prints first.

Which accounts are actually connected

Before scheduling anything, check what the account can post to.

Which social accounts are connected here?
  • Connected accounts come back grouped, so you can see at a glance whether the client connected a page, a profile, or nothing at all.
  • Scheduling to a platform that was never connected fails quietly at post time, long after you have moved on. Check first on any account you did not connect yourself.

Related guides

  • weekly-account-report

Works in Claude Desktop and Claude Code. Stuck? Email support@ghlcommand.com and a human answers.

GHL Command User Guide

Answer a new lead in seconds

The text goes out the moment the form lands, the deal card appears, and a real person gets the task.

Full license~10 minutesAutomations
← All guides

What you'll get

  • A text and an email that leave the moment a lead fills in the form, not whenever somebody next checks the inbox.
  • A deal card created on the pipeline and the lead assigned to a real person, so nothing sits in an unowned pile.
  • Two more nudges over the next day, and all of it stops the second they answer.

Say this

Build a speed to lead workflow for my new client.
When someone fills in the contact form, text them straight away and tell me.
Why is nothing happening when a lead comes in?

The pro prompt

The exact ask we run on real client accountsProven live

Build a Speed to Lead workflow in my [Radiance Med Spa] account. Trigger: someone submits the form [New Client Inquiry]. Immediately, in this order: tag them [new-lead], create a deal on [the main pipeline] in stage [New Lead], assign the contact to [me], send a text, send an email, notify [me], and create a call task due today. Then follow up: wait 20 minutes and text again if they have not replied, wait until the next day and email again. Write the text and the email for [women 35 to 55 who just asked about a consult], warm and plain, and keep the first text under 160 characters so it lands as one message. Before you build: look up the real form, the real pipeline and stage, and the real user in my account, and stop and tell me if any of them do not exist rather than guessing. Leave it as a draft so I can read it before it goes live.

Everything in [brackets] is yours to change. The last paragraph is the important one: a workflow pointed at a pipeline stage that does not exist saves cleanly and then does nothing at all.

What Claude builds

They submit the formthen
Tag: new-leadthen
Create the deal card, stage New Leadthen
Assign the contact to a real personthen
Text, straight awaythen
Email, straight awaythen
Notify you, and raise a call task due todaythen
Wait 20 minutes, then text againthen
Wait until tomorrow, then email againthen

What happens when you ask

  1. Claude looks up the real form, pipeline, stage and user in the account. Not names you typed, actual records.
  2. It writes the messages for the audience you described and shows you every one of them before anything is built.
  3. It builds the workflow as a draft, checks each piece exists after it creates it, and hands you the link.
  4. You read the messages, then publish it yourself.

Good to know

  • Speed is the whole product here. The industry research everyone quotes is about the first few minutes, and the reason this works is that it removes the human from the first reply entirely.
  • Two different things stop the chasing and you want both. "Stop on response" ends the sequence when they reply, and Claude sets it on this workflow. An exit workflow covers everything a reply does not: they booked, they paid, somebody spoke to them. Without the second one, your third nudge lands after the customer has already booked, which is worse than sending nothing.
  • The call task matters more than it looks. The text opens the conversation; a person has to close it.
  • The assign step needs a real user in that account. So does a notification addressed to one person: name somebody and leave the recipient blank and the workflow saves, publishes, runs, and simply never notifies anyone. A notification set to everyone is a different shape and works fine.
  • Keep the first text short. Long first texts read as marketing, and marketing gets ignored.

Where people go wrong

What happenedThe fix
"It built, but no deal card appears."The stage id was wrong or the pipeline did not exist. Ask Claude to check the pipeline and stage in the account, then rebuild that step.
"The texts keep going after they replied."Check "stop on response" is on. If they booked rather than replied, that is an exit workflow's job instead.
"It never fires."Built is not published, and a draft never runs on real leads. Publish it once you have read the messages.

Related guides

  • add-an-exit-workflow
  • build-nurture-sequence
  • stand-up-a-pipeline

Works in Claude Desktop and Claude Code. Stuck? Email support@ghlcommand.com and a human answers.

GHL Command User Guide

Stand up a pipeline

Stages, fields, and tags for a new client in one conversation.

Full license~10 minutesPipelines and sales
← All guides

What you'll get

  • A pipeline with stages named the way this business actually sells, not GHL's defaults.
  • The custom fields and tags the pipeline depends on, created at the same time so nothing points at a field that does not exist.
  • The real stage IDs written down, which is what everything you build later has to reference.

Say this

Set up a pipeline for a med spa: new lead, consult booked, consult done, treatment scheduled, treated.
Add a stage called Deposit Paid between consult done and treatment scheduled.
Show me the pipelines in this account with their stages.

The pro prompt

The exact ask we run on real client accountsProven live

In my [Radiance Med Spa] account, create a pipeline called "[Patient Journey]" with these stages in order: [New Lead], [Consult Booked], [Consult Completed], [Treatment Scheduled], [Treated], [Lost]. Also create the custom fields this needs: [Consult Date] as a date, and [Quoted Value] as a number. When you are done, read the pipeline back to me from the account and show me the real stage names in order, so I know it saved the way I asked. Do not add any contacts or deals to it yet.

Everything in [brackets] is yours to change. The read-back line is the one that matters: you are being shown what GHL actually stored, not what Claude intended to store.

What happens when you ask

  1. Claude creates the pipeline and its stages in order.
  2. It creates any custom fields you asked for alongside it.
  3. It reads the whole thing back out of the account so you can see what really landed.

Good to know

  • Name stages after what the business does, not after sales jargon. "Consult Booked" beats "Qualified" for a clinic, every time.
  • Fewer stages is better. Six is plenty. Ten stages means nobody keeps the board clean.
  • Keep the pipeline. When stages change, ask Claude to update the pipeline in place. Deleting and recreating gives every stage a new ID, and every workflow that referenced the old ones goes silently dead.
  • Needs the full license.
  • Editing stages is all-or-nothing, and that is now enforced. Sending only the stage you are renaming used to delete every other stage, and the deals sitting in them were cut loose. Claude now refuses that and tells you which stages were at risk.

Where people go wrong

What happenedThe fix
"I recreated the pipeline and all my automations stopped."Recreating changes every stage ID. Say "update the existing pipeline" instead, and Claude keeps the IDs alive.
"A workflow that moves deals does nothing."It is pointing at a stage that no longer exists. Run a workflow audit; this is the single most common find.
"The stage order came out wrong."Say the stages in order in one line and ask for the read-back. The read-back shows you the true order.
"I renamed one stage and the others disappeared."That was possible until 31 August. The stage list replaces the whole board, so anything left out was deleted. It is now refused unless you explicitly say you mean to remove those stages.

Related guides

  • track-and-move-opportunities
  • audit-your-workflows

Works in Claude Desktop and Claude Code. Stuck? Email support@ghlcommand.com and a human answers.

GHL Command User Guide

Switch between client accounts

Point Claude at any of your sub-accounts by name, and confirm which one is active.

Free plan~10 secondsGetting set up
← All guides

What you'll get

  • Every sub-account you can reach, listed by name, not by a string of letters and numbers.
  • One instruction to move Claude from one client to another.
  • A straight answer to "which account am I working in right now", any time you want to check.

Say this

Which GHL account am I working in right now?
List all the sub-accounts I can reach.
Switch to the Radiance Med Spa account.

What it looks like

Your Claude conversation
Which account am I in?
You are in your practice account. Want me to list the other sub-accounts you can reach?
Switch to Radiance Med Spa.
Done. Active account is now Radiance Med Spa. Everything from here runs against that account until you switch again.

What happens when you ask

  1. Claude reads the account it is pointed at and says the name back to you.
  2. When you name a different account, it swaps in that account's saved key and confirms the switch by name.
  3. If an account has no key saved yet, Claude tells you which one is missing instead of quietly working in the wrong place.

Good to know

  • Every sub-account needs its own key saved once. The installer does this for the first account. To add another, say "add my Radiance Med Spa account" and Claude walks you through it.
  • You do not need to keep your own list of keys. Saved keys live in a private file on your machine that only your install reads, and it is deliberately excluded from anything that gets committed or shared. Keeping a second copy in Notes or a doc is the risky part, not the useful part.
  • Because each key is saved once, you never have to paste one into the chat again. If you do paste one, it lives in that conversation's history afterwards, so treat it as spent and create a fresh one in GHL.
  • Ask "which accounts do you have keys saved for?" any time. That is the list Claude can actually reach, which is not always the same as the list in GHL.
  • Your license covers unlimited sub-accounts. Adding another client costs nothing extra.
  • Get in the habit of asking "which account am I in" before any build. It takes two seconds and it is the cheapest insurance there is.
  • This works fully on the Free plan.

Where people go wrong

What happenedThe fix
"It built something in the wrong client's account."Always confirm the account first. Ask "which account am I in", then build.
"I switched accounts an hour ago, and now it is back on my default."When the product updates itself in the background, the active account can fall back to your default. Ask "which account am I in" again before you build.
"It says it cannot find that account."Use the name exactly as it appears in GHL, or say "list my sub-accounts" and pick from the list.
"I set up new clients in GHL last week and Claude does not see them."Creating a sub-account in GHL does not save its key here. Ask "which accounts do you have keys saved for?", compare that against GHL, and add the missing ones. Worth doing whenever you have taken on new clients.
"Comparing two accounts says the second one is empty."A key only works on the account it was created in. Save the second account's own key first, then compare. Without it, the second account cannot be read at all.

Related guides

  • install-ghl-command
  • weekly-account-report

Works in Claude Desktop and Claude Code. Stuck? Email support@ghlcommand.com and a human answers.

GHL Command User Guide

Take over an account someone else built

Find out what is in there, what is actually running, and what is quietly broken, before you touch anything.

Full license~20 minutesAccount admin
← All guides

What you'll get

  • An inventory of everything in the account, so you know what you have taken on before you promise anything.
  • A list of what is actually live versus sitting in draft, which is almost never what the client believes.
  • The broken things named specifically: workflows pointing at deleted stages, steps that will never fire, messages with nobody to send them.

Say this

I just took over this account. Tell me what is in it.
What is actually running in here, and what is broken?
Audit this account before I touch anything.

The pro prompt

The exact ask we run on real client accountsProven live

I have just taken over the [Radiance Med Spa] account and I did not build it. Do not change anything. First: confirm which account I am in, then inventory it. Pipelines and their stages, custom fields, tags, calendars, forms, funnels, workflows, and how many contacts. Then tell me what is actually live: which workflows are published and which are still drafts. Then audit the workflows for things that will fail quietly: steps pointing at pipelines, stages, fields, calendars or users that no longer exist; stage moves that cannot move anything; and notifications aimed at a person with nobody selected. Finally, give me the three things I should fix first and why, in plain English I could read to the client. Change nothing. This is a read.

Everything in [brackets] is yours to change. The two "change nothing" lines are not decoration. The first hour on an inherited account is the one where a well-meaning fix breaks the thing that was earning money.

What happens when you ask

  1. Claude confirms the account first, because the most expensive mistake here is auditing the wrong one.
  2. It reads the account and lists what exists, without writing anything.
  3. It runs the workflow audit and reports the silent failures by name, with the reason each one will not work.
  4. It hands you a short prioritised list you can take to the client.

Good to know

  • Do this before the kickoff call, not after. Walking in already knowing what is broken changes the whole relationship.
  • Published versus draft is the first thing to check. Clients routinely believe a sequence is running when it was never turned on. The audit can tell you published from draft; it cannot tell you when a workflow last actually ran, so if that matters, look at recent contacts rather than asking for a number nothing can give you.
  • Invalid ids are the usual cause of silent failure. A workflow that points at a deleted stage saves, runs, and does nothing, and GoHighLevel will not tell you.
  • Take the export before you change anything. It is your restore point and it costs one instruction.
  • Resist fixing as you read. Finish the audit, agree the list, then work through it.

Where people go wrong

What happenedThe fix
"I fixed a workflow and leads stopped arriving."Something depended on it. Audit and agree the list before editing, and keep the export.
"The client said it was all working."Published is not the same as working. Check the audit findings, then look at whether recent contacts actually moved.
"I audited the wrong account."Confirm the account by name before anything else, every time.

Related guides

  • audit-your-workflows
  • workflows-that-will-not-save
  • account-admin-basics
  • run-a-checkup

Works in Claude Desktop and Claude Code. Stuck? Email support@ghlcommand.com and a human answers.

GHL Command User Guide

Track and move opportunities

Move deals between stages, update values, and see what is stuck.

Full license~1 minutePipelines and sales
← All guides

What you'll get

  • The board read out loud: what is in every stage, what it is worth, and what has not moved in weeks.
  • Deals moved, marked won or lost, or re-valued without opening the pipeline view.
  • The question nobody asks often enough, answered in one line: what is stuck?

Say this

What is in my pipeline right now, by stage?
Move Dana Miller to Consult Booked.
Which deals have not moved in 14 days?
Mark the Miller deal won at 2400.

The pro prompt

The exact ask we run on real client accountsProven live

Look at the [Patient Journey] pipeline in my [Radiance Med Spa] account. Give me: how many deals are in each stage, the total value sitting in each stage, and every deal that has not moved in [14] days with the contact name and how long it has been sitting. Then tell me which three deals you would chase first and why, in one sentence each. Do not move anything. This is a read.

Everything in [brackets] is yours to change. Run this Monday morning. It is a five-second read that usually pays for the month.

What happens when you ask

  1. Claude reads the pipeline and groups every deal by stage.
  2. It works out what has gone quiet and how long it has been quiet for.
  3. If you asked it to move something, it confirms the exact deal and stage first, then moves it and reads the result back.

Good to know

  • Say the contact's name and Claude finds the deal. You do not need to know a deal ID.
  • Won and lost are a different thing from stages. A deal can sit in "Treatment Scheduled" and be marked won. Ask for both when you want the true picture.
  • If a deal you expect is missing, it may live on a different pipeline in the same account. Ask "which pipelines exist here" first.
  • Needs the full license. The Free plan can read the board but not move deals.
  • Moving a deal to a stage from another pipeline is refused by GHL, and it names the stages that are valid. Checked on 31 August, this one was already safe.

Where people go wrong

What happenedThe fix
"It moved the wrong deal."Two contacts with the same first name. Give the full name or the email, and Claude confirms the match before moving.
"The value did not update."Value and status are separate. Say "mark it won at 2400" to set both in one go.
"Nothing shows up in the pipeline."You are looking at a different pipeline than the deals are on. Ask Claude to list the pipelines in the account.

Related guides

  • stand-up-a-pipeline
  • weekly-account-report

Works in Claude Desktop and Claude Code. Stuck? Email support@ghlcommand.com and a human answers.

GHL Command User Guide

Watch your reviews

See new reviews across clients without logging into each account.

Free plan~30 secondsForms and reviews
← All guides

What you'll get

  • New reviews for an account, read out with the star rating and what the person actually wrote.
  • The bad ones surfaced first, because those are the ones with a clock on them.
  • The account's review request link, so you can send it to a happy patient while they are still happy.

Say this

Any new reviews this week?
Show me every review under four stars.
What is our review link for this account?

What it looks like

Your Claude conversation
Any new reviews this week?
Three new reviews. Two five-star, both mentioning Sarah by name. One two-star from Aug 4: "Waited 40 minutes past my appointment time and nobody said anything." That one is unanswered and four days old. Want the wording for a reply you can post?

What happens when you ask

  1. Claude reads the reviews attached to the account.
  2. It sorts them so anything low-rated and recent comes first.
  3. It can draft your reply for you to post. Posting the reply itself is done in GHL.

Good to know

  • Replying is done by you inside GHL. Claude reads the reviews and writes the reply; a public response going out without a human reading it first is not a risk worth automating.
  • Run it across several client accounts in one sitting. Say the client's name and Claude switches, reads, and moves on.
  • A two-star review answered within a day reads completely differently to one answered in a fortnight. Speed is most of the job.
  • Reading reviews works fully on the Free plan.

Where people go wrong

What happenedThe fix
"No reviews came back and I know we have some."Reviews live per sub-account. Confirm which account you are in, then ask again. Reviews also only appear here once the platform they came from is connected under Reputation.
"It says no reviews, but there are some on our Facebook page."Having a review link for a platform is not the same as having that platform connected. Until it is connected, the reviews stay on Facebook and never reach the account.
"I want alerts, not to keep asking."Ask for a workflow instead: a review request after every completed appointment, and a notification to you on anything low.
"The reply Claude wrote sounds defensive."Tell it the tone: short, human, take responsibility, offer to fix it privately. It will rewrite.

Review links, and where the requests come from

What is my review link?
  • The review link is the URL your request messages point customers at. Read it back before you paste it into a workflow, because a wrong one sends people nowhere and nobody reports it.
  • Reviews come back with the rating, the text, the reviewer and the source, so you can answer "what are people actually saying" in one ask rather than reading a dashboard.

Related guides

  • weekly-account-report
  • trigger-links

Works in Claude Desktop and Claude Code. Stuck? Email support@ghlcommand.com and a human answers.

GHL Command User Guide

Weekly account report

One ask, a full snapshot of the account's week: leads, pipeline, and conversations.

Free plan~1 minuteContacts and leads
← All guides

What you'll get

  • New leads for the week, total contacts, open and won and lost deals, and how many conversations are live in the account.
  • Every figure labelled with the window it covers, so a week number is never mistaken for an all-time number.
  • Anything that cannot be read is reported as unavailable, not as a zero. A zero you cannot trust is worse than no number.

Say this

Give me the account report for the last 7 days.
How is the Radiance account doing this month?
Compare this week to last week.

The pro prompt

The exact ask we run on real client accountsProven live

Give me a weekly report for my [Radiance Med Spa] account covering the last [7] days. I want: new contacts this window, total contacts all time, open deals, won deals, lost deals, and how many conversations are in the account. Label every number with the exact window it covers, and say "unavailable" for anything you cannot read rather than showing a zero. Then give me the three things you would look at first if this were your account.

Everything in [brackets] is yours to change. That last line turns a list of numbers into something you can act on Monday morning.

What happens when you ask

  1. Claude reads the account: contacts, deals by status, conversations, phone numbers.
  2. It labels every figure as either "in this window" or "all time" and prints the dates.
  3. Anything it could not read comes back marked unavailable, with the reason.

Good to know

  • Revenue and appointment totals are not in this report. GHL does not hand those over in a form we would trust, and a made-up number is worse than a missing one. For appointments, ask separately. See the appointments guide.
  • The report runs across any sub-account you can reach. Say the client's name and Claude will point at that account first.
  • Paste the result straight into a client email. It is written to be read by a human, not by an analyst.
  • This works fully on the Free plan.

Where people go wrong

What happenedThe fix
"The new-lead number looks low."Check the window Claude printed. Seven days from today is not the same as this calendar week. Name the dates if it matters.
"It says conversations unavailable."That account has messaging switched off, or the key does not reach it. Claude names the reason next to the word.
"I wanted revenue in the report."Ask for orders and transactions separately. Payment figures come from the payments side of the account.

Related guides

  • count-and-report-contacts
  • track-and-move-opportunities

Works in Claude Desktop and Claude Code. Stuck? Email support@ghlcommand.com and a human answers.

GHL Command User Guide

Win back a cold list

Wake up the contacts a client already paid for, over thirty days, without burning the list.

Full license~15 minutesAutomations
← All guides

What you'll get

  • A thirty-day sequence that goes out to contacts who went quiet, spread across email and text so it does not read as a blast.
  • A segment built first, so you know exactly who is getting it and how many before a single message leaves.
  • A clean ending: everyone who does not answer is tagged and left alone, which is what keeps the list usable next year.

Say this

Build a win-back campaign for my client's old leads.
We have 900 contacts who went cold. Wake them up.
Who has not heard from us in six months?

The pro prompt

The exact ask we run on real client accountsProven live

In my [Radiance Med Spa] account, build a win-back campaign for contacts who have gone quiet. First, before building anything: find the contacts who have not replied or booked in the last [six] months, tell me how many there are, and show me ten of them so I can check the segment is right. Then build a thirty-day workflow triggered by the tag [winback-start]: an email on day 0, a text on day 3, an email on day 7, a text on day 14, and a final email on day 30. At the end, write a note on the contact and tag them [winback-no-answer]. Write the messages for [past enquiries who never booked], warm and plain. The first one asks a single question and does not pitch. The last one says plainly that it is the last message and leaves the door open. Do not add anyone to the workflow yet. Build it, show me the messages, and stop.

Everything in [brackets] is yours to change. The first paragraph is deliberate: you look at the segment before you build the campaign, because the fastest way to destroy a client's sending reputation is to mail the wrong nine hundred people.

What Claude builds

Tag added: winback-startthen
Emailone question, no pitch
Wait 3 days, then a textthen
Wait to day 7, then an emailthen
Wait to day 14, then a textthen
Wait to day 30, the last email, and say it is the lastthen
Note on the contact, tag: winback-no-answerthen

What happens when you ask

  1. Claude builds the segment first and tells you the count, so you approve a number before you approve a campaign.
  2. It writes all five messages and shows you every one.
  3. It builds the workflow as a draft. Nobody is enrolled.
  4. You read it, publish it, then add the tag to the segment in batches.

Good to know

  • Add the tag in batches, not to nine hundred people at once. A few hundred a day keeps you out of spam folders and keeps the replies answerable by a human.
  • The first message should not sell anything. It asks one question. Replies are the point; bookings come after.
  • Say plainly in the last message that it is the last one. It lifts response and it is the honest thing to do.
  • "Stop on response" ends the sequence the moment they reply, and Claude sets it here. Add an exit workflow as well for the cases a reply does not cover, such as booking straight from a link.
  • Check the account's sending domain is set up before you send a five-email sequence to a cold list, or you will find out the hard way.

Where people go wrong

What happenedThe fix
"Open rates collapsed and now everything goes to spam."The list went out all at once, cold. Enrol in batches, and warm the domain first.
"People replied and kept getting the campaign."Check "stop on response" is on. For people who booked without replying, add an exit workflow pointed at this campaign.
"It went to customers, not old leads."The segment was wrong. Rebuild it and read the sample of ten before enrolling anyone.

Related guides

  • bulk-tag-and-clean-up
  • add-an-exit-workflow
  • build-nurture-sequence

Works in Claude Desktop and Claude Code. Stuck? Email support@ghlcommand.com and a human answers.

GHL Command User Guide

When a workflow runs fine but will not save

Understand the error that names steps you never touched, and fix it without dropping anyone mid-sequence.

Free plan~3 minutesAutomations
← All guides

What you'll get

  • Plain English for the error that says Action validation failed and then lists steps you did not touch.
  • The reason your workflow runs perfectly and still refuses to save.
  • What GHL Command does about it automatically, what it refuses to do, and why refusing is the right answer.

The short version

Your workflow is not broken. It runs. Contacts move through it and messages go out exactly as they should.

What is broken is your ability to edit it. GoHighLevel tightened what it accepts when a workflow is saved, and older workflows store shapes that no longer pass. Change one step, hit save, and GHL rejects the whole thing and names three other steps as the problem. That is why the error looks unrelated to what you just did.

This affects workflows built from older snapshots and templates. On one real account, 20 of 43 workflows were in this state and the account looked completely healthy from inside GHL.

Say this

Audit my workflows and tell me which ones cannot be saved.
Why does this workflow fail with "Action validation failed" when I try to edit it?
Is anyone part-way through this workflow right now?

What the audit tells you now

Run an audit and you may see warnings that did not exist before. They are warnings, not errors, and the difference matters:

WarningWhat it meansWhat to do
Step id that GHL now rejectsThe workflow runs fine. You cannot edit it until the ids are renewed.See "Renewing the ids" below. Do not rush it.
Singular wait unit ("day" or "minute")Same: runs fine, blocks saving.Nothing. This is corrected automatically the next time the workflow is saved.
Notification with no recipientThe opposite problem: it saves fine and runs, and quietly notifies nobody.Pick a person to notify, or set it to notify everyone.
Social step with no connected accountAlso runs and quietly does nothing.Connect the account in Settings → Integrations.

Read those two groups carefully, because the advice is opposite. The first two mean *"it works, you just cannot change it."* The last two mean *"it looks fine and is doing nothing."*

Renewing the ids, and the one thing that can go wrong

Fixing the id problem means giving every step a new identifier. Here is the part nobody tells you:

A contact part-way through a workflow is attached to the step they are waiting on. Somebody sitting at "wait 3 days" is held there by that step's id. Renew the id and that contact is dropped out of the sequence, silently and permanently, with no way to put them back. GoHighLevel has no way to place a contact back at step seven.

So GHL Command will not do it while anyone is waiting. If you ask it to change a step that has someone parked on it, it refuses, tells you how many people are affected, and writes nothing.

That is deliberate. A refused edit costs you a wait. A dropped lead costs you the lead.

What it will still do: every other step in that workflow can be edited, renewed, added or removed. You can repair the whole workflow around the person who is waiting.

What counts as "their step": the step they are standing on, and any step it depends on. Some steps wait on another step rather than containing it: a goal that waits for a particular email to be opened is holding a reference to that email step. Change the email and the person waiting on the goal is affected, even though you never touched the goal. Those steps are protected too.

When to do it: when nobody is mid-sequence. For a nurture, that is usually after the last person has finished it. For a template or a brand-new account, it is safe immediately, because nobody is in it yet.

Good to know

  • Running the workflow is never affected. If you change nothing, nothing breaks. There is no rush.
  • A workflow can show enrolments and still have nobody waiting: those are people who have already finished. Only people mid-sequence matter.
  • This works fully on the Free plan. Making the repairs needs the full license.
  • If a workflow was built from a snapshot or a template, assume it is affected until the audit says otherwise. That is where these come from.

Where people go wrong

What happenedThe fix
"The error named three steps I never touched, so I assumed I broke something else."You did not. GoHighLevel rejects the whole workflow at once and reports every step it does not like, including the ones you left alone.
"The audit said 'ok' before, so I thought the account was clean."Older versions could not see this at all. Re-run the audit: these warnings are new.
"I renewed the ids on a live nurture and people stopped receiving messages."They were dropped at the step they were waiting on. This is exactly why the product now refuses. Check who is waiting before you repair.
"It refused to let me rename a step."If someone is parked on that step, even a rename is refused. It is cautious on purpose. Wait until they have moved on.
"I want to force it through anyway."For an EDIT there is no override, and that is intentional. There is no way to put a dropped contact back, so the product will not offer you a button that loses them.
"I need to delete the whole workflow and people are in it."Deleting is different: you cannot delete a workflow and keep the people inside it, so this one is your call rather than a refusal. The first attempt tells you how many are part-way through; run it again naming that number and it proceeds. Nothing is deleted until you do.

Works in Claude Desktop and Claude Code. Stuck? Email support@ghlcommand.com and a human answers.