GoHighLevel
The GoHighLevel integration empowers your Vapi voice agents to directly interact with your clients’ GoHighLevel calendars. Your agents can use a suite of tools to manage the appointment lifecycle: check if a contact already exists using the Get Contact tool, create new leads or clients with the Create Contact tool, query specific GHL calendars for open slots via the Check Availability tool, and secure appointments associated with a contact using the Create Event tool. This enables your voice agent to handle the entire booking process seamlessly within the GHL calendar that your agency or client already uses.
Prerequisites
Before you can use the GoHighLevel integration, you need to:
- Have a GoHighLevel account.
- Have a calendar in GoHighLevel to which you have permission to create and edit events.
- Have access to the Vapi Dashboard.
Setup Steps
1. Connect GoHighLevel Account
First, you need to connect your GoHighLevel account to Vapi:
- Open the Vapi Dashboard and select Integrations.
- Under Tool Providers, select GoHighLevel.
- Select Connect, enter your GoHighLevel API Key, then select Save.
Use a GoHighLevel API key with access to the contacts and calendars this assistant needs.

2. Create GoHighLevel Tools
After connecting your GoHighLevel account, create the tools:
- Select Tools in the Dashboard, then select Create Tool and GoHighLevel.
- Choose Contact Get, Contact Create, Calendar Check Availability, or Calendar Create Event. Repeat for each tool you need.
- For each tool, provide a clear and descriptive name. Adding a description is optional. If you leave it blank, Vapi will automatically generate a default description that explains the tool’s purpose and includes the current date, formatted using the timezone you specify in the tool’s metadata.
- For Calendar Check Availability and Calendar Create Event, provide a valid
calendarId. You can find thecalendarIdin GoHighLevel under Settings and Calendars.

When creating an event in GoHighLevel, a contactId is required. Therefore,
if you plan to use the Create Event tool, you must also add the Get
Contact and Create Contact tools. This allows the assistant to first
retrieve an existing contact’s ID or create a new contact, and then use that
ID to schedule the event.
3. Add Tools to Assistant
Now, add your chosen GoHighLevel tool(s) to your assistant. For an example scenario where you want your assistant to book appointments, including finding a suitable time and managing contact information, you would add all four tools: Get Contact, Create Contact, Check Availability, and Create Event.
- Select Assistants in the Dashboard and open your assistant.
- Open the Tools tab, select Add tool, then choose the GoHighLevel tools you want to use.
- Select Publish, review the changes, select Next, then select Publish to apply the draft.

4. Configure Assistant System Prompt
After adding the GoHighLevel tools to your assistant, it’s crucial to provide a clear system prompt. This prompt guides the assistant on how and when to use each tool to achieve the desired workflow. For a typical appointment booking scenario, your system prompt instructs the AI on the sequence of operations and conditions for using each tool.
Here’s an example system prompt to guide your assistant. Remember to replace ghl_contact_get, ghl_contact_create, ghl_check_availability, and ghl_create_event with the exact names you gave your tools if they are different.
Tool Configurations
GoHighLevel Get Contact Tool
This tool uses both or one of the following fields to retrieve an existing contact:
email: The email address of the contact to search for.phone: The phone number of the contact to search for.
GoHighLevel Create Contact Tool
This tool uses the following fields to create a new contact:
firstName: The first name of the contact.lastName: The last name of the contact.email: The email address of the contact.phone: The phone number of the contact.
GoHighLevel Check Availability Tool
This tool uses the following fields to check for open appointment slots:
calendarId: The ID of the GoHighLevel calendar to check.startDate: The start of the time range to check for availability (epoch time in milliseconds).endDate: The end of the time range to check for availability (epoch time in milliseconds).timezone: The timezone for the availability check (e.g., “America/New_York”).
GoHighLevel Create Event Tool
This tool uses the following fields to book an appointment:
calendarId: The ID of the GoHighLevel calendar in which to create the event.contactId: The ID of the GoHighLevel contact to associate with the event.title: The title or summary for the calendar event.startTime: The start date and time for the event in ISO 8601 format.endTime: The end date and time for the event in ISO 8601 format.
Example Usage
Here’s how the tools can be configured in your assistant’s JSON setup:
Best Practices
- Clear Instructions: Provide clear instructions in your assistant’s system message about when to use each calendar tool
- Error Handling: Include fallback responses for cases where either calendar tool fails
- Time Zone Awareness: Always specify the correct timezone for events and availability checks. Also remember to format {{now}} with your desired timezone.
- Event Details: Ensure all required fields are properly filled when creating events
- Availability Flow: Check availability before attempting to schedule events to avoid conflicts
- Contact Prerequisite for Events: Remember that creating an event in GoHighLevel requires a
contactId. Ensure your assistant’s logic always fetches or creates a contact (using thegetGHLContactandcreateGHLContacttools) before attempting to book an appointment with thecreateGHLEventtool.