Cancel and reschedule appointments on inbound calls
Last updated: September 8, 2026
A contact has two upcoming appointments — one on August 10, one on September 10 — and calls back to cancel only the September one. This is exactly the scenario in-call appointment management is built for: the agent already knows both appointments, confirms which one the caller means, and cancels the right one without touching the other.
The agent knows the caller's appointments
When a lead calls back one of your numbers, the answering agent — the inbound agent paired with the agent that called them (Identity & routing → Answers the call-backs of), or the outbound agent that called them if there is none (see inbound call routing) — receives the caller's upcoming appointments as part of its context. Ask "when is my appointment?" and it answers from real calendar state, dates included — no hold, no transfer, no "let me check and call you back". Only future appointments are in scope; past ones are not part of the conversation.
The context carries the five soonest appointments; before cancelling or moving anything the agent re-reads the caller's full upcoming list from the calendar, so a contact with more bookings is still handled correctly.
Disambiguation is enforced
Before cancelling or moving anything, the agent must first list the caller's upcoming appointments out loud, confirm which one the caller means, and only then act. In the example above, the agent reads back both dates, the caller says "the September one", and the agent confirms that exact appointment before cancelling. It cannot silently guess when there is more than one.
What a cancellation does
The appointment is marked cancelled in the client's calendar — it is never deleted. The event stays in the calendar's history, so your team can still see what was booked and later called off.
The contact is also tagged in your CRM — the "Appointment cancelled" event in Settings, CRM tags card (name configurable; an empty field applies no tag) — and a note records the cancelled slot and the reason the caller gave. That tag is the natural trigger for a re-booking workflow that reaches out and tries to get the contact back on the calendar.
What a reschedule does
- The original duration is kept. A 30-minute appointment moved to a new time is still 30 minutes.
- The new slot is re-checked immediately before moving — the same double-booking guard used at first booking. If the requested time was taken in the meantime, the agent does not overlap anyone: it says so and proposes alternatives from the calendar's current free slots.
- A CRM note records the move, from the old slot to the new one. No tag is applied for a reschedule — the appointment is still on the calendar.
Only the caller's own appointments
An ownership guard applies to every action: the agent can list, cancel or reschedule only appointments that belong to the contact who is calling. No matter what is said during the call, it can never touch another contact's event.
Although the typical case is a call-back, the same three tools are available on outbound calls too: an agent that reaches a contact with an appointment on the books can move or cancel it in the same conversation.
Enable it on existing agents
Agents created before this feature shipped do not have the appointment-management tools yet. Open the agent editor, go to the "Data & GHL" tab and press "Sync GHL tools" (saving the agent's settings also syncs them). New agents include the tools from creation.
In a test call — the web tester or an in-app test lead — these tools answer from a sandbox: the agent runs the whole flow, but nothing is cancelled or moved in your CRM.
