Dental AI Receptionist
A production-ready, 12-workflow AI voice receptionist system for dental practices. Handles inbound calls, appointment booking, reminders, cancellations, waitlist management, patient recall, and staff escalation — fully automated.
Problem
Dental practices lose revenue from missed calls, no-shows, and manual scheduling overhead. Front desk staff spend 60-70% of their time on phone calls that could be automated. After-hours calls go to voicemail and patients book elsewhere.
This system provides 24/7 AI-powered call handling, automated reminders, and intelligent patient management.
What It Does
- Inbound Call Routing — AI answers calls, identifies intent (booking, cancellation, FAQ, emergency), routes accordingly
- Appointment Booking — Books appointments with calendar integration and SMS confirmation
- Smart Reminders — Sends 48h, 24h, and 2h reminders to reduce no-shows
- No-Show Followup — Automatically follows up with patients who miss appointments
- Cancellation & Waitlist — Handles cancellations and fills gaps from waitlist
- After-Hours Capture — Captures calls outside business hours for next-day followup
- Patient Recall — Proactive outreach for overdue care (cleanings, checkups)
Included Workflows
| # |
File |
Purpose |
| 01 |
01-inbound-call-handler.json |
Call intake, intent classification, business hours routing |
| 02 |
02-appointment-booking.json |
Book appointments, calendar sync, PMS integration |
| 03 |
03-appointment-reminders.json |
Multi-stage reminders (48h, 24h, 2h before) |
| 04 |
04-noshow-followup.json |
Detect no-shows, send followup messages |
| 05 |
05-cancellation-waitlist.json |
Process cancellations, auto-fill from waitlist |
| 06 |
06-after-hours-capture.json |
Capture after-hours calls for next-day callback |
| 07 |
07-patient-recall.json |
Recall campaigns for overdue patients |
| 08 |
08-faq-handler.json |
AI-powered answers to common questions |
| 09 |
09-staff-escalation.json |
AI summary + alert for calls needing human attention |
| 10 |
10-crm-sync.json |
Sync patient data with CRM (HubSpot, PMS) |
| 11 |
11-daily-report.json |
Daily metrics email (calls, bookings, no-shows, etc.) |
| 12 |
12-sms-reply-handler.json |
Process inbound SMS replies from patients |
Architecture
Inbound Call (Vapi AI Voice)
|
v
Workflow 01: Intent Classification
|
+-- Booking ---------> Workflow 02: Appointment Booking
| |
| v
| Google Calendar + PMS
|
+-- Cancellation ----> Workflow 05: Cancel + Waitlist Fill
|
+-- FAQ -------------> Workflow 08: AI FAQ Response
|
+-- Emergency -------> Workflow 09: Staff Escalation
|
+-- After Hours -----> Workflow 06: Capture for Callback
|
+-- All Events ------> Workflow 10: CRM Sync
|
+-> Google Sheets (Call Log, Appointments, Patients)
+-> HubSpot CRM (optional)
Scheduled:
+-- Workflow 03: Appointment Reminders (hourly check)
+-- Workflow 04: No-Show Followup (every 2 hours)
+-- Workflow 07: Patient Recall (weekly)
+-- Workflow 11: Daily Report (once daily)
+-- Workflow 12: SMS Reply Handler (webhook-triggered)
Required n8n Credentials
| Credential Type |
Used For |
Placeholder in JSON |
| Google Sheets OAuth2 |
Call logs, appointments, patient records |
YOUR_GOOGLE_SHEETS_CREDENTIAL_ID |
| SMTP (Gmail or custom) |
Reminders, reports, notifications |
YOUR_SMTP_CREDENTIAL_ID |
| Google Calendar OAuth2 |
Appointment scheduling |
Set via GOOGLE_CALENDAR_CRED_ID env |
| OpenAI |
FAQ answer generation, call summaries |
Set via OPENAI_CRED_ID env |
| Twilio |
Voice calls, SMS messaging |
Set via TWILIO_CRED_ID env |
Environment Variables
# Google Sheets
DENTAL_CALL_LOG_SHEET_ID=your-sheet-id
DENTAL_APPOINTMENTS_SHEET_ID=your-sheet-id
DENTAL_PATIENTS_SHEET_ID=your-sheet-id
# Google Calendar
DENTAL_CALENDAR_ID=your-calendar-id
# Clinic Details
DENTAL_CLINIC_NAME=Your Dental Practice
DENTAL_CLINIC_PHONE=+1234567890
DENTAL_CLINIC_EMAIL=reception@yourpractice.com
DENTAL_CLINIC_ADDRESS=123 Main St, Your City
DENTAL_EMERGENCY_PHONE=+1234567890
DENTAL_DENTIST_PHONE=+1234567890
DENTAL_STAFF_EMAIL=staff@yourpractice.com
DENTAL_OWNER_EMAIL=owner@yourpractice.com
# Vapi AI Voice
VAPI_API_KEY=your-vapi-key
VAPI_API_URL=https://api.vapi.ai
VAPI_REMINDER_ASSISTANT_ID=your-reminder-assistant-id
VAPI_NOSHOW_ASSISTANT_ID=your-noshow-assistant-id
VAPI_WAITLIST_ASSISTANT_ID=your-waitlist-assistant-id
VAPI_RECALL_ASSISTANT_ID=your-recall-assistant-id
# Twilio
TWILIO_PHONE_NUMBER=+1234567890
TWILIO_CRED_ID=your-n8n-twilio-credential-id
# n8n Infrastructure
N8N_WEBHOOK_BASE=https://your-n8n-instance.com/webhook
GOOGLE_CALENDAR_CRED_ID=your-n8n-google-calendar-credential-id
OPENAI_CRED_ID=your-n8n-openai-credential-id
# Optional (CRM / Practice Management)
HUBSPOT_API_KEY=your-hubspot-key
PMS_API_URL=https://your-pms.com/api
PMS_API_KEY=your-pms-key
Google Sheets Schema
Call Log
| Column |
Type |
Description |
| call_id |
text |
Unique call identifier |
| caller_phone |
text |
Caller's phone number |
| caller_name |
text |
Patient name (if identified) |
| intent |
text |
booking / cancellation / faq / escalation / after-hours |
| timestamp |
datetime |
Call timestamp |
| duration |
number |
Call duration in seconds |
| summary |
text |
AI-generated call summary |
| outcome |
text |
booked / cancelled / answered / escalated / captured |
Appointments
| Column |
Type |
Description |
| appointment_id |
text |
Unique ID |
| patient_name |
text |
Patient full name |
| patient_phone |
text |
Phone number |
| service_type |
text |
cleaning / checkup / filling / crown / etc. |
| date |
date |
Appointment date |
| time |
text |
Appointment time |
| status |
text |
confirmed / reminded / completed / no-show / cancelled |
| showed_up |
boolean |
Whether patient attended |
| reminder_48h |
boolean |
48h reminder sent |
| reminder_24h |
boolean |
24h reminder sent |
| reminder_2h |
boolean |
2h reminder sent |
Patients
| Column |
Type |
Description |
| patient_phone |
text |
Primary key |
| patient_name |
text |
Full name |
| email |
text |
Email address |
| last_service |
text |
Most recent service type |
| last_visit |
date |
Most recent visit date |
| recall_status |
text |
due / notified / scheduled / completed |
| total_visits |
number |
Lifetime visit count |
Quick Start
1. Prerequisites
- n8n v2.4+ (self-hosted)
- Vapi.ai account (AI voice calls)
- Twilio account (phone number + SMS)
- Google Sheets OAuth2 credentials
- Google Calendar API access
2. Create Sheets
Set up 3 Google Sheets with the schemas above: Call Log, Appointments, Patients. Optionally add Waitlist, Escalations, After-Hours Queue, and Daily Reports sheets.
3. Configure Vapi Assistant
Create a Vapi assistant with your dental practice's greeting, business hours, services, and FAQ responses.
4. Import Workflows
Import all 12 JSON files into n8n. Replace all YOUR_* placeholders and set environment variables.
5. Activate
Activate workflows in order: 01 first (inbound handler), then the rest. Test with a phone call to your Vapi number.
Use Cases
- Solo dental practices — Replace or augment front desk with 24/7 AI receptionist
- Multi-location dental groups — Centralized call handling across clinics
- Dental service organizations (DSOs) — Scalable patient communication
- Orthodontic practices — Long appointment cycles benefit from recall automation
- Dental IT providers — Offer AI receptionist as a managed service to clients
Revenue Potential
- For practices: Reduce missed calls by 80%+, no-shows by 30-50%
- As a service: Charge $500-1,500/month per dental practice
- Per-call pricing: $1-3 per handled call
Requirements
- n8n v2.4+ (self-hosted recommended)
- Vapi.ai account ($0.05-0.10 per minute)
- Twilio account ($0.0075 per SMS)
- Google Sheets + Calendar API credentials
- Optional: HubSpot CRM, Dentrix/Eaglesoft/OpenDental PMS
1---2name: dental-ai-receptionist3description: Complete AI voice receptionist system for dental practices. 12 workflows covering inbound call routing, appointment booking, reminders, no-show followup, cancellation/waitlist, after-hours capture, patient recall, FAQ handling, staff escalation, CRM sync, daily reports, and SMS reply handling.4---56# Dental AI Receptionist78A production-ready, 12-workflow AI voice receptionist system for dental practices. Handles inbound calls, appointment booking, reminders, cancellations, waitlist management, patient recall, and staff escalation — fully automated.910## Problem1112Dental practices lose revenue from missed calls, no-shows, and manual scheduling overhead. Front desk staff spend 60-70% of their time on phone calls that could be automated. After-hours calls go to voicemail and patients book elsewhere.1314This system provides 24/7 AI-powered call handling, automated reminders, and intelligent patient management.1516## What It Does17181. **Inbound Call Routing** — AI answers calls, identifies intent (booking, cancellation, FAQ, emergency), routes accordingly192. **Appointment Booking** — Books appointments with calendar integration and SMS confirmation203. **Smart Reminders** — Sends 48h, 24h, and 2h reminders to reduce no-shows214. **No-Show Followup** — Automatically follows up with patients who miss appointments225. **Cancellation & Waitlist** — Handles cancellations and fills gaps from waitlist236. **After-Hours Capture** — Captures calls outside business hours for next-day followup247. **Patient Recall** — Proactive outreach for overdue care (cleanings, checkups)2526## Included Workflows2728| # | File | Purpose |29|---|------|---------|30| 01 | `01-inbound-call-handler.json` | Call intake, intent classification, business hours routing |31| 02 | `02-appointment-booking.json` | Book appointments, calendar sync, PMS integration |32| 03 | `03-appointment-reminders.json` | Multi-stage reminders (48h, 24h, 2h before) |33| 04 | `04-noshow-followup.json` | Detect no-shows, send followup messages |34| 05 | `05-cancellation-waitlist.json` | Process cancellations, auto-fill from waitlist |35| 06 | `06-after-hours-capture.json` | Capture after-hours calls for next-day callback |36| 07 | `07-patient-recall.json` | Recall campaigns for overdue patients |37| 08 | `08-faq-handler.json` | AI-powered answers to common questions |38| 09 | `09-staff-escalation.json` | AI summary + alert for calls needing human attention |39| 10 | `10-crm-sync.json` | Sync patient data with CRM (HubSpot, PMS) |40| 11 | `11-daily-report.json` | Daily metrics email (calls, bookings, no-shows, etc.) |41| 12 | `12-sms-reply-handler.json` | Process inbound SMS replies from patients |4243## Architecture4445```46Inbound Call (Vapi AI Voice)47 |48 v49Workflow 01: Intent Classification50 |51 +-- Booking ---------> Workflow 02: Appointment Booking52 | |53 | v54 | Google Calendar + PMS55 |56 +-- Cancellation ----> Workflow 05: Cancel + Waitlist Fill57 |58 +-- FAQ -------------> Workflow 08: AI FAQ Response59 |60 +-- Emergency -------> Workflow 09: Staff Escalation61 |62 +-- After Hours -----> Workflow 06: Capture for Callback63 |64 +-- All Events ------> Workflow 10: CRM Sync65 |66 +-> Google Sheets (Call Log, Appointments, Patients)67 +-> HubSpot CRM (optional)6869Scheduled:70+-- Workflow 03: Appointment Reminders (hourly check)71+-- Workflow 04: No-Show Followup (every 2 hours)72+-- Workflow 07: Patient Recall (weekly)73+-- Workflow 11: Daily Report (once daily)74+-- Workflow 12: SMS Reply Handler (webhook-triggered)75```7677## Required n8n Credentials7879| Credential Type | Used For | Placeholder in JSON |80|----------------|----------|---------------------|81| Google Sheets OAuth2 | Call logs, appointments, patient records | `YOUR_GOOGLE_SHEETS_CREDENTIAL_ID` |82| SMTP (Gmail or custom) | Reminders, reports, notifications | `YOUR_SMTP_CREDENTIAL_ID` |83| Google Calendar OAuth2 | Appointment scheduling | Set via `GOOGLE_CALENDAR_CRED_ID` env |84| OpenAI | FAQ answer generation, call summaries | Set via `OPENAI_CRED_ID` env |85| Twilio | Voice calls, SMS messaging | Set via `TWILIO_CRED_ID` env |8687## Environment Variables8889```bash90# Google Sheets91DENTAL_CALL_LOG_SHEET_ID=your-sheet-id92DENTAL_APPOINTMENTS_SHEET_ID=your-sheet-id93DENTAL_PATIENTS_SHEET_ID=your-sheet-id9495# Google Calendar96DENTAL_CALENDAR_ID=your-calendar-id9798# Clinic Details99DENTAL_CLINIC_NAME=Your Dental Practice100DENTAL_CLINIC_PHONE=+1234567890101DENTAL_CLINIC_EMAIL=reception@yourpractice.com102DENTAL_CLINIC_ADDRESS=123 Main St, Your City103DENTAL_EMERGENCY_PHONE=+1234567890104DENTAL_DENTIST_PHONE=+1234567890105DENTAL_STAFF_EMAIL=staff@yourpractice.com106DENTAL_OWNER_EMAIL=owner@yourpractice.com107108# Vapi AI Voice109VAPI_API_KEY=your-vapi-key110VAPI_API_URL=https://api.vapi.ai111VAPI_REMINDER_ASSISTANT_ID=your-reminder-assistant-id112VAPI_NOSHOW_ASSISTANT_ID=your-noshow-assistant-id113VAPI_WAITLIST_ASSISTANT_ID=your-waitlist-assistant-id114VAPI_RECALL_ASSISTANT_ID=your-recall-assistant-id115116# Twilio117TWILIO_PHONE_NUMBER=+1234567890118TWILIO_CRED_ID=your-n8n-twilio-credential-id119120# n8n Infrastructure121N8N_WEBHOOK_BASE=https://your-n8n-instance.com/webhook122GOOGLE_CALENDAR_CRED_ID=your-n8n-google-calendar-credential-id123OPENAI_CRED_ID=your-n8n-openai-credential-id124125# Optional (CRM / Practice Management)126HUBSPOT_API_KEY=your-hubspot-key127PMS_API_URL=https://your-pms.com/api128PMS_API_KEY=your-pms-key129```130131## Google Sheets Schema132133### Call Log134| Column | Type | Description |135|--------|------|-------------|136| call_id | text | Unique call identifier |137| caller_phone | text | Caller's phone number |138| caller_name | text | Patient name (if identified) |139| intent | text | booking / cancellation / faq / escalation / after-hours |140| timestamp | datetime | Call timestamp |141| duration | number | Call duration in seconds |142| summary | text | AI-generated call summary |143| outcome | text | booked / cancelled / answered / escalated / captured |144145### Appointments146| Column | Type | Description |147|--------|------|-------------|148| appointment_id | text | Unique ID |149| patient_name | text | Patient full name |150| patient_phone | text | Phone number |151| service_type | text | cleaning / checkup / filling / crown / etc. |152| date | date | Appointment date |153| time | text | Appointment time |154| status | text | confirmed / reminded / completed / no-show / cancelled |155| showed_up | boolean | Whether patient attended |156| reminder_48h | boolean | 48h reminder sent |157| reminder_24h | boolean | 24h reminder sent |158| reminder_2h | boolean | 2h reminder sent |159160### Patients161| Column | Type | Description |162|--------|------|-------------|163| patient_phone | text | Primary key |164| patient_name | text | Full name |165| email | text | Email address |166| last_service | text | Most recent service type |167| last_visit | date | Most recent visit date |168| recall_status | text | due / notified / scheduled / completed |169| total_visits | number | Lifetime visit count |170171## Quick Start172173### 1. Prerequisites174- n8n v2.4+ (self-hosted)175- Vapi.ai account (AI voice calls)176- Twilio account (phone number + SMS)177- Google Sheets OAuth2 credentials178- Google Calendar API access179180### 2. Create Sheets181Set up 3 Google Sheets with the schemas above: Call Log, Appointments, Patients. Optionally add Waitlist, Escalations, After-Hours Queue, and Daily Reports sheets.182183### 3. Configure Vapi Assistant184Create a Vapi assistant with your dental practice's greeting, business hours, services, and FAQ responses.185186### 4. Import Workflows187Import all 12 JSON files into n8n. Replace all `YOUR_*` placeholders and set environment variables.188189### 5. Activate190Activate workflows in order: 01 first (inbound handler), then the rest. Test with a phone call to your Vapi number.191192## Use Cases1931941. **Solo dental practices** — Replace or augment front desk with 24/7 AI receptionist1952. **Multi-location dental groups** — Centralized call handling across clinics1963. **Dental service organizations (DSOs)** — Scalable patient communication1974. **Orthodontic practices** — Long appointment cycles benefit from recall automation1985. **Dental IT providers** — Offer AI receptionist as a managed service to clients199200## Revenue Potential201202- **For practices**: Reduce missed calls by 80%+, no-shows by 30-50%203- **As a service**: Charge $500-1,500/month per dental practice204- **Per-call pricing**: $1-3 per handled call205206## Requirements207208- n8n v2.4+ (self-hosted recommended)209- Vapi.ai account ($0.05-0.10 per minute)210- Twilio account ($0.0075 per SMS)211- Google Sheets + Calendar API credentials212- Optional: HubSpot CRM, Dentrix/Eaglesoft/OpenDental PMS