# Handle voice-based appointment bookings with OpenAI: n8n workflow

> Started by another system calling it. It calls services over plain HTTP rather than through connectors.

Source: https://millionrounds.com/workflow/handle-voice-based-appointment-bookings-with-openai (Millionrounds; every figure on the page links to its filing or article)

[Automation library](https://millionrounds.com/workflows) · [Scheduling](https://millionrounds.com/workflows?category=Scheduling#library)

# Handle voice-based appointment bookings with OpenAI

Started by another system calling it. It calls services over plain HTTP rather than through connectors. 22 steps, 2 branches, 2 loops or waits: large, and worth reading before you trust it with anything live.

Large

[Download free](https://millionrounds.com/login?next=%2Fapp%2Fworkflow%2Fhandle-voice-based-appointment-bookings-with-openai)

**22 steps** Large: read it before trusting it with anything live

**2** Branches: places the flow splits

**2** Loops or waits

**0** Services by connector: it calls them over plain HTTP

## The flow

Starts it 2 Logic 10 Service 10

The steps in the order they run, from what starts it.

- 1 **Webhook - Incoming Voice or Audio** Webhook *Starts it*
- 2 **Wait For Data** Wait *Logic*
- 3 **Set Business Config** Set *Logic*
- 4 **Whisper STT - Transcribe Audio** Http Request *Service*
- 5 **ElevenLabs STT - Alt Transcription** Http Request *Service*
- 6 **JS - Merge Transcription Result** Code *Logic*
- 7 **AI - Extract Booking Intent** Http Request *Service*
- 8 **JS - Parse Extracted Intent** Code *Logic*
- 9 **Filter - Is Booking Request?** Filter *Logic*
- 10 **Cal.com - Check Available Slots** Http Request *Service*
- 11 **Google Calendar - Check Busy Times** Http Request *Service*
- 12 **JS - Evaluate Slot Availability** Code *Logic*
- 13 **Wait For Result** Wait *Logic*
- 14 **Route - Slot Available or Conflict?** If *Logic*
- 15 **Cal.com - Book the Appointment** Http Request *Service*
- 16 **AI - Generate Conflict Response** Http Request *Service*
- 17 **JS - Build Confirmation Message** Code *Logic*
- 18 **Route - WhatsApp or Email?** If *Logic*
- 19 **Send WhatsApp Confirmation** Http Request *Service*
- 20 **Send Email Confirmation** Http Request *Service*
- 21 **Webhook Response** Respond To Webhook *Starts it*
- 22 **Log Booking to Google Sheets** Http Request *Service*

## How it's built

- **Starts on:** Another system calling it
- **Steps:** 22, with 2 branches, 2 loops or waits
- **Size:** Large: read it before trusting it with anything live
- **Connects to:** Nothing by connector; it calls services over plain HTTP
- **Model:** None. This is plumbing, not judgement

## Questions

What does it need to run?

An n8n account. You connect your own accounts after importing it; none are included.

What starts it?

It starts on another system calling it.

Does it use AI?

No. Every step is fixed logic or a call to a service, so it does the same thing every time.

How long does it take to set up?

Take your time. At 22 steps it is large: read it before trusting it with anything live.

How do I import it?

Copy the workflow, open a new workflow in n8n and paste. The steps appear on the canvas, ready for your own accounts.

**Before you run it**

Nothing here has been tested by us. It is somebody's working automation, read and described from its own steps. Treat the connections it wants as a list of accounts it will touch, and read the 22 steps before you point it at anything that matters.

## Run it in n8n

- **Create your n8n account** Free to start. n8n is where the workflow runs. [Create an n8n account ↗](https://millionrounds.com/n8n)
- **Download the workflow** Free with a Millionrounds account. [Download free](https://millionrounds.com/login?next=%2Fapp%2Fworkflow%2Fhandle-voice-based-appointment-bookings-with-openai)
- **Paste it into n8n** Open a new workflow in n8n and paste. Then connect your own accounts.

Stored with the author's traces removed: canvas notes, instance identifiers, saved credential names and any live document they had left behind.

## Workflows like it

Also scheduling, with the same services where possible, closest in size first.

- [**Generate and schedule SEO blog posts with Groq** 22 steps · Google Drive, Google Sheets](https://millionrounds.com/workflow/generate-and-schedule-seo-blog-posts-with-groq)
- [**Handle dental booking calls with Vapi and Airtable** 22 steps · Airtable](https://millionrounds.com/workflow/handle-dental-booking-calls-with-vapi-and-airtable)
- [**Schedule & publish all Instagram content types** 22 steps](https://millionrounds.com/workflow/schedule-and-publish-all-instagram-content-types)
- [**Sync Clockify to Google Calendar** 22 steps · Google Calendar](https://millionrounds.com/workflow/sync-clockify-to-google-calendar)
- [**Assign Requests with Send Reminders Based** 22 steps · calls a model · Email, NocoDB](https://millionrounds.com/workflow/assign-requests-with-send-reminders-based)
- [**Automate WhatsApp booking system with OpenAI and Cal.com** 22 steps · calls a model · Google Sheets](https://millionrounds.com/workflow/automate-whatsapp-booking-system-with-openai-and-cal-com)
