Quick overview
This workflow exposes webhooks that let an ElevenLabs/Exotel voice agent check availability and book appointments in Cal.com, returning suggested times or booking confirmations as JSON responses.
How it works
- Receives a POST request on the /appointment-webhook endpoint with a tool name and payload from the calling assistant.
- If the request asks to check availability, it queries the Cal.com Slots API for the provided date range, event type, and Asia/Kolkata time zone.
- Formats the returned slot times into up to four suggested start times and responds with a JSON payload indicating whether any slots are available.
- If the request asks to book an appointment, it creates a booking in Cal.com for the requested start time and attendee details (name, email, and phone).
- Returns a JSON success response with the booking ID and start time, or a friendly error message if booking fails or the tool name is unrecognized.
- Separately, responds to the /exotel-stream webhook with a WebSocket URL that connects Exotel to an ElevenLabs Conversational AI agent.
Setup
- Create a Cal.com API key, add it to n8n credentials (HTTP Header Auth), and ensure the Cal.com nodes send the required cal-api-version header.
- Update the Cal.com eventTypeId values (and any required query/body fields) to match the event type you want to offer for scheduling.
- Copy the production webhook URLs for /appointment-webhook and /exotel-stream and configure them in ElevenLabs tool definitions and your Exotel streaming setup.