Vapi's Google Calendar integration. The "Check Ava...
# support
f
I integrated Riley with my Google Calendar using Vapi native google calendar tools. It fails to interpret them, showing everything as available.
c
Hi there, Thank you for your message. Our team is currently out of the office. We operate Monday through Friday, from 9:00 AM to 8:00 PM Pacific Standard Time (PST). We’ll get back to you as soon as possible during our normal business hours. If your message is urgent, please mark it accordingly or include “URGENT” in the subject line, and we’ll do our best to respond promptly. Warm regards, Vapi Customer Support Team
v
Thank you for sharing the issue with the "Check Availability" tool not detecting existing events in your Google Calendar integration with Vapi. To help diagnose the problem, could you confirm if the events that are not being detected are on your primary Google Calendar, and if you specified a different
calendarId
in your tool configuration?
This will help determine if the tool is checking the correct calendar as per the [Vapi Google Calendar integration documentation](https://docs.vapi.ai/tools/google-calendar). Source: - [Vapi Google Calendar Integration Documentation](https://docs.vapi.ai/tools/google-calendar)
s
When Vapi shows your Google Calendar as fully available, it’s because the Google Calendar check-availability tool isn’t actually detecting busy events — even though the integration shows as connected. Users report that the tool either returns empty busy data or misinterprets it, so Vapi always thinks every time slot is free. To fix this, disconnect and reconnect the Google Calendar integration in the Vapi dashboard, making sure you grant full calendar read permissions (including free/busy access) and correctly add the Check Availability tool to your assistant. Then test again — if existing events still aren’t reflected, the issue is with how Vapi parses availability data (not with your calendar), and the proper workaround is to use a custom workflow (e.g., via n8n or Make) that explicitly checks free/busy info from Google and only passes truly free slots back to Vapi.
f
I have one calendar under my Google account which is primary. Put some spots to keep the calendar busy. then disconnected and reconnected GC integration. and made sure the View and edit events on all calendar have access to in Google Calendar, and View your availability in calendar are enabled. But agent still try booking schedule on busy spots.
c
Hi Frank, could you please provide us with the call ID?
f
Thank you team. the call ID is 019c88d0-e170-7772-b017-f96fbeced409.
c
Hi, We looked into this and found the issue. Riley is checking Google Calendar correctly, but it's querying dates from 2023 instead of 2026. Since there are no events in 2023, the calendar returns everything as available - which is why Riley keeps booking on busy slots. Why this happens: LLMs don't inherently know today's date. Your system prompt instructs Riley to check availability but never tells it what today's date actually is, so it guesses incorrectly. The fix is simple - add this line to your system prompt:
Copy code
The current date and time is {{now}}.
{{now}}
is a built-in Vapi variable that automatically injects the real current date and time at the start of each call. Once added, Riley will use the correct dates when querying Google Calendar. Thanks!
f
Thank you Shaunak for finding it out. I added line. Then made four calls, it booked overlapped meetings like this (General meeting was put there manually). https://cdn.discordapp.com/attachments/1475220180392214901/1475733437502722220/image.png?ex=699e8f5d&is=699d3ddd&hm=0d91d6750bd9dbcb1c98ec34921960f4533c678f7dd21a2dbe9083925a590f37&
c
Hi Frank, sorry for the delay. The
create_calendar_event
tool has no built-in conflict detection - it directly inserts events into Google Calendar without checking if the time slot is already booked. So when Riley books meetings across multiple calls, each call independently creates an event without knowing about the others. Root cause: The platform's booking tool doesn't check for existing events before creating new ones, and the tool description doesn't instruct the LLM to check availability first. Immediate fix - add this to Riley's system prompt:
Copy code
BOOKING WORKFLOW:
- Before creating any calendar event, you MUST first check availability using get_calendar_events for the requested time range
- If the slot already has events, suggest alternative available times
- Only call create_calendar_event after confirming the slot is free
- Never book overlapping meetings
This tells Riley to always check the calendar before booking. The platform already has
get_calendar_events
,
find_available_time
, and
suggest_meeting_times
tools available - Riley just isn't being told to use them first.
f
No worries Shaunak. I had similar prompt before. I just added the prompt you provided. Sorry to say it is still booking the meetings during busy windows. I paste all me prompt below for your reference. - Gather the caller’s preferred date, time, duration, and meeting purpose. - Always verify availability using the Google Calendar Check Availability tool. - Allow a 5-minute buffer before and after each meeting when checking availability. Before creating any calendar event, you MUST first check availability using get_calendar_events for the requested time range - If the slot already has events, suggest alternative available times - Only call create_calendar_event after confirming the slot is free - Never book overlapping meetings - If the preferred slot is free, clearly confirm and then create the event using the Calendar Event Create tool. - If the slot is not available, propose up to three alternative time slots on the same day. If none exist, suggest slots on the nearest available days. - Never create an event without confirming that the time slot is available. - Context Information - Current date: {{ "now" | date: "%B %d, %Y", "America/Vancouver" }} - Current time: {{ "now" | date: "%I:%M %p", "America/Vancouver" }} - Day of week: {{ "now" | date: "%A", "America/Vancouver" }} - When discussing scheduling: - Confirm details clearly: date, time, duration, and purpose. - Keep responses concise, polite, and professional. - Do not guess or assume availability—always rely on the provided tools. You seems cannot identify the event already booked in the calendar. so please double check. - Use natural, conversational language while maintaining professionalism. - Booking Details - When confirming a meeting: - Ask for and include the caller’s full name (if not provided) and email address. - Include the meeting purpose in the event title.
c
Sorry for the delays as we are currently experiencing an extremely high volume of support requests. We'll soon get back to you.
f
OK. Thanks.