Handle voice-based appointment bookings with OpenAI, Cal.com and WhatsApp

Go to Workflow
0 views
Built by Oneclick AI Squad Oneclick AI Squad
Created on June 05, 2026

Description

This workflow handles incoming voice calls or audio messages, transcribes them using Whisper (OpenAI) or ElevenLabs, extracts booking intent and preferred time slots using AI, checks availability on Cal.com or Google Calendar, books the appointment automatically, and sends a confirmation via WhatsApp, SMS, or Email.

Who's it for
• Service businesses (clinics, salons, consultants, coaches)
• Solopreneurs who want a 24/7 voice booking assistant
• Teams that receive appointment requests via phone/WhatsApp voice notes

How it works / What it does
Receives incoming voice call or audio file via Webhook
Transcribes audio using OpenAI Whisper or ElevenLabs STT
AI extracts booking intent: name, date, time, service type
Validates and normalizes extracted date/time
Checks real-time availability on Cal.com or Google Calendar
If slot is free → books the appointment automatically
If slot is taken → AI suggests next 3 available slots
Generates a voice or text confirmation response
Sends confirmation via WhatsApp, SMS, or Email
Logs all bookings to Google Sheets

How to set up
Import this workflow into n8n
Configure credentials: OpenAI (Whisper), Cal.com API, Google Calendar, Twilio, SendGrid
Update your business name, services list, and timezone
Point your phone/WhatsApp webhook to the n8n webhook URL
Activate workflow

Requirements
• OpenAI API key (Whisper STT + GPT for intent extraction)
• Cal.com API key OR Google Calendar OAuth
• Twilio account (WhatsApp / SMS confirmation)
• SendGrid (email confirmation, optional)
• Google Sheets (booking log)

How to customize
• Swap Whisper with ElevenLabs STT in the transcription node
• Add service-specific booking rules in the AI Extraction node
• Change confirmation channel in the Set Preferences node
• Extend slot suggestion logic in the JS Availability node

Nodes Used (2)

Code
n8n-nodes-base.code
HTTP Request
n8n-nodes-base.httpRequest