Send GoHighLevel Appointments to Lead Distro AI
Book appointments on your GoHighLevel calendar and send each one into a Lead Distro AI appointments campaign with a workflow. Showed, no-show and cancel updates follow the same way.
Use this guide when your appointments are booked on a GoHighLevel calendar and you want Lead Distro AI to deliver each one to a destination and bill it. A GoHighLevel workflow sends every booking to the same address your sources use for leads. Lead Distro AI delivers it right away and marks it booked. Later, small workflows tell Lead Distro AI whether the person showed up, did not show, or canceled.
How it works
- A person books on your GoHighLevel calendar.
- A GoHighLevel workflow sends the appointment, with its time, to
https://app.leaddistro.ai/api/v1/ingest. - Lead Distro AI picks a destination with your campaign's rules, delivers the appointment, and marks it Booked.
- When the appointment shows, no-shows or is canceled in GoHighLevel, another workflow sends that status. Lead Distro AI updates the same appointment. Nothing new is created and nothing is charged twice.
Before you start
- An appointments campaign in Lead Distro AI with at least one active destination. See Set Up an Appointments Campaign.
- A source on that campaign for your GoHighLevel account. Its API key goes into the workflow.
- Admin access to the GoHighLevel sub-account that owns the calendar.
- The Custom Webhook workflow action in GoHighLevel. If you do not see it, check what your GoHighLevel plan includes.
Step 1: Copy the details from Lead Distro AI
- Open the appointments campaign and stay on the Overview tab.
- On the Set up how appointments come in row, click GoHighLevel. If that row is already done, open the source's API specs from the campaign's sources instead and pick the GoHighLevel template.
- Copy the Endpoint, the
x-api-keyvalue from Headers, and the body from Example. The body already has GoHighLevel's merge fields filled in.
Step 2: Send new bookings
In GoHighLevel, build a workflow that runs each time an appointment is booked.
- Open the Automation tab, then Workflows, and create a new workflow.
- Click Add New Trigger and choose Appointment Status.
- Set the Appointment Status filter to New. Add the In Calendar filter and pick the calendar these appointments are booked on.
- Click + Add action, then Send Data, then Custom Webhook.
- Set the method to POST and paste the Endpoint as the URL.
- Leave authorization off. Under Headers, add a header named
x-api-keywith your source's API key as its value. - Send the body as JSON, paste the body you copied, then save and publish the workflow.
GoHighLevel renames menus from time to time. If a name here does not match your screen, look for the closest one.
Your copied body looks like this, with your own campaign ID, source ID and any extra fields your campaign asks for:
{
"flo_campaign_id": "YOUR_CAMPAIGN_ID",
"flo_supplier_id": "YOUR_SOURCE_ID",
"first_name": "{{contact.first_name}}",
"last_name": "{{contact.last_name}}",
"phone": "{{contact.phone}}",
"email": "{{contact.email}}",
"appointment_time": "{{appointment.start_time}}",
"appointment_timezone": "{{appointment.timezone}}",
"booked_with": "{{appointment.user.name}}",
"appointment_location": "{{appointment.meeting_location}}"
}Pick only New on this workflow. If you also pick Confirmed, the same booking is sent twice. Lead Distro AI spots the repeat and keeps one appointment, but one trigger keeps your Logs page clean.
Step 3: Test it
- Add
"test_lead": trueto the body and book a test appointment on the calendar. - In Lead Distro AI, open Leads. The test appointment shows up with its time, tagged test. Test appointments only go to destinations in Test Mode and cost nothing.
- When it works, remove
test_leadfrom the body.
The Logs page shows every post and the exact reply Lead Distro AI sent back, so a mistake in the body is quick to find.
Step 4: Send showed, no-show and cancels
GoHighLevel has no merge field for an appointment's status, so each status gets its own small workflow. All three use the same trigger, In Calendar filter and Custom Webhook as Step 2, with one extra line in the body.
| Appointment Status filter | Add this line to the body |
|---|---|
| Showed | "appointment_status": "showed" |
| No-show | "appointment_status": "no_show" |
| Cancelled | "appointment_status": "canceled" |
Lead Distro AI finds the appointment this source sent before, by the person's phone or email, and updates it. It replies 200 with "updated": true. No new lead is made and the source is not charged again.
A destination paid per showed appointment is billed when the showed status arrives. A cancel reverses a charge made when the appointment was booked. See Per-Appointment Billing.
Times and timezones
GoHighLevel writes the start time like Wed, Nov 5, 2025 3:30 PM, with no timezone in it. That is why the body also sends appointment_timezone. Lead Distro AI reads the two together and stores the exact moment.
appointment_timealso takes an exact time, such as2026-10-21T15:30:00-05:00.- If no timezone is sent, Lead Distro AI uses the lead's own
timezonefield when your campaign has one, otherwise your account's timezone, and notes which on the appointment. - A time Lead Distro AI cannot read is saved as a Failed lead you can fix and resend. The workflow gets a 400 reply that says what to change.
What destinations receive
Every appointments campaign has the appointment fields built in. A destination's delivery can use {{appointment_time}}, {{appointment_timezone}}, {{booked_with}} and {{appointment_location}} without adding them on the Fields tab.
Frequently Asked Questions
Which API key does GoHighLevel use?
What if a person books, cancels, and books again?
What if an appointment moves to a new time?
appointment_time while the appointment is still booked, Lead Distro AI moves the same appointment to the new time. Nothing new is created and nothing is billed again.Why did I get a 404 reply?
Why did I get a 409 reply?
Can I also use Lead Distro AI's own calendar?
Related Articles
If you have any questions, send us an email at support@leaddistro.ai