Voice AI7 min read

    Voice Agent for Booking Appointments — Ready-to-Deploy Template

    A complete, configurable voice AI template for automating appointment scheduling via phone. Covers system prompt, calendar integration, confirmation flow, and edge cases.

    H
    Hestur AI
    hestur.co
    2–3 days
    Setup Time
    with API access ready
    24/7
    Calls Handled
    no hold times, no missed calls
    95%+
    Booking Accuracy
    with structured calendar data
    $0.40–0.80
    Cost/Call
    at avg 3-min booking call

    What This Template Covers

    • Ready-to-use Vapi assistant configuration (JSON)
    • System prompt template — fill in your business details
    • Calendar tool call spec (Google Calendar / Acuity / Jane)
    • Confirmation + reminder SMS workflow
    • Cancellation and reschedule handling
    • Edge case handling: no availability, special requests, new vs existing client

    System Prompt Template

    // Replace [BRACKETS] with your business information

    You are [AGENT_NAME], the booking assistant for [BUSINESS_NAME].

    Your job is to help callers schedule, reschedule, or cancel appointments.

    // Services and availability

    Services offered: [LIST_SERVICES]

    Hours: [DAYS_AND_HOURS]

    Location: [ADDRESS]

    // Behaviour rules

    - Keep responses under 2 sentences.

    - Always confirm: service, date, time, and caller name before booking.

    - If no slots available in preferred window, offer next 3 available.

    - If caller has a medical/complex question, transfer to staff immediately.

    // Escalation

    Transfer trigger: "urgent", "emergency", "complaint", "not happy", 3rd attempt fails.

    Booking Conversation Flow

    1
    Greeting (3 seconds)
    "Thank you for calling [Business Name]. I'm [Name] and I can help you book an appointment. Are you a new or returning patient/client?"
    2
    Identify the service
    "What type of appointment are you looking for?" → Match to service list → Confirm duration.
    3
    Offer availability
    Call calendar API with `getAvailability(service, preferredDate)` → Return 3 nearest slots → "I have [Day] at [Time], [Day] at [Time], or [Day] at [Time] — which works best?"
    4
    Capture details
    Name (first + last), callback number (confirm it), any notes for the practitioner.
    5
    Confirm and book
    Repeat back: service, time, date, name. "Can I confirm — [Service] on [Date] at [Time] for [Name]?" → On YES → call `createAppointment()` → Send confirmation SMS.
    6
    Close
    "You're all set. You'll get a text confirmation shortly. Is there anything else I can help with?"

    Calendar Tool Call Spec

    ToolInput ParametersReturns
    getAvailabilityservice: string, date: ISO string, range: number (days)Array of available slots [{start, end, staffId}]
    createAppointmentservice, start, clientName, clientPhone, notesappointmentId, confirmationCode
    cancelAppointmentappointmentId, reasonsuccess: boolean, nextAvailability
    rescheduleAppointmentappointmentId, newStartnewAppointmentId, confirmationCode

    Post-Call Automation

    • Vapi call_ended webhook → extract: appointment ID, client name, phone, booking status
    • If booked: send SMS confirmation "Your [service] is confirmed for [date] at [time]. Reply CANCEL to cancel."
    • 24h before: reminder SMS "Your appointment is tomorrow at [time]. Reply CONFIRM or CANCEL."
    • 2h before: final reminder SMS with address/parking info
    • If no-show: send reschedule link within 30 minutes
    • Push appointment data to CRM contact record (new contact if first booking)

    Edge Cases to Configure

    Edge CaseAgent Behaviour
    No availability in next 7 daysOffer waitlist — "Can I add you to the waitlist? I'll text you as soon as a slot opens."
    Caller wants specific practitionerFilter getAvailability by staffId — if no slots, offer next available
    Caller unsure which service they needOffer brief description of each, transfer if complex medical question
    Caller wants to reschedule same-dayCheck cancellation policy, proceed if allowed, flag same-day in notes
    Non-English caller detectedIf multilingual configured: switch language. If not: transfer immediately.

    Deployment Checklist

    • Replace all [BRACKETS] in system prompt with business information
    • Test getAvailability with a real date — confirm it returns expected slots
    • Test createAppointment — confirm it appears in the calendar
    • Test SMS confirmation — confirm it sends within 30 seconds of booking
    • Make 10 test calls covering: normal booking, no availability, cancellation, reschedule, transfer trigger
    • Shadow mode for 3 days before going live
    Don't skip the cancellation policy step. Build in: cancellation window (e.g., 24h notice), whether late cancellation triggers a fee, and what the agent says when a caller tries to cancel within the no-cancel window. Handle this in the prompt explicitly — agents that don't have rules here will apologise and still cancel the appointment.
    Want this implemented for your business?
    We scope most projects in 48 hours. Fixed price, 2–4 weeks to deploy.
    Book a Discovery Call