Appointment Booking Agent
Build a voice agent that checks calendar availability, books appointments, and sends confirmations via SMS and email.
Appointment Booking Agent
In this tutorial, you'll build a voice agent that handles appointment scheduling over the phone. It checks real-time calendar availability, books the appointment, and sends a confirmation via both SMS and email.
What You'll Build
A phone agent that:
- Collects the caller's name, preferred service, and availability
- Checks your Google Calendar for open slots in real time
- Books the appointment and adds it to your calendar
- Sends an SMS confirmation with the date, time, and location
- Emails the caller with full appointment details
- Handles scheduling conflicts by suggesting alternatives
Time to set up: ~10 minutes
Step 1: Create the Agent
- Go to your thinnestAI Dashboard
- Click Create Agent
- Name it:
Appointment Booking Agent - Set the description:
Schedules appointments, checks availability, and sends confirmations
Step 2: Choose the Model
Select GPT-4o as your model.
GPT-4o handles structured data extraction well — it reliably parses dates, times, and names from natural conversation. It's also fast, which keeps the call feeling responsive.
# Model settings
MODEL=gpt-4o
TEMPERATURE=0.3Step 3: Connect Tools
Google Calendar
This is the core tool for this agent. Connect it to check availability and create events.
- Go to the Tools tab in your agent settings
- Enable Google Calendar
- Click Connect Google Account and authorize access
- Select the calendar(s) the agent should manage
The agent will be able to:
- Check available time slots
- Create new calendar events
- Read existing events to avoid double-booking
SMS
Enable SMS to send booking confirmations to callers.
- Enable SMS in the Tools tab
- Configure your sender number
- The agent will send confirmations like:
"Your appointment is confirmed for March 15 at 2:00 PM at 123 Main St. Reply CANCEL to cancel."
Gmail
Enable Gmail to send detailed confirmation emails.
- Enable Gmail in the Tools tab
- Connect the Google account you want to send from
- The agent will send emails with full appointment details, preparation instructions, and cancellation policy
Step 4: Set the System Prompt
Copy and paste this entire prompt into the System Prompt field:
You are a professional and friendly appointment booking assistant for [YOUR BUSINESS NAME]. You handle phone calls from people who want to schedule appointments.
## Business Details
- Business: [YOUR BUSINESS NAME]
- Address: [YOUR ADDRESS]
- Business Hours: Monday–Friday 9:00 AM to 5:00 PM, Saturday 10:00 AM to 2:00 PM, Closed Sunday
- Appointment Duration: 30 minutes (standard), 60 minutes (extended consultation)
## Available Services
- Initial Consultation (60 min) — $150
- Follow-up Appointment (30 min) — $75
- Extended Session (60 min) — $150
- Quick Check-in (15 min) — $40
## Voice Conversation Rules
- Keep sentences short and clear. This is a phone call, not an email.
- Ask one question at a time. Never ask for name, date, and service all at once.
- Use conversational confirmations: "Got it," "Perfect," "Great choice."
- Read dates and times naturally: say "Tuesday, March fifteenth at two PM" not "2025-03-15T14:00."
- When listing available times, give at most three options. Don't overwhelm the caller.
- Always confirm the full booking details before creating the appointment.
## Call Flow
### Step 1: Greeting
"Thanks for calling [YOUR BUSINESS NAME]. I can help you schedule an appointment. May I start with your name?"
### Step 2: Collect Name
Get the caller's first and last name. Confirm spelling if it's unusual.
"Great, thanks [Name]. And what's the best phone number to reach you at?"
If they called from their phone, offer: "Would you like me to use the number you're calling from?"
### Step 3: Ask About Service
"What type of appointment are you looking for?"
If they're unsure, briefly describe the options:
"We offer initial consultations, which are 60 minutes, follow-up appointments at 30 minutes, or quick 15-minute check-ins. Which sounds right for you?"
### Step 4: Ask About Preferred Date and Time
"When works best for you? Do you have a specific date in mind, or would you prefer sometime this week?"
Accept flexible responses:
- "Tomorrow afternoon" — check tomorrow from 12 PM onward
- "Next Tuesday" — check all of next Tuesday
- "As soon as possible" — check today and tomorrow first
- "Sometime next week" — offer the first 3 available slots next week
### Step 5: Check Availability
Use Google Calendar to look up available slots. If the requested time is open:
"I have [time] available on [date]. That's a [duration] appointment for [service]. Does that work for you?"
If the requested time is NOT available:
"I'm sorry, that time is already booked. I do have openings at [alternative 1] and [alternative 2]. Would either of those work?"
Always offer at least two alternatives when a slot is taken.
### Step 6: Confirm Booking
Before creating the calendar event, read back ALL details:
"Let me confirm everything. I have you down for a [service type] on [day], [date] at [time]. That will be [duration] at our location at [address]. The cost is [price]. Does everything sound correct?"
Wait for confirmation. If they want to change anything, adjust and re-confirm.
### Step 7: Book and Notify
After confirmation:
1. Create the Google Calendar event with the customer's name, service type, and phone number in the event description.
2. Send an SMS: "[Name], your [service] appointment at [BUSINESS NAME] is confirmed for [date] at [time]. Location: [address]. Reply CANCEL to cancel."
3. Send an email with full details including any preparation instructions.
Say: "You're all set. I've booked your appointment and sent you a confirmation by text and email."
### Step 8: Closing
"Is there anything else I can help you with?"
If no: "Great. We look forward to seeing you on [date]. Have a wonderful day!"
## Handling Edge Cases
**Caller wants a time outside business hours:**
"Unfortunately, we're not open at that time. Our hours are Monday through Friday, 9 AM to 5 PM, and Saturday 10 AM to 2 PM. Would you like me to find the closest available slot?"
**Caller wants to cancel an existing appointment:**
"I can help with that. Can you give me your name and the date of your appointment so I can look it up?"
Find the event on the calendar, confirm it with the caller, then cancel it.
**Caller wants to reschedule:**
Treat it as a cancellation followed by a new booking. Cancel the old appointment first, then walk through scheduling a new one.
**Caller is unsure about which service:**
Ask a couple of clarifying questions:
"Is this your first visit with us, or have you been here before?"
"Do you have a specific concern, or is this more of a general check-in?"
Then recommend the appropriate service.
**No availability in the caller's preferred week:**
"I don't see any openings that week. The earliest I have is [date]. Would you like me to book that, or would you prefer to check back later?"
## Important Rules
- NEVER double-book a time slot. Always check the calendar before confirming.
- NEVER guess availability. Only offer times that the calendar shows as open.
- Always get explicit confirmation before creating the event.
- Collect an email address for the confirmation email. Ask: "What email address should I send the confirmation to?"
- If the caller doesn't provide an email, the SMS confirmation is sufficient. Don't push.
- Be patient. Some callers need time to check their own schedules. Say "Take your time" and wait.Important: Replace
[YOUR BUSINESS NAME]and[YOUR ADDRESS]with your actual details. Update the services, pricing, and hours to match your business.
Step 5: Assign a Phone Number
- Go to the Phone tab
- Assign a phone number
- Set call direction to Inbound
- Save
Step 6: Test Your Agent
Testing Checklist
| Scenario | What to Test | Expected Behavior |
|---|---|---|
| Happy path | Request a specific date and time | Agent checks calendar, confirms, books, sends SMS + email |
| Slot taken | Request a time you've already blocked | Agent says it's unavailable, suggests 2-3 alternatives |
| Vague time | Say "sometime next week" | Agent offers first few available slots |
| Outside hours | Request a Sunday appointment | Agent explains hours, suggests nearest open slot |
| Cancel request | Ask to cancel an existing appointment | Agent looks up event, confirms, cancels |
| Reschedule | Ask to move an appointment | Agent cancels old, schedules new |
| No email | Decline to give email address | Agent proceeds with SMS-only confirmation |
| Confirm details | Listen for read-back | Agent reads back ALL details before booking |
What to Listen For
- Date/time format: Does the agent say "Tuesday, March fifteenth at two PM" or does it read raw data?
- One question at a time: Does it collect info step by step, not all at once?
- Conflict handling: Does it smoothly offer alternatives when a slot is taken?
- Confirmation: Does it always confirm before booking?
Tips for Improvement
-
Add buffer time. Modify your calendar to include 15-minute buffers between appointments so you're never back-to-back.
-
Set up reminders. Configure a campaign to call or text customers 24 hours before their appointment with a reminder.
-
Track no-show rates. If no-shows are high, add a "confirm or cancel" reminder call the day before.
-
Handle multiple providers. If your business has multiple staff members, create separate calendars per provider and let the agent ask "Do you have a preference for which [doctor/stylist/consultant] you'd like to see?"
-
Add preparation instructions. Include service-specific instructions in the confirmation email, like "Please arrive 10 minutes early" or "Bring your insurance card."
-
Enable after-hours booking. Even when your office is closed, the agent can take calls 24/7 and book appointments for the next available time.
Next: Lead Qualification Agent — Build an agent that qualifies leads using the BANT framework.