How it works
When an agent invokes an appointment tool, ElevenLabs posts a webhook to Sniko with anaction parameter. The AppointmentToolService routes the request to the correct handler:
| Action values | Handler |
|---|---|
check_availability, get_available_times, availability | Return available time slots for a date |
book_appointment, book, schedule | Create a confirmed booking |
cancel_appointment, cancel | Cancel an existing booking |
reschedule_appointment, reschedule | Cancel the old booking and create a new one |
Creating an appointment tool
Navigate to Appointment Tools
Open Appointment Tools in the sidebar and click Create Appointment Tool.
Fill in the basics
Provide a name and optional description. Select a timezone — all availability windows and booking times are interpreted in this timezone.
Set availability
Define which days and hours the tool accepts bookings. For each day of the week (0 = Sunday, 6 = Saturday), specify:
The form pre-fills with your account’s default availability (Monday–Friday 09:00–17:00 if no default is configured).
| Field | Description |
|---|---|
is_available | Whether this day is open for bookings |
start_time | Opening time in HH:MM format |
end_time | Closing time in HH:MM format |
Add services
At least one service is required. Each service represents a bookable appointment type:
| Field | Required | Description |
|---|---|---|
| Name | Yes | Service name shown to callers and in the calendar |
| Description | No | Optional description |
| Duration | Yes | Length of the appointment in minutes (15–480) |
| Buffer minutes | No | Gap added after the appointment before the next slot opens (0–60) |
| Price | No | Optional price for the service |
| Max advance days | No | How many days ahead a booking can be made (1–365, default 30) |
| Min notice hours | No | Minimum lead time in hours before the appointment (1–168, default 2) |
Assign agents (optional)
Supply ElevenLabs agent IDs to assign the tool to agents immediately upon creation.
Booking settings
After creation, fine-grained booking behaviour is configurable from the edit page:| Setting | Description |
|---|---|
| Max advance days | Furthest future date a booking can be made |
| Min advance hours | Minimum lead time before the appointment |
| Buffer time (minutes) | Buffer added between consecutive bookings |
| Default duration (minutes) | Fallback duration when the service has none |
| Allow cancellation | Whether callers and agents can cancel bookings |
| Cancellation hours | Minimum hours before the appointment that cancellation is allowed |
| Require confirmation | Whether bookings start in pending status |
| Auto-confirm | Automatically move pending bookings to confirmed |
Calendar connections
Appointment tools support OAuth-based calendar integrations so bookings appear directly in your external calendar.Google Calendar
Connects via Google OAuth. Bookings created through the tool are written to the selected Google Calendar and cancellations are reflected automatically.
Microsoft Calendar
Connects via Microsoft OAuth (Azure AD). Uses the Microsoft Calendar webhook controller to sync bookings to Outlook/Microsoft 365.
AppointmentToolCalendar relationship. Configure them from the tool’s Integrations tab.
Webhook endpoint
ElevenLabs calls the appointment tool webhook when an agent invokes it during a call:secret is a 32-character random string generated at creation time. Requests with an incorrect secret receive a 401 response.
Example request for checking availability:
The agent ElevenLabs tool definition instructs the agent to always call
check_availability before calling book to avoid booking into unavailable slots.Public booking page
Every appointment tool has a shareable, no-authentication booking page:public_url attribute on the tool and is shown in the tool detail view.
Registering with ElevenLabs
Creating an appointment tool automatically registers it with ElevenLabs viaregisterWithElevenLabs in the service. The ElevenLabs tool definition sent to POST /convai/tools includes:
- Tool name:
appointment_booking_{id} - Available actions:
check_availability,get_available_times,book_appointment,book,schedule,cancel_appointment,cancel,reschedule_appointment,reschedule - Required parameters:
action - Optional parameters:
service_type,preferred_date,preferred_time,customer_name,customer_email,customer_phone,booking_id,confirmation_code,notes
unregisterTool before deletion, which sends DELETE to the ElevenLabs tools API.
Assigning to agents
To remove an agent assignment, update the tool and omit the agent ID from the
agent_ids array. The service calls agents()->detach() and re-creates only the supplied assignments.
Managing bookings
Calendar view
Navigate to Calendar from the Appointment Tools sidebar entry to see all bookings across all your tools on a monthly calendar. You can filter by a specific tool using the dropdown. Each booking event shows customer name, tool name, service, status, and notes. Use the Calendar action on a specific tool’s detail page to see only that tool’s bookings. Booking statuses:| Status | Description |
|---|---|
pending | Booking created but not yet confirmed |
confirmed | Booking is confirmed |
cancelled | Booking was cancelled |
completed | Booking was marked as complete |
Cancel a booking
Click Cancel on any confirmed or pending booking. The cancellation policy on the tool (minimum hours before the appointment) is enforced. On success, the booking status is set tocancelled and cancelled_at is recorded.