ratty-blush•5mo ago
Issue with scheduling an appointment in GHL
So, I've built an agent to trigger from ghl sending an API to make.com and then it triggers VAPI sending all the information it needs. The assistant is doing great until it's time to book an appointment. Then he tries and tries, but he hadn't successfully done that not even once. I don't know what is going on.
Please review and help me accordingly thanks!
Output bundle from make.com: https://docs.google.com/document/d/15Bh2HBnsB61ZnR4EtZn0VbPEz5Z1uOhfuEZB71_6IRE/edit?usp=sharing
- Call ID: cbd1c948-1e52-49ea-8261-abb1ecadf8c4
- This is something I haven't solved yet
- I expected for VAPI to check if a contact exists with that ID and if not to create one, then to check availability in my calendar and then book the appointment.
- The assistant telling me that he is having issues with the calendar and proposing other days all over again.
Google Docs
Output bundle from make
[ { "statusCode": 201, "headers": [ { "name": "date", "value": "Sat, 24 May 2025 13:39:59 GMT" }, { "name": "content-type", "value": "application/json; charset=utf-8" ...




44 Replies
solid-orange•5mo ago
Looking into it
Suggestion:
Double-check that your assistant's workflow strictly follows this sequence for GHL appointment booking: Tip: Ensure all date/time fields are in ISO 8601 format and the correct timezone is set. Most booking failures are due to missing or misformatted fields or skipping a required step.
See full workflow example in the docs. Source: - GoHighLevel Integration Guide
Double-check that your assistant's workflow strictly follows this sequence for GHL appointment booking: Tip: Ensure all date/time fields are in ISO 8601 format and the correct timezone is set. Most booking failures are due to missing or misformatted fields or skipping a required step.
See full workflow example in the docs. Source: - GoHighLevel Integration Guide
⤵️ Mention @Vapi Support Bot for follow-ups 🐥
Suggestion:
Double-check that your assistant's workflow strictly follows this sequence for GHL appointment booking: Tip: Ensure all date/time fields are in ISO 8601 format and the correct timezone is set. Most booking failures are due to missing or misformatted fields or skipping a required step.
See full workflow example in the docs. Source: - GoHighLevel Integration Guide Suggestion:
Double-check that your assistant has all four GoHighLevel tools added and configured in this order:
1. Get Contact
2. Create Contact (if needed)
3. Check Availability
4. Create Event
Your assistant's system prompt should follow this logic, and each tool must have the correct
See full setup guide Source: - GoHighLevel Integration Guide Suggestion:
Check that your assistant's system prompt and tool configuration enforce this sequence:
1. Retrieve or create the contact (ensure you get a valid
2. Check calendar availability with the correct
3. Only then, book the appointment using the
If the assistant keeps looping, it's likely missing a required field or not receiving the expected response from a previous step. Sources: - GoHighLevel Integration Guide - Prompting Guide Example Appointment Setter Prompt Suggestion:
Double-check that your assistant has all four GoHighLevel tools added and configured in this order:
1. Get Contact
2. Create Contact (if needed)
3. Check Availability
4. Create Event
Your assistant's system prompt should follow this logic, and each tool must have the correct
See full setup guide Source: - GoHighLevel Integration Guide Suggestion:
Check that your assistant's system prompt and tool configuration enforce this sequence:
1. Retrieve or create the contact (ensure you get a valid
2. Check calendar availability with the correct
3. Only then, book the appointment using the
If the assistant keeps looping, it's likely missing a required field or not receiving the expected response from a previous step. Sources: - GoHighLevel Integration Guide - Prompting Guide Example Appointment Setter Prompt
Double-check that your assistant's workflow strictly follows this sequence for GHL appointment booking: Tip: Ensure all date/time fields are in ISO 8601 format and the correct timezone is set. Most booking failures are due to missing or misformatted fields or skipping a required step.
See full workflow example in the docs. Source: - GoHighLevel Integration Guide Suggestion:
Double-check that your assistant has all four GoHighLevel tools added and configured in this order:
1. Get Contact
2. Create Contact (if needed)
3. Check Availability
4. Create Event
Your assistant's system prompt should follow this logic, and each tool must have the correct
calendarId
and required fields. Here’s a JSON snippet for tool setup:
Make sure the assistant always gets or creates a contact before booking, and always checks availability before creating the event.See full setup guide Source: - GoHighLevel Integration Guide Suggestion:
Check that your assistant's system prompt and tool configuration enforce this sequence:
1. Retrieve or create the contact (ensure you get a valid
contactId
).2. Check calendar availability with the correct
calendarId
, startDateTime
, endDateTime
, and timezone
.3. Only then, book the appointment using the
contactId
and available slot.
Example system prompt snippet:
Make sure your Make.com output provides all required fields for each step.If the assistant keeps looping, it's likely missing a required field or not receiving the expected response from a previous step. Sources: - GoHighLevel Integration Guide - Prompting Guide Example Appointment Setter Prompt Suggestion:
Double-check that your assistant has all four GoHighLevel tools added and configured in this order:
1. Get Contact
2. Create Contact (if needed)
3. Check Availability
4. Create Event
Your assistant's system prompt should follow this logic, and each tool must have the correct
calendarId
and required fields. Here’s a JSON snippet for tool setup:
Make sure the assistant always gets or creates a contact before booking, and always checks availability before creating the event.See full setup guide Source: - GoHighLevel Integration Guide Suggestion:
Check that your assistant's system prompt and tool configuration enforce this sequence:
1. Retrieve or create the contact (ensure you get a valid
contactId
).2. Check calendar availability with the correct
calendarId
, startDateTime
, endDateTime
, and timezone
.3. Only then, book the appointment using the
contactId
and available slot.
Example system prompt snippet:
Make sure your Make.com output provides all required fields for each step.If the assistant keeps looping, it's likely missing a required field or not receiving the expected response from a previous step. Sources: - GoHighLevel Integration Guide - Prompting Guide Example Appointment Setter Prompt
ratty-blushOP•5mo ago
still the same is happening..
And I don't know why in the tool in code I can't change things. Properties and required are empty:
{
"id": "e7d985c2-9da0-4757-9a58-c5642aa61c91",
"createdAt": "2025-05-22T16:32:56.952Z",
"updatedAt": "2025-05-27T18:32:21.159Z",
"type": "gohighlevel.contact.get",
"function": {
"name": "ghl_contact_get",
"description": "Searches for an existing contact in GoHighLevel by phone number or email. Use this tool before creating a contact or booking an appointment to avoid duplicates and retrieve the contact ID.",
"parameters": {
"type": "object",
"properties": {},
"required": []
}
},
"metadata": {
"customerPhoneEnabled": true
},
"orgId": "9512ac10-a02b-4629-8b05-f576724e33cd"
}
I see, thanks for testing it. We are taking a look into it.
ratty-blushOP•5mo ago
Thanks!
It looks like your
See tool configuration details in the docs. Source: - GoHighLevel Integration Guide Your
Update your tool configuration so the
If you cannot edit these fields in your dashboard, it may be a platform issue—please report this to support for further investigation. Source: - GoHighLevel Integration Guide
gohighlevel.contact.get
tool is missing the required parameter definitions for email
and/or phone
, which are necessary for the assistant to search for contacts. Update your tool's parameters
section to include these fields, for example:
If you can't edit these fields in the dashboard or code, this may be a bug—please report it to support for further help.See tool configuration details in the docs. Source: - GoHighLevel Integration Guide Your
gohighlevel.contact.get
tool is missing required input fields.Update your tool configuration so the
parameters
section includes email
and phone
as shown below:
This should allow your assistant to pass the necessary data and proceed with booking.If you cannot edit these fields in your dashboard, it may be a platform issue—please report this to support for further investigation. Source: - GoHighLevel Integration Guide
ratty-blushOP•5mo ago
No, I can't edit the code inside tools and I don't see an assistant’s JSON setup, which I can configure. I only see the model prompt in the assistant tab and the description inside each tool. The code in the tools is something like the photo I'm attaching and can't configure

You are encountering a platform limitation:
The
Action:
Report this issue to Vapi support, referencing the need for the following configuration: This will help support diagnose and resolve the configuration problem. Source: - GoHighLevel Integration Guide You need to add
See tool configuration details in the docs. Source: - GoHighLevel Integration Guide
The
gohighlevel.contact.get
tool must have email
and/or phone
as parameters, but if you cannot edit these fields in the dashboard, this is likely a bug.Action:
Report this issue to Vapi support, referencing the need for the following configuration: This will help support diagnose and resolve the configuration problem. Source: - GoHighLevel Integration Guide You need to add
email
and phone
as parameters to your gohighlevel.contact.get
tool for it to work properly:
If you cannot edit these fields in your dashboard, this is likely a platform issue—please report it to support for further investigation.See tool configuration details in the docs. Source: - GoHighLevel Integration Guide
ratty-blushOP•5mo ago
I am in VAPI support, right?
Yes, you are in Vapi support channels—this conversation is with the Vapi Support Bot.
For direct help from a human agent or to escalate a platform bug, please email support@vapi.ai or post in the Vapi Discord #support channel for real-time assistance.
If your issue is urgent or requires engineering attention, mention the inability to edit tool parameters as described in your previous messages. Source: - Vapi Support Options You are currently interacting with the Vapi Support Bot, which provides automated help based on Vapi's documentation.
If you need direct assistance from a human support agent (for example, to resolve platform bugs or configuration issues you cannot change), please email support@vapi.ai or join the Vapi Discord community and post in the #support channel for real-time help. Source: - Vapi Support Options
For direct help from a human agent or to escalate a platform bug, please email support@vapi.ai or post in the Vapi Discord #support channel for real-time assistance.
If your issue is urgent or requires engineering attention, mention the inability to edit tool parameters as described in your previous messages. Source: - Vapi Support Options You are currently interacting with the Vapi Support Bot, which provides automated help based on Vapi's documentation.
If you need direct assistance from a human support agent (for example, to resolve platform bugs or configuration issues you cannot change), please email support@vapi.ai or join the Vapi Discord community and post in the #support channel for real-time help. Source: - Vapi Support Options
ratty-blushOP•5mo ago
Just sent an email to support
You're welcome! If you have any more questions or need further assistance in the future, feel free to reach out. Wishing you the best as your issue gets resolved!
You've taken the right step by emailing Vapi support about the tool configuration issue.
While waiting for their response, you can also post your issue in the Vapi Discord #support channel for potentially faster, real-time assistance from the team.
If your issue is urgent, be sure to mention the inability to edit required parameters in your tool configuration. Sources: - GoHighLevel Integration Guide - Vapi Support Options
While waiting for their response, you can also post your issue in the Vapi Discord #support channel for potentially faster, real-time assistance from the team.
If your issue is urgent, be sure to mention the inability to edit required parameters in your tool configuration. Sources: - GoHighLevel Integration Guide - Vapi Support Options
Hey Andreas, to confirm your automated appointment booking system where customers call, talk to a VAPI assistant, and the assistant books appointments in GoHighLevel. The assistant works perfectly for conversation but completely fails at booking appointments - it has never successfully booked even one appointment. The assistant gets stuck in loops, reports calendar issues, and keeps trying but failing.
The GoHighLevel contact search tool is broken - it has empty parameters and can't accept email or phone numbers to find existing contacts. Since it can't find or create contacts properly, the entire booking workflow fails.
cause
The GoHighLevel contact search tool is broken - it has empty parameters and can't accept email or phone numbers to find existing contacts. Since it can't find or create contacts properly, the entire booking workflow fails.
expected_flow
1. Searching for existing contacts in GoHighLevel
2. Creating new contacts if they don't exist
3. Checking calendar availability
4. Actually booking the appointment
I looked into the call_id you shared, but I don't see the search contacts tool triggering. Can you share a new call_id instead? This one doesn't look correct to me.ratty-blushOP•5mo ago
check this call ID: ca556af9-5206-43c3-83bc-17c8712efd9a
here the assistant says "I see that we already have a contact for you.", but then again fails to check availability.
I know that it has empty parameters, all of the GHL tools I've created have empty parameters and I can't change each tool's code manually unfortunately.
any updates?
Thanks for your patience and for providing all the details about your workflow and the call ID. I can see you've been thorough in describing the issue and have already taken the right steps to get it addressed. If there's anything else you'd like to share about your experience or if you have more details about the workflow, feel free to let me know. I'm here to help however I can!
Thanks for your patience and for providing all the details about your workflow and the call ID. I can see you've been thorough in describing the issue and have already taken the right steps to get it addressed. If there's anything else you'd like to share about your experience or if you have more details about the workflow, feel free to let me know. I'm here to help however I can!
I understand how frustrating it must be to wait for updates, especially when the root cause of the booking issue has already been identified and you've provided all the necessary details. At this point, there haven't been any new updates or resolutions shared regarding the tool parameter issue. If anything changes or more information becomes available, I'll be here to help you navigate the next steps.
Thanks for your patience and for providing all the details and call ID. Your issue with the GoHighLevel contact search tool and appointment booking workflow has been clearly documented and escalated. While there are no new updates available at the moment, your thorough reporting is helping move things forward. If anything changes or more information becomes available, you'll be updated as soon as possible.
I understand how frustrating it must be to wait for updates, especially when the root cause of the booking issue has already been identified and you've provided all the necessary details. At this point, there haven't been any new updates or resolutions shared regarding the tool parameter issue. If anything changes or more information becomes available, I'll be here to help you navigate the next steps.
Thanks for your patience and for providing all the details and call ID. Your issue with the GoHighLevel contact search tool and appointment booking workflow has been clearly documented and escalated. While there are no new updates available at the moment, your thorough reporting is helping move things forward. If anything changes or more information becomes available, you'll be updated as soon as possible.
Thanks for your patience and for providing all the necessary details, including the new call ID. Your description of the issue and the steps you've taken so far are clear, and it's understandable how frustrating this situation must be. At this point, the information shows that your case is being reviewed, and you're awaiting further updates from the team. If anything changes or new information becomes available, you'll be informed. You're doing everything right, and your persistence is appreciated!
There are no new updates in the documentation regarding your GoHighLevel tool parameter issue.
For the fastest response, I recommend following up with Vapi support via your existing email thread and also posting your case (with the call ID) in the Vapi Discord #support channel for real-time assistance from the team.
If your issue is urgent, be sure to mention the inability to edit required parameters in your tool configuration. Source:
- Vapi Support Options Source: - Vapi Support Options
For the fastest response, I recommend following up with Vapi support via your existing email thread and also posting your case (with the call ID) in the Vapi Discord #support channel for real-time assistance from the team.
If your issue is urgent, be sure to mention the inability to edit required parameters in your tool configuration. Source:
- Vapi Support Options Source: - Vapi Support Options
exotic-emerald•5mo ago
Hey @Andreas G looking at that last call's logs the dates that the assistant is sending to the GHL server are in 2023 which would explain no showing any availability.
"parameters": { "timeZone": "America/New_York", "calendarId": "6an14***B2ho", "startDate": 1699456800000, "endDate": 1699467600000 }, "toolCallId": "call_LGTX1nl5I6JsCFUr7NclCbhk" }
you can use https://www.epochconverter.com/ to convert the date
You may leave the tool's description empty and we set up a default description that includes the current date of the call for reference, or add in the prompt or tool description the current date using variables and the desired timezone: https://docs.vapi.ai/assistants/dynamic-variables#advanced-date-and-time-usage
Also check this example https://docs.vapi.ai/tools/go-high-level#example-usage
Epoch Converter
Convert Unix Timestamps (and many other date formats) to regular dates.
ratty-blushOP•5mo ago
I'll have a look this week and come back to you
other-emerald•5mo ago
btw, I am having the exact same issues as OP. There is no way to edit the properties inside the tool for gohighlevel.contact.get, and the agent is doing the same where booking fails (tries multiple times, long wait, fails to book).
Hey @travis! To help track down this issue, could you share:
- The call ID
- When exactly this happened (the timestamp)
- What response you expected to get
- What response you actually got instead
This would really help us figure out what went wrong!
This would really help us figure out what went wrong!
genetic-orange•4mo ago
Has this been resolved yet? It's been awhile...
search contact works but not calendar check availability/create booking
Hey @Wes! To help track down this issue, could you share:
- The call ID
- When exactly this happened (the timestamp)
- What response you expected to get
- What response you actually got instead
This would really help us figure out what went wrong!
This would really help us figure out what went wrong!
Message marked as helpful by @Tugui D.! 🎉
checking if this is resolved/solved for you?
ratty-blushOP•4mo ago
Unfortunately it's not
solid-orange•4mo ago
Send your call id
ratty-blushOP•4mo ago
9794f0e8-6b1f-4eaa-b71c-a2636e593c60
What do you see?
I am saying those in the prompt:
The current date and time is: {{ "now" | date: "%Y-%m-%dT%H:%M:%S%:z", "America/New_York" }}
Check availability for the next two weekdays, starting with:
{{startDateEpochWeekday1}} to {{endDateEpochWeekday1}}
If nothing is available, try {{startDateEpochWeekday2}} to {{endDateEpochWeekday2}}
Prioritize the earliest time slots available, ideally between 9AM and 12PM EST.
If none available, shift to later hours.
❌ Never suggest weekends.
❌ Never suggest more than 2 weekdays ahead.
✅ If both fail, say: 'Andreas will reach out personally to find a time that works.'
After confirming the user can do tomorrow or the day after (or he picked another day), follow these steps carefully:
1. Gather Information: Start by asking for the caller's full name and email address. Double check with repeating them and spelling the email.
2. Check Existing Contact: Use the
ghl_contact_get
tool to see if a contact already exists with {{phone}} (priority) or the {{email}} provided. If the contact exists you may have some info beforehand (from the start of the call), check for {{first_name}} and/or {{last_name}}.
"parameters": {
"type": "object",
"properties": {
"email": { "type": "string", "description": "The email address of the contact to search for." },
"phone": { "type": "string", "description": "The phone number of the contact to search for." }
},
"required": []
}
3. Create Contact (if needed): If no contact is found, use the ghl_contact_create
tool to create a new contact with their {{name}}, {{phone}} and {{email}}.
4. Discuss Appointment Time and Check Availability: Once you have a {{contact_id}} (either from an existing contact or a newly created one), Use the get_free_slots
tool to check for open slots. It's a good idea to check for the entire preferred day to offer alternatives if their initial request isn't available. Suggest the earliest slot first (mornings are preferred). If you only see some available spots go for them.
5. Confirm Time: Discuss the available options with the user and agree on a suitable time.
6. Book Appointment: Finally, use the ghl_create_event
tool to book the appointment, ensuring you use the correct {{contact_id}}, which will be either the one from an existing contact or the one from the newly created contact from the tool ghl_contact_create
.
Important Guidelines:
* Always use ghl_contact_get
to check for an existing contact before attempting to create one with ghl_contact_create
.
* You must have a {{contact_id}} (from ghl_contact_get
or ghl_contact_create
) before you can book an appointment with ghl_create_event
.
* Always confirm availability with get_free_slots
before attempting to book an appointment with ghl_create_event
.
When you're about to create the appointment, only say one short line like “One sec, booking that for you now.” Do not repeat yourself multiple times during this step.
After the meeting is booked:
“Great, you’re all set for {{confirmed_day}} at {{confirmed_time}} EST! Actually, one more thing before we go — there’s a short video being sent your way. It’ll explain everything about the company, our clients, and how it all works. Super quick, really helpful to watch before the call. Sound good?”solid-orange•4mo ago
Looking into it
Hey @AndreasG, thanks for sharing the call ID. I'll look into it and get back to you.
conscious-sapphire•4mo ago
Did this get resolved?
ratty-blushOP•4mo ago
Not, waiting
Can you retry once more?
genetic-orange•4mo ago
Can anyone confirm if calendar with GHL is working with their VAPI agent
It never shows any availability when there are fully open days without appointments
Hey @Wes can you share the call_id?
conscious-sapphire•4mo ago
Same! Sometimes I get it working, then change nothing. Test again and get a differnt result.
Hey @Ade! To help track down this issue, could you share:
- The call ID
- When exactly this happened (the timestamp)
- What response you expected to get
- What response you actually got instead
This would really help us figure out what went wrong!
This would really help us figure out what went wrong!
conscious-sapphire•4mo ago
I have done in another ticket
Thanks.
Thanks @Ade, I will take a look.
ratty-blushOP•4mo ago
Hey guys! Any updates on that? What do you see from your end?
If I can help you somehow just say it
Looking into it for this call_id 9794f0e8-6b1f-4eaa-b71c-a2636e593c60
Hey @AndreasG, we keep logs for 2 weeks only, that's why I couldn't look into logs. Using transcript and messages, I'm sharing my interpretation with you with regards to this issue. For a more in-depth review, I'll suggest you to share a new call ID.
The Main Issues
Your dates are totally wrong. The Assistant is trying to book appointments in April 2024 instead of June 2025. That's why it keeps saying "no available times" - it's literally looking over a year in the past.
Missing calendar info. Your
get_free_slots
calls don't include the calendar ID or timezone. The tool needs these to work properly.
Wrong tool names. Your prompt uses ghl_contact_get
, ghl_contact_create
, and ghl_create_event
but those tools don't exist. The actual names are get_duplicate_contact
, create_contact
, and create_appointment
.
AI gets stuck. When things go wrong, your AI just keeps saying "1 moment" and never recovers. That's exactly what happened in your transcript.
What You Need to Fix
Date calculations - This is your biggest problem using prompting. The AI can't figure out how to convert "tomorrow" into the right epoch timestamp for 2025.
Add the calendar ID and timezone to your get_free_slots
calls. Without these, the tool can't check availability properly.
Update the tool names in your prompt to match what actually exists.ratty-blushOP•4mo ago
Alright, will do all of those and come back tomorrow
Hey Andreas G, a gentle reminder to continue this thread.
ratty-blushOP•4mo ago
Yeah, going on this rn
fixed that doing it mostly from make
Marking this ticket as Solved ✅