Guides

Guide · n8n template · 6 min read

GoHighLevel appointment booking from n8n, via one webhook

If your agency runs clients on GoHighLevel, a voice agent or form that books appointments also has to keep the contact and pipeline right. This workflow does all of that from one webhook: it checks the slot, books the appointment and creates or moves the opportunity, so the CRM matches what happened on the call.

Free template: Book appointments and manage sales opportunities via webhooks in HighLevel

By MD Faizan Uzzaman · Verified n8n Creator · Published 12 Oct 2026

Can n8n book appointments in GoHighLevel?

Yes. This workflow checks the slot, creates or updates the contact and books a 30-minute appointment in a GoHighLevel calendar, all from one webhook call.

  1. A POST request arrives at the webhook (/ray/book-appointment) with the caller's name, phone, address, service type and preferred date and time.
  2. n8n calls a separate Check Slot Availability workflow.
  3. If the slot is taken, it returns a "not booked, slot unavailable" response.
  4. If it's free, it builds a 30-minute window and creates or updates the contact in GoHighLevel.
  5. It books the appointment in your GoHighLevel calendar, then searches the pipeline for an existing opportunity for that contact or phone.
  6. It updates that opportunity's stage or creates a new one, and sets custom fields (service type, preferred date and time, event ID) through the LeadConnector API.
  7. It returns a "booked" response, starts a background workflow with the booking details and routes any GoHighLevel failure to an error workflow.

Which IDs do you need from GoHighLevel?

Five kinds of ID tie the workflow to the right account and pipeline. Update them before you publish.

IDUsed for
Location IDThe sub-account the contact and appointment live in
Calendar IDWhere the 30-minute appointment is booked
Pipeline ID and stage IDWhere the opportunity is created or moved
Custom field IDsService type, preferred date/time and event ID on the opportunity

How do you set it up?

You need GoHighLevel OAuth2, GoHighLevel/LeadConnector private integration bearer token connected in n8n. Then:

  1. Import the template into n8n.
  2. Add GoHighLevel OAuth2 credentials (contacts, calendar and opportunities).
  3. Add a GoHighLevel/LeadConnector private integration bearer token for the custom-field HTTP request.
  4. Update the location, calendar, pipeline, stage and custom field IDs to match your account.
  5. Publish the sub-workflows (Check Slot Availability, Background Workflow, Error Workflow) and confirm their workflow IDs.
  6. Copy the webhook URL and have your voice agent or form send the required fields to it.

What should you test before it goes live?

The edge cases, not just the happy path.

TestWhat should happen
Request a slot that's already taken"Not booked, slot unavailable" response, nothing created in GoHighLevel
Existing contact books againContact updated, not duplicated; existing opportunity moved
Brand-new callerNew contact, appointment and opportunity with custom fields set
GoHighLevel API errorRouted to the error workflow instead of failing silently

Does it update the sales pipeline too?

Yes. It finds the contact's existing opportunity and moves its stage, or creates a new one, then sets service type, preferred date/time and event ID as custom fields.

Which credentials does it need?

GoHighLevel OAuth2 for contacts, calendar and opportunities, plus a LeadConnector private integration token for the custom-field update.

Can a voice agent call it?

Yes. Any system that can send a POST request with the required fields can, including Vapi and Retell agents.

Related

About the author

I'm Faizan, a Verified n8n Creator. I build n8n automations and the booking back-ends behind voice agents. This template is free on n8n.io.

Want this set up for your business or your clients?

I build and test these workflows for small businesses and voice AI agencies, paid through Upwork escrow.