Docs/Playbooks

AI receptionist that books

On this page

The most common reason to buy voice AI: the phone rings while everyone is busy, and every missed call is a customer who books somewhere else. This builds a receptionist that answers all of them and books into your real calendar.

Before you start
  • A Google Calendar or Outlook calendar that reflects real availability.
  • Your opening hours, prices and address written down.
  • A number your team answers, for callers who need a human.
  • About an hour, including testing.
What you will end up with

Every call is answered, at any hour. The agent knows your prices and hours, checks genuine free/busy before offering a time, books the appointment with the caller invited, texts them the address, and posts to Slack so the team sees it. Anyone who needs a person gets transferred.

The shape of it

Customer calls
Your number, any hour
Agent answers
Knows hours, prices, policies
Checks the calendar
Real free/busy
if booking
Books it
Caller invited, address texted
confirms
Team notified
Slack, in real time

1. Build the agent

Start from the Appointment Scheduling template in Setup Guide, then replace the generic content with yours. The structure below is what a good receptionist prompt looks like once finished.

Instructions
## Who you are
You are Amara, the receptionist for Brightsmile Dental in Westlands, Nairobi.
Today is {{date}}.

## What this call is for
Book, move or cancel appointments, and answer questions about price, hours
and location. If you cannot help, take a message.

## How to speak
- One or two sentences per reply. Ask one question at a time, then wait.
- Warm and efficient. A busy front desk, not a call centre.
- If you are interrupted, stop talking and listen.

## What you know
- Open Mon-Fri 8am-6pm, Sat 9am-1pm. Closed Sunday.
- Cleaning KSh 3,500. Consultation KSh 2,000. Whitening from KSh 15,000.
- 3rd floor, Delta Towers, Westlands. Free basement parking.
- We do NOT do orthodontics - we refer to Dr Kimani.
- For anything else, search the knowledge base before answering.

## Booking an appointment
1. Ask what they need and roughly when suits them.
2. Use check_availability. NEVER offer a time you have not checked.
3. Offer two options: "I have Thursday at 2, or Friday morning - which works?"
4. Take their full name and phone number.
5. Use create_event to book it.
6. Read the day and time back to them before ending the call.
7. Use send_message to text them the address.

## Rules you never break
- Never quote a price that is not listed above or in the knowledge base.
- Never give clinical or dental advice. A dentist advises at the appointment.
- If someone is in pain or distressed, transfer to the clinic immediately.
- If a lookup or booking fails, do not guess - take their number and say the
  clinic will confirm within the hour.
- If they ask for a person, transfer the call.

## When you are unsure
"I don't want to give you the wrong information - let me have someone from
the clinic call you back. What's the best number?"
Three lines that do most of the work

Today is {{date}} — without it, “next Tuesday” is a guess. NEVER offer a time you have not checked — without it, the agent invents slots. Offer two options — open-ended “when suits you?” produces rambling calls; two concrete choices close quickly.

The greeting

Short, identifies you, invites them to speak. Anything longer loses people:

Greeting
Brightsmile Dental, this is Amara - how can I help?

If your jurisdiction requires disclosing that this is an AI, put it here: “…this is Amara, Brightsmile’s virtual assistant — how can I help?” It also measurably reduces people hanging up when they work it out mid-call.


2. Give it your facts

The five things you are asked constantly go in the instructions, as above. Everything else goes in a Knowledge Base: the full price list, treatment explanations, insurance and payment policy, parking instructions, your FAQ page.

Create it at Knowledge BaseNew, upload the documents or paste your website URLs, then attach it to the agent. The instructions above already tell the agent to search it.

Check your PDFs are readable

Open the file and try to select a sentence with your cursor. If you cannot, it is a scan — there is no text in it and the agent will find nothing. Re-export it from the original document.


3. Connect the calendar

This is what separates booking from message-taking.

  1. Connect Google Calendar or Outlook

    IntegrationsGoogle CalendarConnect. Sign in as the account that owns the booking calendar — ideally a shared clinic account rather than a personal one, so it survives staff changes.

  2. Attach it to the agent

    On the integration panel, select this agent. Connecting alone does not grant access — see Giving an agent access.

  3. Make the calendar honest

    The agent believes what the calendar says. If lunch, admin time and holidays are not blocked out, it will book over them. Half an hour tidying the calendar prevents most complaints about this setup.

ActionWhat the agent does with it
check_availabilityFinds genuinely free slots before offering anything.
list_eventsReads what is already booked — “when is my appointment?”
create_eventBooks it, and invites the caller if you have their email.

4. Add a way out

Every production agent needs an escape route. Create a Transfer tool pointing at a number that is genuinely staffed, attach it, and make sure the instructions above include the transfer triggers — asked for a person, in pain, upset, or two failed attempts.

Add a Send Message tool as well. Texting the address after booking is a small thing that noticeably reduces no-shows and “where are you again?” calls.

Decide what happens after hours

At 11pm nobody will answer a transfer. Add a rule: “Outside opening hours, do not transfer. Take a message and say the clinic will call back when it opens.” Otherwise the agent will cheerfully put a caller through to a ringing, empty room.


5. Tell the team

Connect Slack and attach it, then add one line to the instructions:

Add to instructions
After booking an appointment, use execute_slack with action send_message to
post to the #front-desk channel: the caller's name, the day and time booked,
and what they are coming in for.

Note the full name — execute_slack. Integration actions are always execute_<app>, which keeps Slack’s send_message distinct from the SMS tool of the same name.

This is the cheapest way to make the whole thing visible. Your team watches bookings appear in real time without ever opening Vociply, which does more for internal buy-in than any dashboard.


6. Put it on your line

Two options, and the second is what most established businesses want:

ApproachWhat callers dialBest for
Attach a new Vociply numberA new number you publishNew businesses, a dedicated bookings line, or testing.
Forward your existing numberThe number they already knowAnyone with an established line. Nothing on your side changes.

For forwarding, the strongest starting configuration is forward on no answer: your team gets first refusal, and the agent catches everything they miss. Set it up at your current provider — full detail in Phone numbers.


7. Test like a customer

Run these seven calls before you point real traffic at it. Each one catches a different failure:

Say thisWhat you are checking
“I’d like to book a cleaning.”The happy path. Does it check availability and book?
“How much is whitening?”Knowledge base retrieval, and that it does not invent a figure.
“Do you do braces?”That it correctly says no and refers on.
“Can I come at 7pm on Sunday?”That it knows you are closed and does not book it.
“I need to speak to someone.”That the transfer fires promptly.
“My tooth is really hurting.”That it escalates rather than booking you in three weeks.
Interrupt it mid-sentence.Turn-taking. If it talks over you, adjust the timers.

Then check the other side: is the appointment actually in the calendar, at the right time, with the right person? An agent saying it booked something is not evidence that it did.


What to fix first

ComplaintCauseFix
It booked a time we were closedCalendar does not reflect realityBlock your closed hours in the calendar itself. It is the source of truth.
It quoted the wrong priceStale knowledge base, or the price only exists in the promptUpdate the document, remove the old one, and re-test the exact question.
It talks over peopleWait timers too aggressiveRaise wait to 0.7s and no-punctuation to 1.8s — see Voice & conversation.
It takes messages instead of bookingCalendar not attached, or no instruction to bookCheck the integration is attached to this agent, not just connected.
Callers hang up immediatelyThe greetingShorter. Name the business, offer to help, stop.
It repeats questionsNever told it already has the details“You already have their name and number — do not ask again.”

Questions

Can it handle two callers at once?

Yes — an agent is not a phone line. Ten people can be talking to it simultaneously, each in their own conversation. This is usually the moment people realise it replaces a queue, not a person.

Can it cancel or move an existing appointment?

It can read the calendar to find the booking. Rescheduling reliably usually means combining list_events with a booking of the new slot, and telling the agent explicitly how you want changes handled. Start with “take the request and transfer” and add automation once the booking path is solid.

What if two people book the same slot at the same second?

Availability is checked at the moment of booking, so genuine collisions are rare. For high volume, keep a small buffer between appointments rather than booking back to back.

Should I tell callers it is an AI?

Some places require it. Everywhere else, it still helps — people who are told adjust their expectations and stay on the line. A single word in the greeting is enough.

Still stuck? support@vociply.com