Skip to main content

Automate medical appointments with ElevenLabs voice agent & Google Calendar

Workflow preview

Workflow preview
100%
Automate medical appointments with ElevenLabs voice agent & Google Calendar preview
Open on n8n.io

Important notice

This workflow is provided as-is. Please review and test before using in production.

1. Workflow Overview

AI Powered Voice Appointment Booking with ElevenLabs Transform your appointment scheduling with this production ready workflow that connects ElevenLabs voice AI to your Google Calendar. Patients ca...

Best for

  • Support Chatbot automation workflows
  • AI Chatbot automation workflows
  • advanced n8n builders looking for reusable templates

Tools used

n8n-nodes-base.stickynote, n8n-nodes-base.webhook, n8n-nodes-base.if, n8n-nodes-base.googlecalendar, n8n-nodes-base.set, n8n-nodes-base.gmail, n8n-nodes-base.respondtowebhook, n8n-nodes-base.code

Source and attribution

This workflow is cataloged by N8N Workflows and links back to its original n8n.io source page by Anatoly.

Original n8n.io source

1.1 Workflow description

Title
Automate medical appointments with ElevenLabs voice agent & Google Calendar
Workflow name
Automate medical appointments with ElevenLabs voice agent & Google Calendar

AI-Powered Voice Appointment Booking with ElevenLabs

Transform your appointment scheduling with this production-ready workflow that connects ElevenLabs voice AI to your Google Calendar. Patients can call and book appointments naturally through conversation, while the system handles real-time availability checking, calendar management, and automated confirmations—completely hands-free.

🎯 What It Does:

Voice-Activated Booking: Patients speak naturally to book appointments via ElevenLabs AI agent

Real-Time Availability: Instantly checks calendar conflicts and returns available time slots

Smart Scheduling: Automatically generates available 30-minute slots across business hours for the next 30 days

Calendar Sync: Creates Google Calendar events with all appointment details, locations, and attendees

Email Confirmations: Sends personalized HTML confirmation emails with appointment details and preparation instructions

Dual Functionality: Handles both "check availability" queries and "book appointment" requests through a single webhook

💼 Perfect For: Medical/dental clinics • Beauty salons • Spas • Consulting services • Legal offices • Fitness studios • Therapy practices • Any appointment-based business seeking 24/7 automated scheduling

Real conversation example:

Voice version: https://drive.google.com/file/d/1CjhyjICTtLioA737SOkpbgcdLdUpVCr3/view

Text version:

++AI Voice Assistant++ (00:00) Hello, I'm Ella from Evergreen Clinic. How can I assist you today?

++Patient++ (00:05) Hello Ella, I wanted to book an appointment for Botox treatment.

++AI Voice Assistant++ (00:11) I'd be happy to help you schedule a Botox appointment. Our Botox treatments take about 20 minutes and are performed by Dr. Sava or our nurse injector Sarah. Would you prefer our Zurich or Bern location?

++Patient++ (00:24) I prefer Zurich.

++AI Voice Assistant++ (00:28) great Zurich it is. Do you have a specific date in mind for your Botox appointment?

++Patient++ (00:32) Yeah, October the 7th and let's say 5 p.m.

++AI Voice Assistant++ (00:47) I have the 5 p.m. slot available on October 7th in Zurich. May I have your first name to proceed with the booking?

++Patient++ (00:54) Yes, my first name Anatoly, surname Sava.

++AI Voice Assistant++ (01:02) Thank you, Anatoly Sava. Could you please provide your email address for the appointment confirmation? Please spell it out slowly.

++Patient++ (01:08) [Your Email]

++AI Voice Assistant++ (01:19) Thank you. Just to confirm, your email is [Your Email] correct?

++Patient++ (01:29) Yes.

++AI Voice Assistant++ (01:34) Perfect. Lastly, may I have your phone number to complete the booking?

++Patient++ (01:39) My phone number is [Your Number]

++AI Voice Assistant++ (01:51) Thank you for the details, Anatoly. I will now book your Botox appointment in Zurich on October 7th at 5 p.m. Perfect. I've booked your Botox appointment at our Zurich clinic on October 7th at 5 p.m. A confirmation email will be sent to [Your Email]. Thank you for choosing Evergreen Clinic. If you have any questions before your appointment, please don't hesitate to call us back. Have a wonderful day.

++Patient++ (02:19) Perfect. You too.

++AI Voice Assistant++ (02:22) Thank you, take care and have a great day ahead.

🔧 Technical Features:

Intelligent routing logic distinguishes between availability checks and booking requests

Custom JavaScript algorithm calculates conflict-free time slots

Timezone-aware date/time handling (customizable for any timezone)

Configurable business hours, appointment duration, and look-ahead period

Natural language date formatting for voice responses

Webhook-based architecture for seamless ElevenLabs integration

📋 Requirements:

ElevenLabs account (for voice agent)

Google Calendar

Gmail address for confirmations

Quick Setup:

Step 1: n8n Configuration Connect your Google Calendar, customize business hours in the code node, update clinic details in the email template. Includes pinned test data for easy testing before going live.

Step 2: ElevenLabs Agent Setup

  1. Create a new Conversational AI Italicagent in ElevenLabs

  2. Configure two tools into ElevenLabs with webhook URL pointing to this workflow:

  • check_availability(date, time, appointmentType, location)

  • book_appointment(fullName, email, phone, date, time, appointmentType, location)

  • Create a detailed system prompt defining your agent's identity, personality, tone of voice, and conversation behavior

This is a chunk of a system prompt (the full version is too long):

IDENTITY

You are Ella, an appointment scheduling voice assistant for Evergreen Clinic, which specializes in plastic surgery procedures. Your primary purpose is to efficiently schedule, confirm, reschedule, or cancel appointments while providing accurate information about services from your knowledge files only.

VOICE & STYLE

  • Use a friendly, professional yet warm tone suitable for a plastic surgery clinic
  • Keep all your responses short and simple. Use casual language, phrases like "Umm..", "Well...", and "I mean" are preferred.
  • NEVER interrupt a patient if they start talking
  • This is a voice conversation, so keep your responses short, like in a real conversation. Don't ramble for too long. - Keep responses concise (8-15 words per sentence ideal) - Use natural speech patterns with occasional phrases like "I understand" and "Of course..." - Insert brief pauses between information chunks to sound natural
  • Show empathy and sensitivity appropriate for plastic surgery clients - Never rush the caller, but keep the conversation focused - Maintain a reassuring tone when discussing procedures
  • Zürich — pronounce /ˈtsyːʁɪç/. In plain terms: start with “ts”, the ü is like French u in tu (rounded front, not “oo”), stress the first syllable, and the final “ch” is the soft German sound as in ich (not “k”). Avoid saying “ZOO-rich.”
  • Bern — pronounce /bɛrn/. Short e like in bet, single r (not American “urn”), no extra vowel at the end. Avoid saying “BURN.”

Full ElevenLabs set up guide: https://youtu.be/kbiWe93nFMk?si=_bQYIoq1cjXKO5kl

🎁 What You Get: Complete end-to-end automation with detailed sticky note documentation, live conversation example, video tutorial, system prompt template, customization guides, troubleshooting tips, and security best practices.

1.2 Logical Blocks

This catalog entry is organized from the workflow JSON. The node-level section below shows the executable blocks available for review before importing the template.

2. Block-by-Block Analysis

Block 1 - Sticky Note - Webhook

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 2 - Sticky Note - Edit Fields

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 3 - Sticky Note - Routing

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 4 - Sticky Note - Booking

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 5 - Sticky Note - Email

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 6 - Sticky Note - Availability

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 7 - Sticky Note - Quick Start

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 8 - Sticky Note - Troubleshooting

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 9 - Webhook1

Type / Role
n8n-nodes-base.webhook - webhook
Config choices
Version 2.1

Block 10 - Available?1

Type / Role
n8n-nodes-base.if - if
Config choices
Version 2.2

Block 11 - Check Availability Again

Type / Role
n8n-nodes-base.googleCalendar - googleCalendar
Config choices
Version 1.3

Block 12 - Set Up Variables

Type / Role
n8n-nodes-base.set - set
Config choices
Version 3.4

Block 13 - Book Appointment

Type / Role
n8n-nodes-base.googleCalendar - googleCalendar
Config choices
Version 1.3

Block 14 - Get availability in a calendar

Type / Role
n8n-nodes-base.googleCalendar - googleCalendar
Config choices
Version 1.3

Block 15 - Send a message

Type / Role
n8n-nodes-base.gmail - gmail
Config choices
Version 2.1

Block 16 - Confirm Booking

Type / Role
n8n-nodes-base.respondToWebhook - respondToWebhook
Config choices
Version 1.4

Block 17 - Confirm Available Times

Type / Role
n8n-nodes-base.respondToWebhook - respondToWebhook
Config choices
Version 1.4

Block 18 - Sort Available Slots

Type / Role
n8n-nodes-base.code - code
Config choices
Version 2

Block 19 - Aggregate

Type / Role
n8n-nodes-base.aggregate - aggregate
Config choices
Version 1

Block 20 - Confirm The Time's Unavailable

Type / Role
n8n-nodes-base.respondToWebhook - respondToWebhook
Config choices
Version 1.4

Block 21 - If

Type / Role
n8n-nodes-base.if - if
Config choices
Version 2.2

3. Summary Table

Workflow Automate medical appointments with ElevenLabs voice agent & Google Calendar
Complexity advanced
Nodes 21
Categories Support Chatbot, AI Chatbot
Author Anatoly
Published 07 Oct 2025

4. Reproducing the Workflow from Scratch

  1. 1. Download the workflow JSON

    Use the JSON export at /data/workflows/9366/9366.json as the source template for this automation.

  2. 2. Import the template into n8n

    Open n8n, import the downloaded JSON, and review each node before activating the workflow.

  3. 3. Configure credentials and variables

    Replace placeholder credentials, API keys, webhook URLs, account IDs, and environment-specific values with your own settings.

  4. 4. Test with sample data

    Run the workflow manually or in a staging workspace, inspect node output, and confirm downstream systems receive the expected data.

  5. 5. Activate and monitor

    Enable the workflow only after testing, then monitor executions, errors, and rate limits during the first production runs.

5. General Notes & Resources

Review imported nodes carefully before activation. This catalog entry is intended to help you inspect the workflow structure, understand required services, and find related templates faster.

Node names, credentials, schedules, webhook paths, and external service limits may need adjustment for your workspace.

Frequently asked questions

What does Automate medical appointments with ElevenLabs voice agent & Google Calendar do?

AI Powered Voice Appointment Booking with ElevenLabs Transform your appointment scheduling with this production ready workflow that connects ElevenLabs voice AI to your Google Calendar. Patients ca...

What do I need before importing this workflow?

Review the workflow JSON, configure any required credentials in n8n, and test the automation in a safe workspace before using it in production.

Can I customize this workflow?

Yes. Use the block-by-block analysis and the downloadable JSON to inspect each node, then adjust credentials, prompts, schedules, filters, or destinations for your Support Chatbot, AI Chatbot use case.