GoHighLevel in Agent Builder
Give an agent its own GoHighLevel connection for one sub-account, then look up contacts, pipelines and calendars, or add contacts, opportunities and messages, with 55 actions.
Checked against the app on
What the GoHighLevel step does
The GoHighLevel step lets an agent work in one sub-account: contacts, opportunities, calendars, conversations and invoices. A step on the agent's path does one action. The same step, attached to an Intelligence step, can offer several, and the AI decides which to call. There are 55 actions. GoHighLevel has no trigger of its own, so the agent starts from a schedule, from an email, or from another system's alert.
Build modular AI workflows with reusable nodes
Quote request
Outlook · Inbox/Quotes
Add them to the pipeline
GPT-5.6 Terra
Contacts and opportunities
Upsert contact
- 1GoHighLevel in the Integration group of the Nodes panel. It is the last step in that group.
- 2The step used as a tool. Its summary names only the first action, Upsert contact, even though two are ticked.
- 3Connection: this agent's sub-account, shown by the location name.
- 4Actions: what the AI may call. Here, add a contact and open an opportunity.
- 5Require approval is off. Turn on Pause for approval if someone should agree before each call.
Centrus works alongside GoHighLevel. Contacts, pipelines and calendars stay there. A typical agent adds a contact and an opportunity when a quote request arrives, emails a weekly pipeline summary, or sends one follow-up to each quiet conversation. Chat uses a separate connection: connecting this step does not connect chat, and connecting chat does not connect the step. For asking questions in chat, see GoHighLevel in chat. For how every integration is connected, see Integrations overview.
Add the step
Open the agent and find GoHighLevel in the Integration group of the Nodes panel. It sits at the bottom of that group, under Cin7 Core. Its line reads: Looks up and updates GoHighLevel contacts, opportunities, calendars, conversations, and invoices, using the Private Integration Token and location you connect. Drag it onto the canvas and connect the step before it to its left-hand side. A new step is already set to Search contacts, so that is the summary you see until you choose a different action. Its name on the canvas starts as GoHighLevel.
Quote request
Outlook · Inbox/Quotes
GoHighLevel
Search contacts
- 1GoHighLevel in the Integration group. Drag it onto the canvas.
- 2The new step. It starts on Search contacts until you choose another action in Endpoint.
On a phone, Agent Builder shows the canvas only. The Nodes panel is hidden on screens narrower than 768 pixels and the Details panel on screens narrower than 1,024 pixels, so you can follow an agent's steps on a phone but need a tablet or computer to add a GoHighLevel step or change its settings.

Build modular AI workflows with reusable nodes
Quote request
Outlook · Inbox/Quotes
Add them to the pipeline
GPT-5.6 Terra
Contacts and opportunities
Upsert contact
Connect the step
The connection belongs to this agent alone. It is one sub-account, not the agency view, and it is separate from the organisation's GoHighLevel connection in chat. One connection covers every GoHighLevel step in the agent, so you only connect once per agent. It is not shared with Outlook, BigChange or any other step.
You need three values from inside the sub-account. The connect window says to open Settings, then Private Integrations, and to copy a token that starts with pit-. The Location ID is on Business Profile, or the id after / in the address bar. Timezone is the sub-account's zone, written like Europe/. The window also lists the scopes to tick: contacts, opportunities, calendars, calendar events, conversations and locations, including the write scopes. Connecting only proves that locations can be read. A missing scope fails later, when the step calls that part of GoHighLevel. A white-label sub-account uses the same token and the same host. If you do not have these values, ask the person who administers the sub-account.
- 1Save the agent with Save draft. Until it has been saved once, the Connection section reads Save this workflow as a draft first, then connect the account. and Connect is greyed out.
- 2Select the GoHighLevel step. In the Details panel, open Connection and click Connect.
- 3In the Connect GoHighLevel window, enter Private Integration Token, Location ID and Timezone, then click Connect.
- 4Centrus reads that location with the token. If GoHighLevel accepts it, Connection reads Connected, followed by the location's name. Meridian FM's sub-account shows as Meridian FM.
Not connected
Save this workflow as a draft first, then connect the account.
Not connected
Connect your GoHighLevel account to use this node.
Connected · Meridian FM
DisconnectConnect GoHighLevel
Inside the sub-account (not the agency view): Settings → Private Integrations. The token starts with pit-. The location id is on Business Profile, or the id after /location/ in the URL. Timezone is the sub-account IANA zone, for example Europe/London. Scopes: contacts.readonly, contacts.write, opportunities.readonly, opportunities.write, calendars.readonly, calendars.write, calendars/events.readonly, calendars/events.write, conversations.readonly, conversations.write, conversations/message.write, locations.readonly. Connect only proves locations.readonly. Stored on this automation only. This does not connect chat. A white-label sub-account uses the same token and host.
1Connect GoHighLevel
Inside the sub-account (not the agency view): Settings → Private Integrations. The token starts with pit-. The location id is on Business Profile, or the id after /location/ in the URL. Timezone is the sub-account IANA zone, for example Europe/London. Scopes: contacts.readonly, contacts.write, opportunities.readonly, opportunities.write, calendars.readonly, calendars.write, calendars/events.readonly, calendars/events.write, conversations.readonly, conversations.write, conversations/message.write, locations.readonly. Connect only proves locations.readonly. Stored on this automation only. This does not connect chat. A white-label sub-account uses the same token and host.
- 1Where the token and location id come from, which scopes to tick, and that chat is a separate connection.
- 2Copy from existing agent, for reusing a connection you made on another agent.
- 3The three values. The token is hidden as you type it.
- 4Connect checks the location with GoHighLevel, then saves the details on this agent.
- 5The agents you can copy from. The list shows the agent name only, not the sub-account.
Centrus checks the three values when you click Connect. An empty location id, a token that does not start with pit-, or a timezone that is not a zone name such as Europe/ is refused, and nothing is saved. If GoHighLevel rejects the token, the window stays open with that message. A successful connect returns Successfully connected to GoHighLevel. Try a dry run afterwards, as described under Test before it goes live.
Reusing a connection. If you have already connected GoHighLevel on another agent you created, choose that agent under Copy from existing agent. Centrus fills in the three fields from it, and you click Connect to save them on this agent. The list only shows agents you created that are not archived and have a GoHighLevel connection, so an agent someone else shared with you never appears. The names in the list do not include the location, so two agents on different sub-accounts look the same until you open one. When there are none, the box reads No other agents with this connection.
Sharing and copying the agent. When you share an agent, its GoHighLevel connection stays on the agent. People you share it with cannot see or copy the token. Runs use that connection, because GoHighLevel has no per-person sign-in on the step. When you duplicate an agent, the steps are copied but the connection is not, so connect GoHighLevel again on the copy. Copy from existing agent makes that quick. For the details, see Share an agent.
Disconnecting. Disconnect removes the credentials from this agent only. Its GoHighLevel steps stop working until someone connects it again. Other agents keep their own connections, and the chat connection is left as it is.
Choose an action
Select the step and open Endpoint in the Details panel. The section's own line reads Choose the GoHighLevel action this step should run. Endpoint tool type holds all 55 actions in one list that starts with Search contacts. The list has no search box and no headings, so the tables at the end of this guide are the quickest way to find the exact name you need.
Choose the GoHighLevel action this step should run.
Select an endpoint to configure its inputs.
Choose the GoHighLevel action this step should run.
POST /contacts/search. Find contacts by name, email, or phone. Location is fixed on the connection.
2- 1Endpoint tool type, open. Scroll for the action you want.
- 2A line on what the chosen action does, including the address it calls.
- 3Who fills in the fields. Keep Set endpoint fields here on a step in the main flow.
Keep Set endpoint fields here when the step sits in the agent's path. Let AI populate endpoint fields hides the fields so that an AI can fill them, but on a step in the main flow nothing fills them in when the step runs. To have an AI choose the values, attach the step to an Intelligence step as a tool, as described below.
Each action then shows its own fields in a box titled with the action's name. The label is the first sentence of the field's description, or the field name with spaces if it has none, and a required field has an asterisk. Search opportunities has Q, Pipeline Id and Status. Q is the search text. Status is typed as open, won, lost or abandoned. Search contacts labels its search box Name, email, or phone.
On the main path, only seven actions use what you type: Search contacts, Search opportunities, Search conversations, List appointments, List invoices, List form submissions and List transactions. A handful of lookups that need no input also run, including List pipelines, List calendars, List calendar groups, List location tags and Search businesses. Every other action, including Upsert contact, Create opportunity, Send message and Get contact, ignores the boxes and calls GoHighLevel with nothing in them. The step then fails its own checks, for example email or phone is required, even though Email is filled in. Put those actions on an Intelligence step, where the AI's values are sent.
To use a value from an earlier step on one of the seven lists, open Step data references at the top of the Details panel and click a field to copy its reference, then paste it into a text field. An email trigger's details are not listed there. Type them, for example {{ trigger.json.fromAddress }} or {{ trigger.json.subject }}. Inside a Loop, the current item is {{ item.json }} followed by the field name you saw on a test run. Monetary Value on Create opportunity is a number field, so a reference pasted into it is turned into a number and lost. That only matters once the action is running as a tool, because on the main path the box is not sent at all.
GET /opportunities/search. Optional q, pipelineId, and status.
Downstream nodes can read this step as {{ steps.integration-gohighlevel-1791540900000-2.json.field }}
Paste references into subject, body, field paths, or expressions. Run the workflow once to see real field names in the Runs panel.
Earlier steps
Quote request
Email received · trigger-email-1791540900000-1
Run trigger
triggeredAtPOST /contacts/upsert. Requires email or phone, and firstName or name. tags replaces the contact tags.
- 1Status on Search opportunities. This list does use the boxes.
- 2Step data references. Click a field to copy its reference into a text box.
- 3Email on Upsert contact. The box is visible, and on the main path it is not sent.
What a list passes on. Search contacts, Search opportunities, Search conversations, List invoices, List form submissions and List transactions each pass on one item per row, up to five pages of 20, so 100 rows. List appointments is one response, at most 100 events, and it needs a calendar id. Later steps reach those items through Step data references, and an Intelligence step can read them together. To do something once per row, put the next step inside a Loop, described in Conditions, loops and approvals.
As a tool for an AI step. Connect a GoHighLevel step to the Tools side of an Intelligence step and its Details panel changes. Instead of one endpoint, Actions lets you choose several, with a search box, and the AI decides when to call each one and fills in the fields itself. The canvas summary still shows only the first action's name. Upsert contact needs an email or a phone, and a first name or a name. Create opportunity needs a pipeline id, a contact id and a name, and leaves the status as open if you do not set one.
Quote request
Outlook · Inbox/Quotes
Add them to the pipeline
GPT-5.6 Terra
Contacts and opportunities
Upsert contact
- 1The GoHighLevel step attached to the Intelligence step as a tool.
- 2Actions: the actions the AI may call. These values are sent.
- 3Pause for approval: each call the AI makes waits for someone to approve it in the Runs panel.
Pause for approval appears on every GoHighLevel step but only applies to calls an AI makes, so it has no effect on a step in the main flow. To ask someone before a main-flow step changes GoHighLevel, put an Approval step in front of it. Do not give an Intelligence step the long lists (Search contacts, Search opportunities, Search conversations, List appointments, List invoices, List form submissions or List transactions). Centrus warns you, because the whole list would be loaded into the AI. Use the Ingest step for those, as described under Limits and good to know.
Start an agent from GoHighLevel alerts
GoHighLevel has no trigger of its own. Nothing in the sub-account starts a run by itself. Put another trigger at the start of the agent, then the GoHighLevel step. Three patterns cover the usual work.
An email. Email received starts a run for each new message in one Outlook folder or one Gmail label. Point it at Inbox/Quotes, set From contains to @northgatehousing.co.uk and Subject contains to quote, and the next step can add the sender as a contact. The trigger hands on fromAddress, fromName and subject. Setting up the mailbox, the filters and what each run receives is covered in Start an agent when an email arrives.
Quote request
Outlook · Inbox/Quotes
Add them to the pipeline
GPT-5.6 Terra
- 1Mailbox: the Outlook folder this agent watches. This is not a GoHighLevel trigger.
- 2From contains: only mail from that domain starts a run.
- 3Subject contains: the word quote must appear in the subject.
- 4A message that misses a filter does not start a run and does not use a credit.
A schedule. A Schedule Trigger starts the agent on a clock, with no alert from GoHighLevel. Monday at 08:00 suits a pipeline summary. Weekdays at 09:00 suits a follow-up pass. The trigger itself is free. The run still costs 1 credit, like any other run. For the trigger choices, see Choose how an agent starts.
Another system's alert. A BigChange, Simpro, Joblogic, Fixflo, Freshdesk or Ostara webhook can start the agent, and a GoHighLevel step later in the path can add a contact or an opportunity from that alert. The webhook uses that other system's connection, not the GoHighLevel one, so the agent needs both. The general picture is in Start an agent from a system alert. Alerts and schedules only start runs once the agent is published. Run now works on drafts.
Example agents
Quote request
Outlook · Inbox/Quotes
Add them to the pipeline
GPT-5.6 Terra
Contacts and opportunities
Upsert contact
Quote requests adds a contact and an opportunity when Northgate Housing emails about a quote. Quote request watches Outlook, Inbox/Quotes, with From contains set to @northgatehousing.co.uk and Subject contains set to quote. Add them to the pipeline reads the sender and the subject, for example Sarah Price at sarah.price@northgatehousing.co.uk with the subject Quote for the boiler at Riverside House. Contacts and opportunities gives it Upsert contact and Create opportunity. Upsert matches on the email address and uses the sender's name. Create opportunity uses a pipeline id you already know from List pipelines, names the opportunity from the subject, and leaves the status open. The two writes run as tools, because those actions do not receive boxes filled in on the main path. Each matching email costs 1 credit for the run, at least 2 for the Intelligence step, and 1 for each GoHighLevel call it makes.
Monday at 08:00
Weekly at 08:00 · Mon
Open opportunities
Search opportunities
Write the summary
GPT-5.6 Terra
Email John
1 action enabled
Weekly pipeline summary emails John Martin the open opportunities every Monday at 08:00. Open opportunities uses Search opportunities with Status set to open. That list does use its boxes, and it passes on one item per opportunity, up to 100. Write the summary reads those items together and drafts a short note: how many are open, and which sites they name, such as Riverside House and 12 High Street. Email John sends it from the agent's Outlook connection to john.martin@meridianfm.co.uk. The list is one GoHighLevel call however many rows come back.
Weekdays at 09:00
Daily at 09:00 · Mon, Tue, Wed, Thu, Fri
Inbox threads
Search conversations
Each thread
For each of incoming items
Write the follow-up
GPT-5.6 Terra
Send the follow-up
Send message
Follow up after 7 days sends one SMS to each contact whose conversation has gone quiet. Inbox threads uses Search conversations, which returns one item per thread and does not itself know how old the last reply is. Each thread is a Loop set to each incoming item, so the body runs once per thread. Write the follow-up reads that thread with Get messages (20 messages at most) and calls Send message only when the last reply is older than 7 days. Send message is a tool on that Intelligence step, with type SMS. On the main path the message box would not be sent. The Loop's summary reads For each of incoming items. Connect the Intelligence step back into the Loop so it can move on. See Conditions, loops and approvals.
Test before it goes live
A dry run is the safe way to try a GoHighLevel step. Open Runs in the toolbar, click Run now and choose Dry run (no actions performed). Read actions such as Search opportunities, List pipelines and Get contact call GoHighLevel for real, so you see real rows. Write actions, such as Upsert contact, Create opportunity and Send message, are skipped, so nothing in the sub-account changes. Run for real performs every action, including the writes.
Runs
Each run executes the workflow node-by-node. Select a run to follow its steps.
Triggered
Found 12 GoHighLevel rows
2Step output
{
"handles": { "main": 12 },
"items": {
"main": [
{
"name": "Riverside House boiler",
"status": "open",
"monetaryValue": 4800
}
]
}
}- 1The dry run, started with Run now.
- 2The step's summary: how many rows GoHighLevel returned.
- 3One of those rows, as later steps receive it.
Open a step in the run to see its output. A list's summary is Found, then the count, then GoHighLevel row or rows. The panel shows the first 50 items, and later steps still receive all of them. A write that actually ran summarises with an internal action name rather than Upsert contact. A dry run of a write does the same, and says it was not performed. Read the output, not that line, to see what was sent. A dry run costs 1 credit for the run. The steps themselves are not charged. A real email or a real Monday schedule is not a dry run, so test writes with Run now first. For Run now, dry runs and the Runs panel in full, see Test an agent before it goes live.
Costs
A GoHighLevel step costs 1 automation credit each time it runs successfully, whatever the action and however many rows come back. A step that fails costs nothing. When the step is a tool, each call the AI makes costs 1 credit. GoHighLevel has no trigger. A run started by a schedule, an email or another system's alert still costs 1 credit for the run, and that trigger itself is free.
Weekly pipeline summary
Every run
When the schedule starts it
Open opportunities
GoHighLevel, one list
Write the summary
Intelligence, at least
Email John
Outlook
Each run
At least 5
The schedule trigger is free. One search stays 1 credit however many opportunities it returns, up to 100.
Follow up after 7 days
Every run
When the schedule starts it
Inbox threads
GoHighLevel, one list
Write the follow-up
Intelligence, once per thread
Send the follow-up
GoHighLevel, once per SMS
Each run
2, plus at least 2 per thread and 1 per SMS
The Loop itself is free. Eight quiet threads that each get an SMS are eight sends.
Inside a Loop, the GoHighLevel step is charged on every pass that succeeds, so a Loop that sends 40 messages costs 40 credits for that step. The Loop itself is free. A single list is one credit, which is cheaper than fetching the same records one at a time. An Intelligence step costs at least 2 credits, and more as the text it reads gets longer. For allowances, limits and how to see what each run cost, see Automation credits and usage limits.
Limits and good to know
GET /calendars/:calendarId/free-slots. startDate and endDate are YYYY-MM-DD in the connection timezone. The range cannot exceed 31 days.
This node always uses the agent's own connection, even though the workflow is set to per-user integration mode. GoHighLevel doesn't support per-user credentials.
Connected · Meridian FM
Disconnect- 1Get free slots. Both dates are labelled YYYY-MM-DD. The first is the start, the second is the end.
- 2The note shown when the agent is in per-user integration mode.
- Dates are year first. Get free slots needs a start and an end, written as 2026-10-09, in the connection timezone. The range cannot be longer than 31 days. List appointments uses the same shape. If you leave its dates empty, the window is today through the next 7 days, and the response holds at most 100 events.
- 100 rows on a list, 500 through Ingest. Search contacts, Search opportunities, Search conversations, List invoices, List form submissions and List transactions fetch up to five pages of 20 on the step. Ingest can ask for up to 25 pages, which is 500 rows. List appointments does not page: one response, 100 events, and it needs a calendar id. Search businesses returns at most 20 businesses and has no further page.
- Wide lists use Ingest. Do not attach those seven lists to an Intelligence step. Ingest offers them under GoHighLevel. See Large lists.
- Messages. Get messages returns at most 20. Send message accepts
SMSorEmailonly. An email needs a subject and a body. WhatsApp and other social channels are refused. The message is a real send. - Tags. Add contact tags adds the tags you name. Upsert contact and Update contact replace the contact's tags with the ones you send, so a short list removes the rest. Tags and Followers are plain text boxes, and the action only accepts a list, so a line you type in the box is not sent. Use the step as a tool if the AI can pass a real list, and check a dry run before you rely on it.
- What you cannot do. There is no action to create an invoice. Record invoice payment records a payment already taken and does not charge a card. There is no delete for an appointment: Update appointment can set Appointment Status to cancel it, and one occurrence of a recurring appointment uses a special event id. There is no list of workflows, so Add contact to workflow needs the id from GoHighLevel.
- 30 seconds. A call is given 30 seconds. After that the step fails. If GoHighLevel is busy, the message is GoHighLevel is busy. Try again in a moment. and the run can retry.
- Per-user integration mode. GoHighLevel only works with the agent's own connection. In per-user mode the Connection section says the step still uses that connection. Keep agents that use it on the agent's own connection. A scheduled run has nobody to borrow an account from anyway.
- The location is fixed. Actions do not ask for a location id. Every call uses the sub-account you connected. To work in a second sub-account, use a second agent.
- Writes are claimed once. Before a write, the run records that this step is about to change GoHighLevel. A repeat of the same write in the same run is skipped. A dry run does not record that claim and does not call GoHighLevel for the write.
When it does not work
No output recorded.
GoHighLevel is not connected on this automation.
No output recorded.
email or phone is required
- 1The agent has no GoHighLevel connection.
- 2The boxes were filled in, and the step did not send them.
- GoHighLevel is not connected on this automation. Open the step's Connection section and click Connect. If you have duplicated the agent, the copy needs its own connection. A chat connection does not count.
- Private Integration Token must start with pit-. Create the token under Settings, Private Integrations, inside the sub-account, not the agency view. Nothing is saved until the token is accepted.
- Location ID is required. Copy it from Business Profile. The field was empty. You can also copy the id after
/in the address bar.location/ - Timezone is required or Timezone must be an IANA zone, for example Europe/London.
Londonon its own is refused. UseEurope/.London - GoHighLevel refused the token. The token was rejected, or a scope is missing. Connecting only checks that locations can be read, so a later action can fail this way even after a successful connect. Edit the Private Integration, tick the missing scope, then disconnect and connect again.
- Stored GoHighLevel credentials are incomplete. The saved connection is missing the token or the location id. Disconnect and connect again with all three values.
- Could not verify GoHighLevel credentials. GoHighLevel did not accept the three values. Check the token, the location id and that you are in the sub-account.
- email or phone is required, firstName or name is required, or pipelineId, contactId, and name are required, even though the boxes are filled in. On the main path those actions do not receive the boxes. Attach the step to an Intelligence step, or use one of the seven lists, which do receive them. See Choose an action.
- tags is required. Add contact tags and Remove contact tags only accept a list, and the box is plain text, so a line you type does not count. The same applies to Followers.
- Free slots cover at most 31 days. Narrow startDate and endDate. endDate must be on or after startDate means the two dates are the wrong way round. Both boxes are labelled YYYY-MM-DD.
- calendarId is required. List appointments and Get free slots need a calendar id from List calendars.
- type must be SMS or Email. Send message refuses WhatsApp and other channels. SMS needs message. Email needs subject and html or message.
- Connect a timezone on this GoHighLevel account before using a date or a time without an offset. The connection has no timezone, so a time such as 2026-10-09T09:00 cannot be placed. Reconnect and set Timezone.
- GoHighLevel is busy. Try again in a moment. Wait and run it again. A long list can also hit this if you page through Ingest.
- No action selected. Rare, because a new step starts on Search contacts. Choose one under Endpoint tool type if the summary reads No endpoint selected.
- An alert never starts the agent. GoHighLevel does not listen for alerts. Check the Email received trigger or the Schedule Trigger, and publish the agent. See Start an agent when an email arrives.
- No other agents with this connection. None of the agents you created has a GoHighLevel connection. Enter the three values by hand.
- You can only copy credentials from agents you have created. The agent you picked was shared with you, or it is archived. Connect by typing the three values.
Actions and endpoints
The GoHighLevel step offers 55 actions: 24 read from the sub-account and 31 change it. Every call goes to https:/. The location is taken from the connection, not from a field on the action. On the main path, only the seven lists named under Choose an action use the values you type. The other actions receive those values when an Intelligence step calls them as tools.
| Action | What it does | Reads or changes | Endpoint |
|---|---|---|---|
| Search contacts | Finds contacts by name, email or phone. One item per contact, up to 100 on the step. Leave the search empty to list the first pages. | Reads | POST / |
| Get contact | Fetches one contact by its id. | Reads | GET / |
| Get duplicate contact | Looks for an existing contact by email or phone. At least one is required. The phone field is named number. | Reads | GET / |
| Upsert contact | Creates or updates a contact matched on email or phone. Needs an email or a phone, and a first name or a name. Tags replace the contact's tags. | Changes | POST / |
| Update contact | Updates fields on an existing contact. Tags replace the contact's tags. | Changes | PUT / |
| Delete contact | Permanently deletes a contact. | Changes | DELETE / |
| Add contact tags | Adds the named tags. Does not replace tags already on the contact. | Changes | POST / |
| Remove contact tags | Removes only the tags named in the request. | Changes | DELETE / |
| Action | What it does | Reads or changes | Endpoint |
|---|---|---|---|
| List contact notes | Lists notes on one contact. | Reads | GET / |
| Create contact note | Adds a note. The body is the note text. | Changes | POST / |
| Update contact note | Replaces the text of one note. | Changes | PUT / |
| Delete contact note | Deletes one note. | Changes | DELETE / |
| List contact tasks | Lists tasks on one contact. | Reads | GET / |
| Create contact task | Adds a task. Title and due date are required. A new task is not completed unless you say so. The due date is a day, or a time in the connection timezone. | Changes | POST / |
| Update contact task | Updates one task. The due date is sent as given. | Changes | PUT / |
| Complete contact task | Marks one task completed. | Changes | PUT / |
| Delete contact task | Deletes one task. | Changes | DELETE / |
| Add contact followers | Adds followers by user id. | Changes | POST / |
| Remove contact followers | Removes followers by user id. | Changes | DELETE / |
| List contact appointments | Lists appointments for one contact. | Reads | GET / |
| Action | What it does | Reads or changes | Endpoint |
|---|---|---|---|
| Add contact to campaign | Adds a contact to one campaign. Both ids are required. | Changes | POST / |
| Remove contact from campaign | Removes a contact from one campaign. | Changes | DELETE / |
| Remove contact from all campaigns | Removes the contact from every campaign. | Changes | DELETE / |
| Add contact to workflow | Adds a contact to one workflow. There is no action that lists workflows, so take the id from GoHighLevel. | Changes | POST / |
| Remove contact from workflow | Removes a contact from one workflow. | Changes | DELETE / |
| Action | What it does | Reads or changes | Endpoint |
|---|---|---|---|
| Search opportunities | Finds opportunities. Optional search text, pipeline id and status. One item per opportunity, up to 100 on the step. | Reads | GET / |
| Get opportunity | Fetches one opportunity by its id. | Reads | GET / |
| List pipelines | Lists pipelines and their stages for the connected sub-account. | Reads | GET / |
| Create opportunity | Creates an opportunity. Needs a pipeline id, a contact id and a name. Status defaults to open. | Changes | POST / |
| Update opportunity | Updates one opportunity's pipeline, stage, name, status or value. | Changes | PUT / |
| Delete opportunity | Permanently deletes an opportunity. | Changes | DELETE / |
| Update opportunity status | Sets the status to open, won, lost or abandoned. This is separate from the general update. | Changes | PUT / |
| Add opportunity followers | Adds followers by user id. | Changes | POST / |
| Remove opportunity followers | Removes followers by user id. | Changes | DELETE / |
| Action | What it does | Reads or changes | Endpoint |
|---|---|---|---|
| List calendars | Lists calendars in the sub-account. Use an id with free slots or a new appointment. | Reads | GET / |
| List calendar groups | Lists calendar groups. | Reads | GET / |
| Get free slots | Free slots for one calendar. Start and end are dates in the connection timezone, and the range cannot exceed 31 days. | Reads | GET / |
| List appointments | Events on one calendar. Needs a calendar id. Empty dates mean today through the next 7 days. One response, at most 100 events. | Reads | GET / |
| Get appointment | Fetches one appointment by its event id. | Reads | GET / |
| Create appointment | Books an appointment. Needs a calendar id, a contact id and a start time in the connection timezone. | Changes | POST / |
| Update appointment | Updates one appointment. To cancel, set the appointment status. There is no separate delete. One occurrence of a recurring appointment uses a special event id. | Changes | PUT / |
| Action | What it does | Reads or changes | Endpoint |
|---|---|---|---|
| Search conversations | Finds inbox threads. Optional search text or contact id. One item per thread, up to 100 on the step. | Reads | GET / |
| Get messages | Messages in one conversation. At most 20. | Reads | GET / |
| Send message | Sends a real SMS or email. WhatsApp and other social channels are refused. Email needs a subject and a body. | Changes | POST / |
| Action | What it does | Reads or changes | Endpoint |
|---|---|---|---|
| List invoices | Lists invoices. Optional status, a start and end written as dates, and a search. One item per invoice, up to 100 on the step. | Reads | GET / |
| Get invoice | Fetches one invoice by its id. | Reads | GET / |
| Send invoice | Sends an invoice. | Changes | POST / |
| Void invoice | Voids an invoice. | Changes | POST / |
| Record invoice payment | Records a payment already taken. Does not charge a card. Needs an invoice id and an amount. | Changes | POST / |
| List transactions | Lists payment transactions. One item per transaction, up to 100 on the step. | Reads | GET / |
| Action | What it does | Reads or changes | Endpoint |
|---|---|---|---|
| Search businesses | Lists businesses. At most 20, with no further page. | Reads | GET / |
| Get business | Fetches one business by its id. | Reads | GET / |
| List forms | Lists forms. An optional skip is in the catalogue, and the step does not send it. | Reads | GET / |
| List form submissions | Lists form submissions. One item per submission, up to 100 on the step. | Reads | GET / |
| List location tags | Lists the tags defined on the connected sub-account. | Reads | GET / |