If you run appointments at scale, manual confirmation calls become a bottleneck fast. This guide walks through building AI appointment confirmation phone calls — an automated v1 system that places 24-hour confirmation calls, handles outcomes (confirm, reschedule, can't make it), and updates your CRM so your team isn't chasing down no-shows.
Calls each person with an AI voice agent (ElevenLabs)
Staggers calls every 5 minutes to avoid a “call blast”
Records the outcome and updates Airtable
If needed, reschedules in Calendly and keeps Airtable in sync
Includes a safe fallback: if the caller asks questions, route them to a real phone number or email
Recommended stack
Airtable as the source of truth for appointments and confirmation status
Fillout (or your intake form tool) to collect signup details
Calendly to schedule the appointment time
Zapier to orchestrate scheduling, delays, and routing
ElevenLabs to run the AI voice agent
Data model: the fields you need in Airtable
Create (or confirm) these fields in your Appointments table:
Appointment datetime (the actual slot)
First name
Phone number
Confirmation Status (single select)
Confirmed phone
Confirmed Calendly
Confirmed text
Not confirmed
Phone call result (single select)
Left message
No answer
Confirmed
Rescheduled
Can’t make it
Other / unclear
Had an issue
Last confirmation call time (datetime)
Confirmation call attempts (number)
Core rule: only call people who still need confirmation
In v1, keep the logic simple:
Call only if Confirmation Status is empty or equals Not confirmed
Skip anyone already confirmed via text, Calendly, or phone
This reduces unnecessary calls and prevents you from annoying people who already confirmed.
Step-by-step: build the daily 24-hour call scheduler
1) Decide your “call windows”
If your appointments run in fixed blocks (example: 9:30 AM and 2:00 PM), you can create two scheduled runs:
Run A: around 9:15 AM today → calls for tomorrow’s 9:30 AM block
Run B: around 1:30 PM today → calls for tomorrow’s 2:00 PM block
If your schedule is more dynamic, use a single run that queries “appointments happening 24 hours from now” within a time range.
2) Create a scheduled Zapier trigger
In Zapier, create a Zap with:
Trigger: Schedule (daily)
Action: Airtable — Find records
Filter for appointments happening tomorrow in the relevant time window
Filter for Confirmation Status empty or Not confirmed
3) Stagger calls every 5 minutes
After you get the list of records, loop through them and add a delay so calls don’t all fire at once:
Use a loop step (Zapier Looping / “Create Loop From Line Items”)
Add a Delay After Queue step of 5 minutes per record
This is especially important if you have 15–30 appointments in one block.
4) Hand off to the ElevenLabs voice agent
For each record, send:
First name
Appointment date/time
Your company name (optional)
A “fallback contact” phone/email
Then instruct the agent to return one of a few clean outcomes.
The call script (template)
Keep the first version short and outcome-driven.
System goals for the agent:
Confirm attendance
Offer rescheduling if they can’t make it
If they ask operational questions, route them to a real person
Example script:
Greeting: “Hi {first_name}, this is an automated confirmation call about your appointment tomorrow at {time}.”
Confirm: “Can you still make it?”
If yes: “Great — you’re confirmed. We’ll see you then.”
If no / reschedule: “No problem. Would you like to reschedule for a different day?”
If other questions: “I’m not able to answer questions — I’m just an appointment confirmation call. Please call {fallback_number} or email {fallback_email}.”
Handling outcomes (what happens after the call)
Create a second Zap (or a webhook handler) that processes the agent’s result and updates your systems.
Outcome: Confirmed
Update Airtable:
Confirmation Status → Confirmed phone
Phone call result → Confirmed
Last confirmation call time → now
Outcome: Reschedule
Use the Calendly API to reschedule to an available slot.
Ensure Airtable updates too:
If your Calendly → Airtable sync updates the record automatically on reschedule, great.
If not, update Airtable directly with the new appointment datetime and a status like “Rescheduled”.
Update Airtable:
Phone call result → Rescheduled
Confirmation Status → (your preference: keep as Not confirmed until they accept, or mark as Rescheduled)
Outcome: Can’t make it
Update Airtable:
Phone call result → Can’t make it
Confirmation Status → (optional) Not attending / Cancelled
Outcome: Other / unclear
Update Airtable:
Phone call result → Other / unclear
Then route to a human follow-up:
Send an internal notification to your team
Or create a task for your coordinator
Add a testing mode (required)
Before you go live, add a simple “test mode” switch so every call routes to the owner’s phone number.
Two common options:
Airtable setting table with a checkbox Test mode + a Test phone number
Replace the record’s phone number with the test phone number
Still write results to Airtable so you can validate the full flow end-to-end
Optional: retry logic (later)
Once v1 is stable, add a second attempt rule:
If no answer in the morning, try again late afternoon / early evening
Cap attempts (example: 2)
Common pitfalls (and how to avoid them)
Calling people who already confirmed: enforce the Confirmation Status filter.
Calling 20 people at once: stagger calls every 5 minutes.
Calendly and Airtable drifting out of sync: decide which is the source of truth and add explicit updates when needed.
Agent getting stuck on questions: use the fallback response and route to a real phone/email.
Go-live checklist
Get help building this
Building AI appointment confirmation phone calls usually breaks at the outcome-handling step — when the agent's response doesn't map cleanly back to your Airtable fields or the Calendly reschedule doesn't stay in sync. If you've hit that wall, book a ZoomFlow session — one of our consultants can debug it with you live and ship the working version in the same call.
Make AI agents let your automation workflows decide which tools to use—no hard-coded branching. Learn structured prompting, guardrails, and multi-agent patterns.
Notion AI agents extract tasks from meeting transcripts without duplicates. Set up your databases, trigger, and upsert logic with this step-by-step guide.
A travel call center cut manual call review from 8 hrs to under 1 hr/day using AI + Zoho CRM automation. Here's how the system was built and the results.