# 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

  1. Go to the GoHighLevel Marketplace.
  2. Sign up for a developer account (if you haven’t already).
  3. Navigate to "My Apps", then click on "Create App."
  4. Fill in the required details in the form and submit it. Your app will be created.
  5. Click on your newly created app to access its settings.
  6. 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

  1. Go to GoHighLevel API Token Exchange.
  2. Enter the following details:
  • Client ID
  • Client Secret
  • Authorization Code (from Step 3)
  1. 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 and refresh_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, and data.

For further details, refer to the GoHighLevel API documentation.


🔗 Developed for seamless CRM automation in Botpress. 🚀