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

  1. Go to your thinnestAI Dashboard
  2. Click Create Agent
  3. Name it: Appointment Booking Agent
  4. 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.3

Step 3: Connect Tools

Google Calendar

This is the core tool for this agent. Connect it to check availability and create events.

  1. Go to the Tools tab in your agent settings
  2. Enable Google Calendar
  3. Click Connect Google Account and authorize access
  4. 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.

  1. Enable SMS in the Tools tab
  2. Configure your sender number
  3. 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.

  1. Enable Gmail in the Tools tab
  2. Connect the Google account you want to send from
  3. 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

  1. Go to the Phone tab
  2. Assign a phone number
  3. Set call direction to Inbound
  4. Save

Step 6: Test Your Agent

Testing Checklist

ScenarioWhat to TestExpected Behavior
Happy pathRequest a specific date and timeAgent checks calendar, confirms, books, sends SMS + email
Slot takenRequest a time you've already blockedAgent says it's unavailable, suggests 2-3 alternatives
Vague timeSay "sometime next week"Agent offers first few available slots
Outside hoursRequest a Sunday appointmentAgent explains hours, suggests nearest open slot
Cancel requestAsk to cancel an existing appointmentAgent looks up event, confirms, cancels
RescheduleAsk to move an appointmentAgent cancels old, schedules new
No emailDecline to give email addressAgent proceeds with SMS-only confirmation
Confirm detailsListen for read-backAgent 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

  1. Add buffer time. Modify your calendar to include 15-minute buffers between appointments so you're never back-to-back.

  2. Set up reminders. Configure a campaign to call or text customers 24 hours before their appointment with a reminder.

  3. Track no-show rates. If no-shows are high, add a "confirm or cancel" reminder call the day before.

  4. 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?"

  5. Add preparation instructions. Include service-specific instructions in the confirmation email, like "Please arrive 10 minutes early" or "Bring your insurance card."

  6. 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.

On this page