Home / Knowledge base / Troubleshooting
Fix: AI Assistant Not Booking Appointments
Booking failures usually trace back to one of six things, in order: the calendar isn't synced (Calendar), the assistant lacks the booking tools (Ability), the CRM calendar has no real availability (Settings), the prompt confuses the AI (Prompt), the tool call's metadata shows a CRM error (Event), or everything just needs a refresh (Refresh) — the CASPER mnemonic.
Conversational booking depends on several things working together — your prompt, your calendar settings, and the underlying integration. This guide walks through every layer to check, in order, using the mnemonic CASPER.
The CASPER triage order
- Calendar [Syncing] — does the assistant have access to the calendar it needs to reference?
- Ability [Tools] — does the assistant actually have the tools to act on that calendar?
- Settings [CRM calendar settings] — does the CRM calendar have real, actual availability?
- Prompt [Instructions, knowledge base, temperature] — is the assistant being told a clear booking protocol, or given confusing instructions?
- Event [Tool call & metadata] — did the tool get called, and if so, what does its metadata say?
- Refresh [Refresh associated resources] — if all else fails, it may just be your connection; refresh it.
Calendar
Confirm the assistant has access to a CRM calendar: open the assistant, click the Calendars tab, then Add Calendars. Sync your calendar with the CRM, then click Add to Assistant to run the verification process — this simulates a booking and only verifies the calendar if the simulation succeeds. Once verified (a green check mark appears), click Add to Assistant again to attach it.
Ability
Access to a calendar without tools is useless — the assistant needs tools to actually check and book against it. Add the pre-built tools for check availability and book appointment at minimum; the full set also includes reschedule, cancel, and check the contact’s current appointments.
Settings
With calendar access and ability confirmed, check the CRM calendar’s own settings — a common bottleneck given how many configuration options GoHighLevel calendars have. Go to Calendars > Calendar Settings, click the three dots on your calendar, then Share, to get the permanent calendar link. Open that link in another tab to see the calendar’s objective availability. If it doesn’t match what you expect, check:
- Your Google or third-party calendar integration — a connected personal calendar can block off your CRM calendar’s availability.
- General calendar settings — features like “Look Busy” or date ranges can limit or conflict with your actual availability.
Prompt
This is the most common cause. A prompt overloaded with business context, FAQ answers and edge-case handling can confuse the assistant about what it’s actually being instructed to do — use the knowledge base for that material instead, and keep the prompt itself concise and direct (see the AI prompting guide).
Temperature also matters: it controls how deterministic the output is. Keep it between 0.1 and 0.35 (0.35 is default) when tools are involved, so the assistant follows booking procedure reliably.
Where things belong for reliable output:
- Prompt: personality, response guidelines, style guardrails, and the core instruction set — concise and to the point.
- Knowledge base: domain knowledge, FAQs, objection handling, simple pricing info.
- Tools: data fetching, actions, and a way to scale the prompt through parameters instead of static text.
Event
Check the conversation logs for a “task performed” entry, which shows when a tool was used and its metadata.
- If the AI gives incorrect times: check the metadata from the availability tool call against what the CRM actually shows. A mismatch here is a CRM-side issue, not an OAuth issue — go check calendar settings. Also review the prompt for conflicting or unclear booking instructions.
- If the AI gives correct times but doesn’t book: check the booking tool call’s metadata. A “bad request” can point to instruction confusion (the AI is trained to book in local time even when discussing the client’s time zone). If it looks like an authorization issue, your OAuth connection may need a refresh — OAuth is only required for the book-appointment step, not for checking availability.
Refresh (and test)
If nothing above resolves it, refresh everything: remove and re-add the tools, delete and resync the calendar, reset OAuth. Simplify the prompt as you go — cut unnecessary detail, drop excess markdown formatting, and rebuild up from something minimal that works.
Common calendar mistakes
No slots available:
- Check whether a Google Calendar sync is blocking availability with full-day or recurring events.
- On a Round Robin calendar, go to Settings > Your Profile and confirm availability and time zone.
- Cross-check the AM/PM time format.
- Scroll to the bottom of profile settings for hidden conflicts.
Appointments not showing on the CRM calendar:
- Confirm the right user is selected in calendar configuration.
- Select the correct calendar from the bottom-right of the calendar view.
- If Google or Outlook appointments dominate the view, the connection may be broken — re-integrate it.
Double booking:
- Make sure Google/Outlook and the CRM calendar are properly synced.
- Set maximum bookings per slot to 1 in calendar configuration.
- If using multiple external calendars, designate one as primary and enable conflict checking for the others under Settings > My Profile > Conflict Calendars.
Disappearing time slots:
- Events marked “Busy” in a connected Google/Outlook calendar block CRM availability — check for unexpected events.
- Reconnect the integration if a sync glitch is suspected.
- Double-check profile availability and time zone on round-robin calendars.
Contact reassigned to another user on booking:
- To stop reassignment: Calendars > Edit Calendar > Notifications & Additional Options and enable “skip assigning contact if the contact has already an assigned user.”
- To allow auto-assignment instead, disable that same option.
Next step
If the underlying connection itself looks broken rather than the calendar, start with fix: no active CRM connection error. For prompt structure, see the AI prompting guide.