# Botpress Integration: GoHighLevel
GoHighLevel OAuth Integration Guide
For further details, refer to the GoHighLevel API documentation.
Loom video walk through setting up the OAuth configuration.
Step 1: Create a Developer App
- Go to the GoHighLevel Marketplace.
- Sign up for a developer account (if you haven’t already).
- Navigate to "My Apps", then click on "Create App."
- Fill in the required details in the form and submit it. Your app will be created.
- Click on your newly created app to access its settings.
- Configure the required redirect URI, OAuth scopes and generate API keys.
Required OAuth Scopes (If using every card)
contacts.write
conversations.readonly
users.write
opportunities.readonly
opportunities.write
payments/orders.readonly
payments/orders.write
calendars.readonly
calendars.write
calendars/events.readonly
calendars/events.write
companies.readonly
businesses.readonly
businesses.write
Step 2: Generate the Authorization URL
Use the appropriate authorization URL based on whether you are using the standard GoHighLevel or a white-label instance.
Standard (Non-White Label) URL
https://marketplace.gohighlevel.com/oauth/chooselocation?response_type=code&redirect_uri=BOTPRESS_WEBHOOK/oauth&client_id=CLIENT_ID&scope=contacts.readonly contacts.write conversations.readonly users.write opportunities.readonly opportunities.write payments/orders.readonly payments/orders.write calendars.readonly calendars.write calendars/events.readonly calendars/events.write companies.readonly businesses.readonly businesses.write
White Label URL
https://marketplace.leadconnectorhq.com/oauth/chooselocation?response_type=code&redirect_uri=BOTPRESS_WEBHOOK/oauth&client_id=CLIENT_ID&scope=contacts.readonly contacts.write conversations.readonly users.write opportunities.readonly opportunities.write payments/orders.readonly payments/orders.write calendars.readonly calendars.write calendars/events.readonly calendars/events.write companies.readonly businesses.readonly businesses.write
Step 3: Obtain the Authorization Code
When a user grants access, their browser will be redirected to the specified redirect URI with an authorization code as a query parameter.
Example:
https://myapp.com/oauth/callback/gohighlevel?code=7676cjcbdc6t76cdcbkjcd09821jknnkj
Copy the authorization code from the URL.
Step 4: Exchange the Code for an Access Token
- Go to GoHighLevel API Token Exchange.
- Enter the following details:
- Client ID
- Client Secret
- Authorization Code (from Step 3)
- Submit the request.
Step 5: Save the Access and Refresh Tokens
Once you successfully exchange the authorization code, you will receive a response containing:
{
"access_token": "your_access_token_here",
"refresh_token": "your_refresh_token_here",
}
- Save the
access_token
andrefresh_token
. - Enter these credentials into Botpress and your client id and secret id for authentication.
Overview
This Botpress integration allows seamless interaction with the GoHighLevel CRM. It enables users to manage contacts, opportunities, appointments, and orders directly through their chatbot.
Features
- Contacts Management: Create, retrieve, update, delete, and upsert contacts.
- Opportunities Management: Create, update, delete, and retrieve opportunities.
- Appointments & Calendar Events: Create, update, retrieve, and delete events.
- Orders Management: List orders and retrieve orders by ID.
- General API Call: Execute custom API requests to GoHighLevel.
API Functions & Usage
Below are the available actions in this integration:
1️⃣ Contacts Management
Create Contact
- Description: Creates a new contact.
- Method:
POST /contacts/
- Input:
{
"firstName":"John",
"lastName":"Doe",
"locationId":"qWRoUZ6kNRf4Mx3RRtgs"
}
- Output:
{
"success": true,
"message": "Contact created successfully",
"data": "{contact details}"
}
Get Contact
- Description: Retrieves a contact by ID.
- Method:
GET /contacts/{contactId}
- Input:
contactId: 123456
- Output: Same as above.
Update Contact
- Description: Updates an existing contact.
- Method:
PUT /contacts/{contactId}
- Input:
contactId: 12345
{
"firstName": "NewFirstName"
}
- Output: Same as above.
Delete Contact
- Description: Deletes a contact by ID.
- Method:
DELETE /contacts/{contactId}
- Input:
contactId: 123456
- Output:
{
"success": true,
"message": "Contact deleted successfully"
}
Upsert Contact
- Description: Creates or updates a contact based on existing data.
- Method:
POST /contacts/upsert
- Input: Same as
Create Contact
. - Output: Same as
Create Contact
.
Get Contacts by Business ID
- Description: Retrieves contacts for a specific business ID.
- Method:
GET /contacts/business/{businessId}
- Input:
businessId: 123456
- Output:
{
"success": true,
"message": "Contacts retrieved successfully",
"data": "{list of contacts}"
}
2️⃣ Opportunities Management
Create Opportunity
- Description: Creates a new opportunity.
- Method:
POST /opportunities/
- Input:
{
"pipelineId":"J0VnRDNAXHjlq2GbcnEm",
"locationId":"qWRoUZ6kNRf4Mx3RRtgs",
"name":"New Opp",
"pipelineStageId":"a1ecd775-b7eb-4352-8a07-c2298dca1e7b",
"status":"open",
"contactId":"eKJzJtRYlFlcjqiUArC7"
}
- Output: Same as
Create Contact
.
Get Opportunity
- Description: Retrieves an opportunity by ID.
- Method:
GET /opportunities/{opportunityId}
- Input:
opportunityId: 123456
- Output: Same as above.
Update Opportunity
- Description: Updates an opportunity.
- Method:
PUT /opportunities/{opportunityId}
- Input: Same as
Update Contact
. - Output: Same as
Update Contact
.
Update Opportunity Status
- Description: Updates an opportunity.
- Method:
PUT /opportunities/{opportunityId}
- Input: Same as
Update Contact
. - Output: Same as
Update Contact
.
Delete Opportunity
- Description: Deletes an opportunity by ID.
- Method:
DELETE /opportunities/{opportunityId}
- Input:
opportunityId: 123456
- Output: Same as
Delete Contact
.
Upsert Opportunity
- Description: Creates or updates an opportunity.
- Method:
POST /opportunities/upsert
- Input: Same as
Create Opportunity
. - Output: Same as
Create Opportunity
.
3️⃣ Orders Management
List Orders
- Description: Retrieves a list of orders.
- Method:
GET /payments/orders
- Input:
{
"altId": "string",
"altType": "string"
}
- Output:
{
"success": true,
"message": "Orders retrieved successfully",
"data": "{list of orders}"
}
Get Order By ID
- Description: Retrieves an order by ID.
- Method:
GET /payments/orders/{orderId}
- Input:
orderId: 123
altId: 123
altType: abc
- Output: Same as above.
4️⃣ Appointments & Calendar Events
Create Appointment
- Description: Creates an Appointment.
- Method:
POST /calendars/events/appointments
- Input:
{
"calendarId":"5Bv4N9KLGetAIdfZCyGo",
"locationId":"qWRoUZ6kNRf4Mx3RRtgs",
"contactId":"655SZAMnQw45ImQenL3b",
"startTime":"2025-07-23T03:30:00+05:30"
}
- Output: Same as above.
Get Appointment
- Description: Gets an Appointment.
- Method:
GET /calendars/events/appointments/{appointmentId}
- Input:
appointmentId: 123456
- Output: Same as above.
Get Calendar Events
- Description: Gets all Appointments for a calendar.
- Method:
GET /calendars/events
- Input:
{
"calendarId":"5Bv4N9KLGetAIdfZCyGo",
"locationId":"qWRoUZ6kNRf4Mx3RRtgs",
"startTime":"2025-07-22T15:00:00-07:00",
"endTime":"2025-07-22T16:00:00-07:00"
}
- Output: Same as above.
Update Appointment
- Description: Updates an Appointment.
- Method:
PUT /calendars/events/appointments/{appointmentId}
- Input:
{
"startTime":"2025-11-22T15:00:00-07:00",
"title":"Updated event"
}
- Output: Same as above.
Delete Event
- Description: Deletes an Appointment.
- Method:
DELETE /calendars/events/{eventId}
- Input:
appointmentId: 123456
- Output: Same as above.
5️⃣ General API Call
- Method: Dynamic
- Input:
{
"endpoint": "string",
"method": "GET | POST | PUT | DELETE",
"data": "Optional JSON object",
"params": "Optional params"
}
- Output: Dynamic based on response.
Notes
- API responses are standardized to include
success
,message
, anddata
.
For further details, refer to the GoHighLevel API documentation.
🔗 Developed for seamless CRM automation in Botpress. 🚀