GoHighLevel API reference

Webhook events

HighLevel documents 56 webhook events. Each POSTs a JSON body to the URL configured on your marketplace app when something changes in a sub-account — a contact is created, an opportunity moves stage, an invoice is paid. Every event below links to its full payload with field names and types.

Acknowledge with a 2xx quickly and process asynchronously. There is no published ordering guarantee, so keep handlers idempotent and key them off the IDs in the payload.

Contacts

Fired as contact records are created, changed, or removed.

Conversations and messages

Inbound and outbound message traffic, and unread state.

Opportunities

Pipeline movement — stage, status, value, and assignment.

Appointments and tasks

Calendar bookings and the task records attached to contacts.

Invoices and orders

Billing lifecycle, from sent through paid or void.

Products and prices

Catalog changes for anything sellable.

Custom objects and associations

Schema and record events for custom objects, plus the relations between them.

Notes

Free-text notes attached to a contact.

App, account, and users

Marketplace install lifecycle, sub-account provisioning, plan changes, and user records.

Common questions

How many webhook events does GoHighLevel have?
HighLevel documents 56 webhook events, covering contacts, conversations, opportunities, appointments, tasks, invoices, orders, products, prices, notes, custom objects, and app lifecycle. Each POSTs a JSON body to the URL configured on your marketplace app.
What does a GoHighLevel webhook payload look like?
Each event POSTs a JSON object whose fields depend on the event. Most carry a type naming the event, a locationId identifying the sub-account, and the changed record's own fields. The exact shape per event is listed on that event's page.
Do GoHighLevel webhooks arrive in order?
No ordering guarantee is published, so handlers should be idempotent and reconcile from the IDs in the payload rather than assuming arrival order. Acknowledge with a 2xx quickly and process asynchronously; a slow handler is recorded as a delivery failure.

Skip the schema lookup

A webhook tells your app that something changed; acting on it means calling the GoHighLevel API back. Hylo gives your AI agent the schema for every one of those calls, and executes them against your own sub-account when you approve.

Elsewhere in the reference