Integration
GoHighLevel voice AI integration
The GoHighLevel integration connects your AI voice and chat agents to GoHighLevel, so they can look up a contact by phone on a live call. It's a crm connector that runs as a tool the agent calls mid-conversation — you connect with an api key, attach it to an agent, and it acts in real time without a human in the loop.
Last updated 2026-09-06
What your agent can do with GoHighLevel
Find an existing GoHighLevel contact by phone number. Use this to recognise a caller before creating a duplicate, and to get the contact_id that booking, tasks, notes and opportunities all need.
Inputs
| Field | Type | Description |
|---|---|---|
| phone* | string | Caller phone in full international form, e.g. +919876543210 |
Fetch one GoHighLevel contact by its ID. Use after a lookup when you need fields the search did not return, such as the properly-capitalised name, address or custom fields.
Inputs
| Field | Type | Description |
|---|---|---|
| contact_id* | string | The GoHighLevel contact ID, e.g. from Look up a contact |
Create a GoHighLevel contact for the caller, or match an existing one on the same phone or email. Safe to call for a repeat caller: it will not create a second record.
Inputs
| Field | Type | Description |
|---|---|---|
| company | string | Company name, if any |
| string | Email, if given | |
| firstname | string | First name |
| lastname | string | Last name |
| phone* | string | Phone in full international form, e.g. +919876543210 |
Update fields on an existing GoHighLevel contact. Only the fields you supply are changed. Use when a caller corrects their details. Always supply at least one field besides the ID — calling this with only the ID changes nothing, and reports success anyway.
Inputs
| Field | Type | Description |
|---|---|---|
| company | string | Company name |
| contact_id* | string | The GoHighLevel contact ID |
| string | ||
| firstname | string | First name |
| lastname | string | Last name |
| phone | string | Phone in full international form |
Add one or more tags to a GoHighLevel contact. Tags are how GoHighLevel workflows are triggered, so use the exact tag names the business asked for.
Inputs
| Field | Type | Description |
|---|---|---|
| contact_id* | string | The GoHighLevel contact ID |
| tags* | array | Tag names to add, e.g. ["called-back","interested"]. Existing tags are kept. |
List the opportunities (deals) attached to a GoHighLevel contact, newest first. Use to tell a caller where their enquiry currently stands.
Inputs
| Field | Type | Description |
|---|---|---|
| contact_id* | string | The GoHighLevel contact ID — get it from Look up a contact first. Never call this without one. |
| limit | integer | Maximum opportunities to return. Keep it small — 3 is plenty for a phone conversation. |
| status | string | Which opportunities to return. Defaults to all. |
Fetch one GoHighLevel opportunity by its ID, including its pipeline, stage, status and value.
Inputs
| Field | Type | Description |
|---|---|---|
| opportunity_id* | string | The GoHighLevel opportunity ID |
Create a GoHighLevel opportunity (deal) for a contact in the pipeline this tool is pointed at. Use when a caller expresses real buying intent.
Inputs
| Field | Type | Description |
|---|---|---|
| contact_id* | string | The GoHighLevel contact ID the opportunity belongs to |
| monetary_value | number | Deal value in the sub-account's currency (whole units, not cents) |
| name* | string | A short name for the deal, e.g. "Kitchen renovation — Mrs Rao" |
| status | string | Deal status. Use open unless the caller has already decided. |
Update a GoHighLevel opportunity — change its name, value, status, or move it to another stage. Only the fields you supply are changed. Always supply at least one field besides the ID — calling this with only the ID changes nothing, and reports success anyway.
Inputs
| Field | Type | Description |
|---|---|---|
| monetary_value | number | New deal value in whole currency units |
| name | string | New deal name |
| opportunity_id* | string | The GoHighLevel opportunity ID |
| pipeline_stage_id | string | Stage ID to move the deal to, if the business gave you one |
| status | string | New status. Use won only when the caller has actually committed. |
List the tasks on a GoHighLevel contact. Returns completed tasks as well, so check the completed flag before telling a caller something is still outstanding.
Inputs
| Field | Type | Description |
|---|---|---|
| contact_id* | string | The GoHighLevel contact ID |
Create a follow-up task on a GoHighLevel contact. A due date is required — if the caller did not name one, use tomorrow morning in their local time.
Inputs
| Field | Type | Description |
|---|---|---|
| contact_id* | string | The GoHighLevel contact ID |
| description | string | Any detail the person doing the task will need |
| due_date* | string | When the task is due, ISO 8601 with a UTC offset, e.g. 2026-09-10T09:00:00+05:30 |
| subject* | string | Short task title, e.g. "Call back about the quote" |
Write a note onto a GoHighLevel contact — what the caller asked for, what was agreed, anything the next person needs. Keep it to a short paragraph.
Inputs
| Field | Type | Description |
|---|---|---|
| body* | string | The note text |
| contact_id* | string | The GoHighLevel contact ID |
| title | string | Optional short heading for the note |
List the appointments booked for a GoHighLevel contact. This returns their whole history including past and cancelled ones, so read appointmentStatus and pick the upcoming one before answering the caller.
Inputs
| Field | Type | Description |
|---|---|---|
| contact_id* | string | The GoHighLevel contact ID |
Find free appointment slots on the calendar this tool is pointed at, between two dates. Offer the caller two or three of the returned times; each one can be passed straight to Book an appointment exactly as returned.
Inputs
| Field | Type | Description |
|---|---|---|
| end_date* | string | End of the window to search, ISO 8601 with a UTC offset. Keep the window to a few days. |
| start_date* | string | Start of the window to search, ISO 8601 with a UTC offset, e.g. 2026-09-10T00:00:00+05:30 |
Book an appointment for a contact on the calendar this tool is pointed at. You must have a contact_id first — look the caller up or create them. Use a start time exactly as returned by Check appointment availability.
Inputs
| Field | Type | Description |
|---|---|---|
| contact_id* | string | The GoHighLevel contact ID the appointment is for. Required — get it from Look up a contact or Create a CRM contact. |
| end_time | string | Appointment end in the same format. Omit to use the calendar's own slot length. |
| start_time* | string | Appointment start, ISO 8601 WITH a UTC offset, e.g. 2026-09-10T14:00:00+05:30. Pass a slot from Check appointment availability through unchanged. |
| title | string | What the appointment is for, e.g. "Consultation — Mrs Rao" |
Fetch one GoHighLevel appointment by its event ID — its time, status and which calendar it is on.
Inputs
| Field | Type | Description |
|---|---|---|
| event_id* | string | The appointment (event) ID |
Move an existing GoHighLevel appointment to a new time. Check availability first and pass a returned slot through unchanged — GoHighLevel refuses a time that is not actually free.
Inputs
| Field | Type | Description |
|---|---|---|
| end_time | string | New end in the same format. Omit to use the calendar's own slot length. |
| event_id* | string | The appointment (event) ID to move |
| start_time* | string | New start, ISO 8601 WITH a UTC offset, e.g. 2026-09-11T14:00:00+05:30 |
Cancel a GoHighLevel appointment. The booking stays on the record marked cancelled, the slot is freed, and the sub-account's cancellation workflows run.
Inputs
| Field | Type | Description |
|---|---|---|
| event_id* | string | The appointment (event) ID to cancel |
What you'll need to connect GoHighLevel
Connect with an API key. In Telenow, open Integrations → GoHighLevel and provide:
- Private Integration Token — GoHighLevel → Settings → Private Integrations → Create. Tick the scopes: contacts.readonly, contacts.write, opportunities.readonly, opportunities.write, calendars.readonly, calendars/events.readonly, calendars/events.write. The token starts with pit-.
- Sub-account (Location) ID — GoHighLevel → Settings → Business Profile → Location ID. The token must belong to THIS sub-account — an agency-level token is refused by every endpoint below.
Agent templates that use GoHighLevel
Other CRM integrations
Frequently asked questions
What can an AI voice agent do with GoHighLevel?+
During a live call or chat, a Telenow agent can look up a contact by phone, get a contact by id, create a crm contact, update a contact, add tags to a contact, list a contact's opportunities, get an opportunity by id, create an opportunity, update an opportunity, list a contact's tasks, create a task on a contact, add a note to a contact, list a contact's appointments, check appointment availability, book an appointment, get an appointment by id, reschedule an appointment, and cancel an appointment — each runs as a tool the agent calls mid-conversation, so it acts on GoHighLevel in real time without a human.
How do you connect GoHighLevel to Telenow?+
In Telenow, open Integrations, pick GoHighLevel, and you paste a GoHighLevel API key into the connection, then bind it to your agent. Then add its crm tool to your agent (or install a template that already includes it) and you're live.
Which AI agent templates use GoHighLevel?+
Inbound sales concierge, Order & delivery status, Billing dispute intake, Subscription cancel & retain, B2B invoice follow-up, Insurance policy verification, Return & refund intake, and SaaS demo scheduler all use GoHighLevel. You can install any of them and connect your GoHighLevel account in a couple of clicks.
Does GoHighLevel work on phone calls and WhatsApp?+
Yes. Telenow agents run on phone, web, chat and WhatsApp, and GoHighLevel works the same across every channel — the agent calls it whenever the conversation needs it.
How much does the GoHighLevel integration cost?+
Connecting GoHighLevel is included — you only pay Telenow's transparent per-minute and per-component usage, and new accounts get free signup credit to try it.
Connect GoHighLevel to your AI voice agent
Sign up free and get $1.01 in credit — no card required. Connect your number, pick a template, and go live in minutes.