> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vorel.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Booking

> How the agent checks availability, offers slots, and confirms appointments without inventing one.

Booking is the highest-stakes thing the agent does. A wrong answer about opening hours is an
annoyance; a confirmed appointment that does not exist is a customer standing outside your door.

## The rule that matters

**The agent must call the availability tool before it can offer a time.** This is enforced on the
booking path rather than requested in the prompt, so the agent cannot skip it under pressure from a
customer asking "just book me in for tomorrow morning".

Equally, the agent cannot claim a booking was made unless the booking tool actually committed one. A
reply that asserts a confirmed appointment with no successful tool call behind it is caught before
the customer sees it.

## The flow

<Steps>
  <Step title="Understand what they want">
    Service or offering, and any constraints (a particular person, a branch, a time of day).
  </Step>

  <Step title="Check availability">
    Real availability from your calendar, filtered by your working hours, holidays and the rules
    your vertical pack sets.
  </Step>

  <Step title="Offer real slots">
    The agent offers times that are actually free. If nothing fits, it says so and offers the nearest
    alternatives rather than inventing a slot.
  </Step>

  <Step title="Confirm the details">
    Name, contact detail, and the specifics your business needs. Email addresses are read back on
    voice before use.
  </Step>

  <Step title="Book and confirm">
    The appointment is written to your calendar, the customer gets a confirmation, and the record is
    written to your CRM.
  </Step>
</Steps>

## Guards

**Day-word guard.** "Next Tuesday" is ambiguous, and getting it wrong books the right time in the
wrong week. Day words are resolved against your timezone and the current date, and the agent
confirms the resolved date rather than repeating the phrase back.

**Identity guard.** Changing or cancelling an existing appointment requires the caller to match the
appointment. The agent will not move someone else's booking because a caller knows their name.

**Slot-offered guard.** A customer can only accept a slot that was actually offered. This stops a
conversation drifting into a confirmed time that was never on the table.

**Timezone.** Everything is anchored to your workspace timezone, not the caller's, unless you
configure otherwise.

## Calendars

Bookings write to the calendar you connect. See [Calendars](/integrations/calendars) for what is
supported and how to connect it.

If you have no calendar connected, the agent still captures the request and creates a lead, and your
team completes the booking. It says the appointment is requested rather than confirmed.

## Changes and cancellations

Reschedules and cancellations run through the same tools and the same identity guard. Both write
back to your calendar and your CRM, and both emit events your [triggers](/automation/triggers) and
[webhooks](/integrations/webhooks) can act on.

## Reminders

Appointment reminders can be sent ahead of the booking on a delay you choose. On WhatsApp, a reminder
sent outside the 24-hour window needs an approved template, and if none is registered the reminder
is skipped rather than failing silently. See [WhatsApp](/channels/whatsapp).

## Events

Booking emits `booking.created`, and the appointment envelope carries the scheduled start, which is
what makes "remind them two hours before" a rule rather than an integration.
