Cal.com

Connect your ElevenLabs agents with Cal.com scheduling

Overview

Connect your ElevenLabs AI agents with Cal.com to manage scheduling and calendar bookings. This integration enables your agents to check availability, book appointments, cancel or reschedule meetings, and look up existing bookings through natural conversation.

Setup

This integration uses a Cal.com API key for authentication (not an OAuth app).

1

Generate an API key in Cal.com

Go to Settings > Developer > API Keys in your Cal.com account and click New. Copy the generated key immediately — it will not be shown again.

2

Use a live key

Cal.com generates two types of keys — test keys (starting with cal_) and live keys (starting with cal_live_). Use a live key so your agent can access real calendar data.

3

Connect in ElevenLabs

In the ElevenLabs integration setup, paste your Cal.com API key in the API Key field.

Demo

This demo uses legacy webhook tools. If you’re using the native Cal.com integration, the tools are configured automatically — no manual webhook setup is needed.

Cal.com Integration Demo

How it works

The agent schedules meetings by using tool calls to step through the booking process. The tabs below show a high-level summary and the detailed system prompt.

1

Initial inquiry and meeting details

The agent asks for the meeting purpose, preferred date/time, and duration to gather scheduling information.

2

Check calendar availability

The agent checks calendar availability by:

  • Using the get_available_slots tool to fetch open time slots.
  • Verifying whether the requested time is available.
  • Suggesting alternatives if the requested time is unavailable.
  • Confirming the selected time with the caller.
3

Contact information collection

Once a time is agreed upon, the agent:

  • Collects and validates the attendee’s full name.
  • Verifies email address accuracy.
  • Confirms time zone information.
  • Gathers any additional required fields for the Cal.com event type.
4

Meeting creation

The agent:

  • Calls the book_meeting tool after verifying all information.
  • Follows the booking template structure.
  • Confirms meeting creation with the attendee.
  • Informs them that they will receive a calendar invitation.

Manual webhook setup

If you use the native Cal.com integration, tools are configured automatically. The steps below apply only to manual webhook setup.

1

Store your Cal.com secret

Store your API key securely before making authenticated requests. Generate a new Cal.com API key if you have not already.

The Cal.com API expects the following authentication header:

Cal request header structure
'Authorization': 'Bearer YOUR_API_KEY'

Store the key in the agent’s secret storage to keep it secure and accessible when making requests.

To match the expected authentication structure of Cal.com, remember to prepend the API key with Bearer when creating the secret.

Tool secrets

2

Add tools to the agent

Enable calendar bookings by creating two tools:

  1. get_available_slots: When a user asks “Is Louis free at 10:30 AM on Tuesday?”, the agent uses Cal.com’s “Get available slots” endpoint to check for open time slots.

  2. book_meeting: After identifying a suitable time, the agent books the meeting using Cal.com’s “Create a booking” endpoint.

Navigate to the Tools section of the dashboard and select Add Tool. Choose Webhook as the tool type, then fill in the following sections:

Metadata used by the agent to determine when the tool should be called:

FieldValue
Nameget_available_slots
DescriptionThis tool checks if a particular time slot is available in the calendar.
MethodGET
URLhttps://api.cal.com/v2/slots

Metadata used by the agent to determine when the tool should be called:

FieldValue
Namebook_meeting
DescriptionThis tool books a meeting in the calendar once a time is agreed.
MethodPOST
URLhttps://api.cal.com/v2/bookings

Test the agent by pressing the Test AI agent button. Adjust the system prompt as needed.

3

Add date and time awareness

By default, the agent does not know the current date or time. Use one of the following approaches:

  1. Create a time retrieval tool: Add a tool that fetches the current date and time.

  2. Overrides: Use the overrides feature to inject the current date and time into the system prompt at the start of each conversation.

Security considerations

  • Use HTTPS endpoints for all webhook calls.
  • Store sensitive values as secrets using the ElevenLabs Secrets Manager.
  • Validate that all authorization headers follow the required format (Bearer YOUR_API_KEY).
  • Never expose event type IDs or API details to callers.