How to automate 24-hour appointment confirmation phone calls with AI

Build AI appointment confirmation calls that reach leads 24 hours before their visit, capture outcomes, and sync Airtable and Calendly with Zapier.

Jul 14, 2026
How to automate 24-hour appointment confirmation phone calls with AI
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.
Photo by Berkeley Communications on Unsplash
Photo by Berkeley Communications on Unsplash

What you’re building (v1)

A daily workflow that:
  • Pulls tomorrow's appointments from Airtable
  • 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

  1. Use the Calendly API to reschedule to an available slot.
  2. 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
  • Zapier environment variable / storage value
When test mode is on:
  • 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.