Clear, practical technology insights BSOD Code Lookup · Windows Error Code Lookup · Wi-Fi Troubleshooting · PC Troubleshooting Checklist

Connect ElevenLabs Agents to Google Calendar for Scheduling

Configure OAuth access, choose calendar tools, and test booking, time zones, invitations, and authorization before allowing an agent to manage events.

Table of Contents

Connect Google Calendar to ElevenLabs through OAuth, select the tools your agent needs, and test the complete booking flow on a non-production calendar. Decide separately whether the agent may read availability, create appointments, or change existing events.

Keep update and delete tools off public agents. Authentication must be paired with authorization for the specific calendar and event. Review the current integration documentation before deploying, including its retention and tool limitations.

What the integration does

Connect your ElevenLabs AI agents with Google Calendar to manage schedules and appointments. This integration allows your agents to check availability, create, update, and delete events (including adding attendees and the option to set up meetings via Google Meet), list upcoming events, and discover available calendars through natural conversation.

How to connect ElevenLabs agent with Google Calendar Picture 1

Features

Ability Support
Zero retention mode (ZRM) Not supported
Attachments in the tool Not supported - the tools only work on text.

Security warning

Review access before enabling tools. The update and delete tools can affect existing events within the connected account's authorized calendar scope, not just events created by the agent. Listing events can expose event IDs. A prompt asking for confirmation does not enforce authorization.

These tools should only be enabled on agents that have been authenticated, or where the event ID originates from a trusted source. Under no circumstances should these tools be added to public agents. Event participants will always receive notifications when the event is updated or deleted.

Connect the correct Google account

This integration uses Google OAuth 2.0 for authentication. You will grant ElevenLabs permission to access Google Calendar on your behalf.

1. Click on Connect in ElevenLabs

In the ElevenLabs integration settings, click Connect . You will be redirected to Google to grant access.

2. Select your Google account

Select the Google account containing the calendar data you want your agent to access. If your browser is logged into multiple Google accounts, make sure to select the correct one.

3. Grant calendar access permissions.

Review the requested permissions and click Allow . This integration requests permission to manage events on your owned calendar, view your calendar list, and check your free/busy status.

OAuth access scopes

This integration requires the following access scopes from Google OAuth 2.0:

Scope Purpose
calendar.events.owned Create, read, update, and delete events on calendars that you own.
calendar.calendarlist.readonly View a list of calendars that your account has access to (name and ID).
calendar.freebusy Check the availability/busy status on calendars without revealing event details.

How it works

The agent schedules meetings using tool calls to execute each step in the scheduling process. The section below provides an overview and detailed system prompt instructions.

Scheduling workflow

1. Search for the calendar

The agent lists the accessible calendars to determine the most suitable one for scheduling. For most users, this is the primary calendar.

2. Check your availability (available/busy).

The agent checks availability by:

  • Use the tool google_calendar_check_availabilityto query busy periods.
  • Verify that the requested time slot is available.
  • Suggest alternative time slots if the required time conflicts with an existing event.
  • Confirm the chosen time with the caller.

3. Collect participant information.

After agreeing on a time, the agent will:

  • Collect the full names and email addresses of all attendees.
  • Confirm your email address by reading it aloud to the caller.
  • Verify the time zone information.

4. Create an event

The agent will:

  • Call the tool google_calendar_create_eventwith the confirmed information.
  • Add a Google Meet link (if an online meeting is required).
  • Confirm the event creation and notify attendees that they will receive an invitation via calendar.

Detailed system instructions

You are a helpful scheduling assistant responsible for managing calendar bookings using Google Calendar. Be friendly, precise, and concise. Begin by briefly asking for the purpose of the meeting and the caller's preferred date and time. Then, ask about the desired meeting duration (15, 30, or 60 minutes), and wait for the user's response before proceeding. Once you have the meeting details, check calendar availability: - Call google_calendar_check_availability with the appropriate time range and calendar ID (use 'primary' for the main calendar) - The tool returns busy time blocks — a gap is a candidate only when it also meets working hours, booking rules, duration, and any required buffers - If the requested time overlaps with a busy block, suggest alternative times - Continue until a suitable time is agreed upon After confirming a time slot, gather the following contact details: - The attendee's full name - A valid email address. Note that the email address is transcribed from voice, so ensure it is formatted correctly. - The attendee's time zone (in 'Continent/City' format like 'America/New_York') - Read the email back to the caller to confirm accuracy Once all details are confirmed, create the event: - Call google_calendar_create_event with calendarId set to 'primary' - Set summary to a descriptive meeting title - Set start and end times in RFC 3339 format with the attendee's time zone - Add the attendee's email to the attendees array - If the caller requests a video call, include conferenceData with conferenceSolutionKey type 'hangoutsMeet' and set the conferenceDataVersion query parameter to 1 - Set sendUpdates to 'all' so attendees receive calendar invitations Thank the attendee and inform them they will receive a calendar invitation shortly. Clarifications: - Do not inform the user that you are formatting the email; do it silently. - If the caller asks to proceed, first ensure the intended calendar, date, time zone, duration, and attendee address are complete and authorized. Never guess a missing field. - Use google_calendar_list_calendars if the caller asks to schedule on a specific calendar other than their primary one. - Use google_calendar_list_events if the caller asks what meetings they have coming up, or to find the event ID before changing or cancelling a meeting. - Use google_calendar_update_event to reschedule or edit an existing event. Check availability for the new time first, and confirm the change with the caller. - Use google_calendar_delete_event to cancel an event only after the caller has explicitly confirmed which event to cancel. For recurring events, confirm whether to cancel one occurrence or the whole series: list events with singleEvents=true and use the occurrence's ID for one occurrence, or its recurringEventId for the whole series. Guardrails: - Do not share any internal IDs or API details with the caller. - Report success only after the tool confirms it. If the outcome is uncertain, check whether the event already exists before retrying to avoid duplicate invitations. 

Agent tools

When you add Google Calendar tools to an agent, the following built-in tools become available:

Tools Describe
google_calendar_check_availability Check the availability status of one or more schedules within a specific timeframe. The system will return busy time slots so users can find available slots. Use this feature before creating an event to avoid scheduling conflicts.
google_calendar_create_event Create a new event on Google Calendar, and you can optionally add attendees, a location, and enable Google Meet meeting functionality. The system will send email notifications to all participants.
google_calendar_list_events List upcoming events from the calendar within a specific timeframe, sorted by start time. Supports free-form text search on event summaries, descriptions, locations, and attendee details.
google_calendar_update_event Privileged tool. to update any event on the calendar, such as rescheduling or changing the title, location, or attendees. Only the information fields provided will be changed. Attendees will receive a notification.
google_calendar_delete_event Privileged tool. Delete any event from the calendar, and cancel that event for all attendees. Use the list events command first to find the event ID. For recurring events, use the ID of a specific occurrence or the ID of that recurring event sequence (recurringEventId).
google_calendar_list_calendars List all calendars that the connected Google account has access to. Return the name and ID of those calendars. Use this feature to identify the calendar you need to work with before checking its availability or creating an event.

Test before accepting real bookings

  • Confirm the intended calendar rather than assuming that listing it grants permission to edit it.
  • Try a busy slot, an out-of-hours request, and a time-zone or daylight-saving boundary.
  • Verify attendee addresses and inspect the resulting invitation and optional Meet link.
  • Test rescheduling and cancellation only on events you are authorized to change, including one occurrence versus a recurring series.
  • Check failure behavior and duplicate-event prevention before turning on automatic execution.

Use dynamic variables to pass approved context and system tools for conversation control. Tool configuration and server-side access checks must enforce the boundaries; a helpful-sounding scheduling prompt cannot replace them.

Discussion

Reader Comments 0

Sign in with email or Google to join the discussion.