Back to Help Home
Last updated: 2025-10-05Location: Appointments

Calendars and Appointments

Overview

Calendars in brayv.ai are the foundation of appointment scheduling. They define who can be booked, when they're available, and how appointments are configured. Calendars work together with AI agents to automatically book appointments with your contacts, and integrate with external calendars (Google, Outlook) and CRMs (ServiceTitan, HouseCall Pro).

Important: You must create at least one calendar before you can create an appointment journey or enable AI booking.

What Calendars Do

Calendars in brayv.ai:

  • Define availability for your team members for a given type of appointments
  • Enable AI booking for automated appointment scheduling
  • Sync with external calendars (Google, Outlook) at the user level
  • Integrate with CRMs (ServiceTitan, HouseCall Pro) at the calendar level
  • Provide booking widgets for your website
  • Send notifications and reminders automatically
  • Track appointments and their statuses
  • Trigger journey stage transitions when appointments are booked/completed

Creating a Calendar

Step 1: Go to Appointments & Calendars page

Step 2: Click on the "Calendar Settings" tab (two big tabs at the top "Appointments" on the left, the default tab, and "Calendar Settings" on the right)

Step 3: Click "Create Calendar" button

Step 4: Configure basic settings (see sections below)

Step 5: Click "Create"

Step 6: After creation, you can configure advanced settings (External CRMs, Notifications, Widget)

Basic Calendar Settings

Calendar Identity

Name (Required)

  • Descriptive name for the calendar
  • Examples: "Main Calendar", "HVAC Team", "John Smith - Plumbing", "Consultation Calls"
  • Tip: Name calendars by team, service type, or individual if you have multiple

Description

  • Internal notes about this calendar's purpose
  • Example: "For all HVAC consultation appointments"

Appointment Duration Settings

Default Appointment Duration

  • Length of appointments in minutes
  • Default: 60 minutes
  • Common values: 15, 30, 60, 90, 120 minutes

Appointment Interval

  • Time slots offered for booking (in minutes)
  • Default: 60 minutes
  • Common values: 30, 60 minutes
  • Example: 30-minute interval = slots at 9:00, 9:30, 10:00, 10:30...

Appointment Buffer

  • Ensures at least selected number of minutes clear before and after a new appointment being set
  • Default: 0 minutes
  • Use for: Travel time, preparation, debrief from previous appointment
  • How it works: 30 minute buffer: When determining if a time is available for booking, the calendar checks the 30 minutes leading up to the potential new appointment and following it for a particular user. If nothing overlaps, appointment slot is available. If something overlaps (an appointment from any calendar in brayv or a blocked slot) with the buffer, appointment slot is unavailable.
  • Example: Calendar has 30 minute buffer and is determining whether or not to show a 1:00 PM time as available. User being booked with has an appointment ending at 12:45 → that falls within 30 minute buffer zone → Calendar determines 1:00 PM is UNavailable.

Buffers in brayv ai lightning are calculated at the time of booking. This is different than some calendar solutions like calendly that add real blocks in the background everytime an appointment is set. Our approach gives you flexibility - allowing you to change your buffer times at any point in time and immediately affect all future bookings regardless of what was used for past bookings, and allowing you to have different buffer times in different calendars that may include the same user. This gives you maximum flexibility, but requires care when configuring calendars

  • Example: You may have a calendar for in-person appointments that need 60 minute buffers, and another calendar with the same users for phone call appointments that need 15 minute buffers. In this scenario, each calendar determines availability for potential appointments based on its own buffer settings and does NOT consider buffers from other calendars.
  • How it works:
    • Setup: Sarah is a user on two calendars. The In-Person calendar has a 60 minute buffer. The Phone Call calendar has a 15 minute buffer. Sarah has an existing in-person appointment ending at 1:00 PM.
    • Booking on the Phone Call calendar: The Phone Call calendar uses its own 15 minute buffer. It checks 15 minutes after Sarah's 1:00 PM appointment and finds 1:15 PM is clear. 1:15 PM shows as available on the Phone Call calendar. The 60 minute buffer from the In-Person calendar does not factor in — only the Phone Call calendar's 15 minute buffer matters.
    • Booking on the In-Person calendar: The In-Person calendar uses its own 60 minute buffer. It checks 60 minutes after Sarah's 1:00 PM appointment. 1:15 PM, 1:30 PM, and 1:45 PM all fall within the 60 minute buffer zone. 2:00 PM is the earliest available slot on the In-Person calendar.
    • Key takeaway: The same user, the same 1:00 PM appointment, but two different results depending on which calendar is being booked — because each calendar only enforces its own buffer setting.

Location Settings

Location Type Choose default location type for appointments:

Virtual

  • Online meetings
  • Video calls (Zoom, Teams, etc.)
  • Enter meeting link in location details

In Person

  • On-site appointments
  • Service calls
  • If at the contact's address (eg in-home estimates) use this dynamic value {contact_address} in location details
  • If at your store/business/showroom enter specific address or use {account_address} in location details

Phone

  • Phone call appointments
  • Enter something useful, like "ABC Company will call you" in location details

Custom

  • Any other location type
  • Enter custom details

Location Details

  • Specific address for in-person (use this dynamic value {contact_address} for appointments at the customer's address)
  • Meeting link for virtual
  • Phone number for phone calls
  • Any custom instructions

Note: Location details are set manually booking appointments yourself. AI and calendar widgets (customer facing widgets for your site) will create with the default details (and dynamically insert contact's address if configured).

Team Members

Select Users

  • Choose which team members can be booked in this calendar
  • Select one or multiple users
  • Required: At least one user must be selected

User Selection Strategy When multiple users are in the calendar, choose how the calendar assigns appointments:

Maximize Availability

  • Customer has option to book into any available slot (regardless of which user is available)
  • When booked calendar will assign appointment to whichever user is available at that time. If multiple, will assign to user with the least appointments in this calendar in this month.
  • Default option

Optimize Distribution

  • Strict round robin (keeps track of appointment totals for the month per calendar user, assigns to user with least number of appointments in this calendar)

  • Balances workload across team

  • Good for ensuring fair distribution

  • both selection strategies can be overriden by the AI if agent has booking mode = AI Calendar selection, Scope = Calendar & User, and has rules for why to book with a specific user in a specific scenario (eg, "contact's zip code is 11706, book with John in Calendar A", will always only do that regardless of how many appointments john has [as long as John is in Calendar A])

Availability Rules

Set when appointments can be booked in this calendar.

For Each Day of the Week:

Enabled/Disabled

  • Toggle to enable availability for that day
  • Disabled days cannot have appointments booked

Time Windows

  • Set start and end times for availability
  • Example: 9:00 AM to 5:00 PM

Multiple Time Windows Per Day

  • Click "Add Time Window" for split availability
  • Example: 9:00 AM - 12:00 PM and 1:00 PM - 5:00 PM (lunch break)
  • Great for blocking off regular breaks or lunch

Availability Example:

  • Monday-Friday: 9:00 AM - 5:00 PM (enabled)
  • Saturday: 9:00 AM - 1:00 PM (enabled)
  • Sunday: Disabled

Important: Users in the calendar can override these times with their own personal availability (configured at Settings > Myself > Availability). E.g. If user availability is set to none for Friday, that user cannot be booked on friday, even if the calendar is open 9-5 on friday. Other users would be booked, or no openings would show up for friday if no other users are in the calendar.

Booking Constraints

Minimum Notice

  • Minimum advance notice required for bookings
  • Example: 60 minutes means appointments must be booked at least 1 hour in advance
  • Prevents same-day/immediate bookings if desired
  • Select unit: minutes, hours, or days
  • Strongly recommended when booking in-person appointments

Maximum Range

  • How far in advance appointments can be booked
  • Example: 30 days means customers can only book up to 30 days out
  • Prevents your calendar from filling too far in advance
  • Default when enabled: 30 days

Enable/Disable Constraints:

  • Toggle constraints on/off
  • When disabled, no restrictions apply

Default Appointment Details

Default Appointment Title

  • Template for appointment titles
  • Can use variables: {contact_name}, {user_name} and more.
  • Example: "ABC Company onsite estimate with {contact_name}"
  • Appointment title set manually when booking through the brayv.ai web application. AI bookings, and bookings through calendar widget will use the default title.

Default Appointment Notes

  • Template for appointment notes/description
  • Can include reschedule and cancel links
  • Default includes:
To reschedule your appointment please tap here: {reschedule_link}

To cancel your appointment, please tap here: {cancel_link}
  • Useful to make rescheduling / cancelling easy when your customers need it.

Contact and Appointment Owner (team member who the appointment is with) variables are also available in Title, Notes, and Location details

Tip press the { key on your keyboard when editing one of these fields to see all available variables.

worth noting: title, location details, and notes are all contact-facing. Your contact will see these either in a confirmation message or calendar event. If you want things for only your team to see, add fields to the 'Internal Summary' which is only included in team facing notifications, not confirmations to the contact or the public calendar event.

Advanced Calendar Settings

After creating a calendar, access advanced settings by clicking the calendar from the Calendar Settings tab.

Tabs Available:

  • General - Basic settings (same as creation)
  • Notifications - Appointment confirmations and reminders
  • Widget - Embeddable booking widget for your website
  • External CRM - ServiceTitan and HouseCall Pro integration

Personal Calendar Integration (User Level)

Team members can connect their personal Google or Outlook calendars to sync appointments and availability.

Connecting Google Calendar

Step 1: Go to Settings > Myself (your user profile)

Step 2: Click "Connect Google Calendar"

Step 3: Log in to Google and grant permissions

Step 4: Select your Google Calendar

What Happens:

  • Appointments booked with you (in any brayv.ai calendar) sync to your Google Calendar
  • Events marked BUSY in your Google Calendar create blocked slots in brayv.ai
  • Personal events automatically block your availability
  • Two-way sync keeps everything current

Quick Video Guide on Where to Click to Connect Your Outlook (or Google) Calendar

Connecting Outlook Calendar

Step 1: Go to Settings > Myself

Step 2: Click "Connect Outlook Calendar"

Step 3: Log in to Microsoft and grant permissions

Step 4: Select your Outlook Calendar

What Happens:

  • Same behavior as Google Calendar
  • Appointments sync both directions
  • BUSY events block your availability in brayv.ai

Important Notes

Integration Level:

  • Google/Outlook integration is at the USER level, not calendar level
  • Each team member connects their own personal calendar (we recommend they use the one associated with your business if you have a branded domain: eg. [email protected]. This is better because your customers WILL get calendar invites from whatever calendar your user connects and when they book with your company, an invite from "[email protected]" makes sense/feels expected/looks better than an invite from "[email protected]")
  • Appointments sync based on who the appointment is booked with

Blocked Slots:

  • Events in your Google/Outlook calendar marked as BUSY create blocked slots
  • Blocked slots prevent double-booking
  • Useful for blocking personal appointments, PTO, meetings, etc.

Sync Direction:

  • brayv.ai → Google/Outlook: All appointments booked with you sync to your calendar
  • Google/Outlook → brayv.ai: Only BUSY events come back as blocked slots (full day events created in Google/Outlook will default to "FREE" you must manually change the availability to "BUSY" before saving in Google/Outlook in order for brayv to recognize that as blocked time)

External CRM Integration (Calendar Level)

Connect calendars to ServiceTitan or HouseCall Pro to sync appointments with your field service management system.

Prerequisites

For ServiceTitan:

  1. Account must be connected to ServiceTitan (Settings > Integrations > ServiceTitan)
  2. brayv.ai users must be mapped to ServiceTitan technicians

For HouseCall Pro:

  1. Account must be connected to HouseCall Pro (Settings > Integrations > HouseCall Pro)
  2. brayv.ai users must be mapped to HouseCall Pro employees

Enabling CRM Sync

Step 1: Open calendar settings (click calendar from Calendar Settings tab)

Step 2: Go to "External CRM" tab

Step 3: Toggle on ServiceTitan or HouseCall Pro

Step 4: Configure additional settings (for ServiceTitan) Job+appointment creation will fail in Service Titan if these additional settings are not configured.

Step 5: Save changes

How CRM Sync Works

brayv.ai → External CRM: Appointments created in brayv.ai push to the external CRM only if:

  • CRM sync is toggled on for that specific calendar
  • The user the appointment is booked with is mapped to a technician/employee in the integration settings

External CRM → brayv.ai:

  • Appointments from external CRM (that didn't originate in brayv.ai) sync back as blocked slots
  • Only for mapped users
  • Prevents double-booking
  • Unmapped external users don't create blocked slots

ServiceTitan Advanced Configuration

When syncing to ServiceTitan, you can configure:

  • You can set defaults and create additional conditional rules (ie, if {contact.service_description} in brayv.ai is "Electrical" use Business Unit 2308)

Job Type

  • Default job type for appointments
  • Required for ServiceTitan integration

Business Unit

  • Default business unit
  • Required

Tags

  • Automatic tags to apply in ServiceTitan
  • Helps categorize appointments
  • Optional (service titan tags are created in service titan, you can only select existing tags, to create a new one, please do so in servicetitan and then select it in bravy.ai)

Campaign

  • Marketing campaign attribution in ServiceTitan
  • Required

Cancellation Reason

  • Default reason when appointments are cancelled
  • Maintains clean cancellation tracking in ServiceTitan
  • Required

Internal Summary Fields

  • Select which contact fields to include in job notes
  • Example: Include contact's service_description, street_address, etc.
  • Sent to ServiceTitan with appointment and included in Job "notes" area in service titan
  • Optional, but recommended, found in Notifications tab

Appointment Notifications

Configure automatic confirmations and reminders for appointments.

Access: Calendar settings > Notifications tab

Confirmation Notifications

Confirmation Enabled

  • Toggle to send confirmation messages when appointments are booked
  • Sent immediately after booking
  • Recommended

Contact Confirmation:

  • SMS confirmation to the contact
  • Includes appointment details, time, location
  • Includes reschedule/cancel links

Custom Message (Optional):

  • Add additional text to the confirmation message to contact
  • Example: "Your appointment will be with {appointment_owner.first_name}. If you'd like to contact them directly, you can call them at {appointment_owner.phone}"

Appointment Owner Bios

  • Users can set (or admins can set for them) 'bios' that can be included in appointment confirmation messages. Simply insert {appointment_owner.bio} in the custom message for the confirmation. Press the { key on your keyboard to pull up available variables and search for 'bio' or just scroll to find it.
  • Additionally users can upload (or admins can for them) bio images that can be included in confirmation messages as well. To include these in the confirmation messages, simply check the box for Include appointment owner bio image in contact SMS confirmations
  • To set bios and bio images, any user can go to Settings > Myself. Additionally admins can configure bios and bio images by going to Settings > Team > and selecting a particular user to edit.

Team Member Confirmations:

  • Select team members who should receive confirmation (in addition to the team member who the appointment is booked with. The appointment owner will get confirmations by default as long as confirmations are on)
  • Notified when appointments are booked
  • Includes contact info and appointment details and "Internal summary"

Contact Reminders

Send reminders to contacts before their appointments.

To Add a Reminder:

  1. Click "Add Contact Reminder"
  2. Select timing (15 minutes, 1 hour, 1 day before, etc.)
  3. Enable SMS and/or Email
  4. Customize message template

Message Template Variables:

  • {contact.first_name} - Contact's name
  • {account.name} - Your business name
  • {appointment.datetime} - Appointment date and time
  • {appointment.location_details} - Location info
  • {appointment.reschedule_link} - Reschedule link
  • {appointment.cancel_link} - Cancellation link

You can press the { on your keyboard when editing to pull up all available variables

Default Template:

Reminder: You have an appointment with {account.name}

Time: {appointment.datetime}
Location: {appointment.location_details}

To reschedule, tap here: {appointment.reschedule_link}

Multiple Reminders:

  • Add multiple reminders (e.g., 1 day before + 1 hour before)
  • Each can have different messages
  • Each can use different channels (SMS, Email, or both)

Team Member Reminders

Send reminders to team members about their appointments.

Configuration:

  • Same as contact reminders
  • Select timing
  • Customize message
  • Includes contact details and internal notes

Additional Notification Settings

Use Contact Timezone

  • When enabled, reminders are sent based on contact's timezone
  • When disabled, uses account timezone
  • Recommended only if you service multiple timezones regularly

Duration is Arrival Window

  • When enabled, appointment "time" is described as a window
  • Example: 2-hour appointment becomes "we'll arrive between 2:00 PM - 4:00 PM"
  • Useful for service businesses with flexible arrival times

Cancellation Notifications

  • Toggle to notify team when appointments are cancelled (on by default)
  • Helps team stay informed about schedule changes

Calendar Widgets

Embeddable booking widgets for your website that allow visitors to self-schedule appointments. Also used for cancellation and reschedule links.

Access: Calendar settings > Widget tab

Widget Configuration

Name

  • Set a friendly short name. This will show to your customers as the name of the calendar when they are viewing it. Example: "Initial Design Consutation"

Description

  • Optional. This will also appear to your customers. Example: "Quick 15 minute phone call to get more insight on your project options"

Enable Widget

  • Toggle to enable the booking widget for this calendar

Widget Fields Configure which information to collect:

Standard Fields:

  • First Name (required)
  • Last Name
  • Email (required)
  • Phone (required)
  • Business Name
  • Street Address, City, State, Zip Code, etc.

Custom Fields:

  • Add any custom fields you've created

Field Settings: For each field:

  • Label (text shown to user)
  • Placeholder (example text)
  • Required (must be filled out)

Reorder Fields:

  • Drag fields to change order
  • First Name and Phone are locked as required

Header Text

  • Text shown at top of widget
  • Example: "Schedule Your Appointment", "Book a Consultation"

Opt-In Settings

  • Enable SMS opt-in checkbox
  • Make it required (highly recommended)
  • Customize opt-in text
  • Default text follows compliance requirements

Styling

  • Primary color (buttons, headers)
  • Secondary color (accents)
  • Matches your brand

Embedding the Widget

Embed Code: Copy the provided iframe code and paste on your website:

This is just an example, do not copy this:

<iframe 
  src="[WIDGET_EMBED_URL]"
  width="100%"
  height="600"
  frameborder="0"
  style="border: none; max-width: 600px;">
</iframe>

Direct Link:

  • Share the direct URL as a standalone booking page
  • Use in emails, social media, QR codes

Widget Behavior:

  1. Visitor selects date and time from available slots
  2. Fills out contact information
  3. Confirms opt-in (if enabled)
  4. Submits booking
  5. Appointment is created in brayv.ai
  6. Contact receives confirmation
  7. Appointment syncs to team member's Google/Outlook calendar
  8. Journey trigger fires (if calendar is used in a journey)

Viewing and Managing Appointments

Filter by Calendar

Access: Appointments page

What You See:

  • All appointments across selected calendar(s)
  • Week-by-week visualization
  • Blocked slots from Google/Outlook do NOT show up

Actions:

  • Click appointment to view details
  • Create new appointments manually
  • Create blocked slots
  • Navigate between weeks

Filter by User

What You See:

  • All appointments and blocked slots across selected user(s)
  • Week-by-week visualization
  • Blocked slots from Google/Outlook do show up

Actions:

  • Click appointment to view details
  • Create new appointments manually
  • Create blocked slots
  • Navigate between weeks

Creating Appointments Manually

Step 1: Click "Book Appointment" button

Step 2: Select:

  • Calendar - Which calendar to book in
  • User - Which team member (from users in that calendar)
  • Contact - Who the appointment is with (search by name)
  • Date & Time - When (shows available slots based on calendar and user availability)

Step 3: Fill in:

  • Title - Appointment title
  • Notes - Additional information
  • Location Type - Virtual, In Person, Phone, Custom
  • Location Details - Address, link, phone number, etc.

Step 4: Click "Create Appointment"

What Happens:

  • Appointment is created
  • Contact becomes the owner of the contact (if not already owned)
  • Confirmation sent to contact (if enabled)
  • Syncs to team member's Google/Outlook calendar
  • Syncs to external CRM (if configured and user is mapped)
  • Journey trigger fires (if this calendar triggers a journey stage)

Editing Appointments

From Week View:

  1. Click on the appointment
  2. Edit dialog opens
  3. Modify fields as needed
  4. Save changes

From Contact Page:

  1. View contact's appointments card
  2. Click on appointment
  3. Edit as needed

From Conversation Page:

  1. View contact's appointments card
  2. Click on appointment
  3. Edit as needed

What You Can Edit:

  • Date and time
  • Assigned user
  • Title and notes
  • Location type and details
  • Status (scheduled, completed, cancelled, no-show)

Appointment Statuses

Scheduled

  • Default status for new appointments
  • Appointment is confirmed and upcoming

Completed

  • Appointment has occurred and service was provided
  • Triggers "appointment completed" journey transition (if configured)

Cancelled

  • Appointment was cancelled
  • Can include cancellation reason
  • Triggers "appointment cancelled" journey transition (if configured)
  • Team members are notified (if cancellation notifications enabled)

No-Show

  • Contact didn't show up for appointment
  • Triggers "appointment no-show" journey transition (if configured)

Rescheduling and Cancelling

Via Links:

  • Contacts can use reschedule/cancel links sent in notifications
  • Self-service rescheduling reduces admin work

Manually:

  • Edit appointment and change date/time (reschedule)
  • Edit appointment and change status to "cancelled" (cancel)

Blocked Slots

Blocked slots prevent appointments from being booked during specific times for a particular user.

Creating Blocked Slots

Step 1: Click "Create Blocked Slot" button on Appointments page

Step 2: Select:

  • User - Who is unavailable
  • Start Time - When block begins
  • End Time - When block ends
  • Reason (optional) - Internal note

Step 3: Create

Use For:

  • Personal time off
  • Company meetings
  • Training sessions
  • Any time a team member is unavailable

Don't Use For:

  • recurring time user is not available
  • instead edit user's availability to be unavailable during that time

Automatic Blocked Slots

From Google/Outlook Calendars:

  • Events marked BUSY in your connected calendar automatically create blocked slots
  • Prevents double-booking
  • Syncs in real-time
  • Only for users who have connected their Google/Outlook calendar

From External CRMs:

  • Job Appointments from ServiceTitan/HouseCall Pro (that weren't created in brayv.ai)
  • Sync as blocked slots for mapped users
  • Prevents double-booking across systems

Integration Scenarios

Scenario 1: Google Calendar Sync (User Level)

John Smith's Setup:

  1. John connects his Google Calendar (Settings > Myself)
  2. John is added to "Main Calendar" in brayv.ai
  3. AI books appointment with John at 2:00 PM
  4. Appointment appears in John's Google Calendar automatically
  5. John adds personal dentist appointment at 3:00 PM in Google Calendar (marked BUSY)
  6. 3:00 PM becomes blocked in brayv.ai for John
  7. AI cannot book appointments with John at 3:00 PM

Scenario 2: ServiceTitan Integration (Calendar Level)

HVAC Calendar Setup:

  1. Account connected to ServiceTitan (Settings > Integrations)
  2. John and Sarah are mapped to ServiceTitan technicians
  3. "HVAC Calendar" created with John and Sarah as users
  4. ServiceTitan sync toggled on for "HVAC Calendar"
  5. AI books appointment with John at 2:00 PM in HVAC Calendar
  6. Appointment syncs to ServiceTitan as a job assigned to John's technician profile
  7. John gets a job in ServiceTitan from another source at 4:00 PM
  8. 4:00 PM becomes blocked in brayv.ai for John

User Not Mapped:

  • If Mike is added to calendar but not mapped to ServiceTitan technician
  • Appointments with Mike don't sync to ServiceTitan
  • Mike's external jobs don't create blocked slots

Scenario 3: Calendar Widget Booking

Website Visitor Flow:

  1. Visitor goes to your website
  2. Uses embedded calendar widget
  3. Selects date/time from available slots
  4. Enters name, phone, service details
  5. Confirms SMS opt-in
  6. Books appointment
  7. Appointment created in brayv.ai
  8. Confirmation sent to contact
  9. Appointment syncs to team member's Google/Outlook calendar
  10. Appointment syncs to ServiceTitan (if configured)
  11. Journey trigger fires, contact moves to "Appointment Scheduled" stage

Best Practices

Calendar Organization

Single Team:

  • Create one main calendar with all team members
  • Let user selection strategy balance workload

Multiple Services:

  • Create separate calendars per service type
  • Example: "HVAC Calendar", "Plumbing Calendar", "Electrical Calendar"
  • Allows different availability, durations, and AI booking logic

Territories

  • Can create calendars per area you service, if different team members service different areas
  • Example: "North Zip Codes" with John, Amy, & Paul. "South Zip Codes" with Dave, Tom, and Marcus.
  • Then in your agent booking options, use AI Selection mode and set up rules about which calendar to book into based on what the contact zip code is.
  • Could stil be achieved all in one calendar by using AI Selection mode and setting the scope to Calendar and User, and specifying rules about which reps are eligible for which zip codes and letting the AI access appointment counts to distribute evenly between eligible reps.

Set Realistic Availability

Consider:

  • Travel time between appointments (use buffer)
  • Admin time, lunch breaks (use time windows)
  • Don't overbook your team

Buffer Times:

  • Whatever is reasonable for your workload

Integrate Personal Calendars

Require team members to:

  • Connect Google or Outlook Calendar
  • Mark personal events as BUSY
  • Keep calendars up-to-date

Benefits:

  • Prevents double-booking
  • Automatic availability management
  • Less manual blocked slot creation

Configure Notifications

At Minimum:

  • Enable confirmation notifications
  • Add an admin in additional team members so that someone other than the assigned team member is also alerted about the booked appointment.
  • Ensure users have correct cell phone numbers and emails so they can get notifications on both channels.

For Better Experience, Consider:

  • Multiple reminders (1 day + 1 hour)
  • Custom messages mentioning what to prepare, what to expect
  • Include reschedule/cancel links

Use Calendar Widgets

If you want customers to self-book:

  • Enable widget
  • Embed on your website
  • Keep opt-ins required
  • Monitor bookings

Monitor External CRM Sync

If using ServiceTitan/HouseCall Pro:

  • Regularly verify appointments are syncing correctly
  • Ensure all active team members are mapped
  • Check that job details are complete
  • Review blocked slots accuracy
  • Ensure AI is gathering AT LEAST: street adress, city, and zip code
  • Ensure when booking manually, contact record has AT LEAST: street adress, city, and zip code
  • If allowing bookings in the Calendar Widget, ensure widget requires AT LEAST: street adress, city, and zip code (in addition to name and phone number)
  • Bookings to Service Titan/HouseCall Pro will fail without these required address fields.

Troubleshooting

Problem: AI agent can't book appointments

Solution:

  • Verify at least one calendar exists
  • Check calendar has team members selected
  • Ensure availability is configured (at least one day enabled)
  • Verify AI agent has booking mode enabled and calendar selected
  • Check that booking constraints aren't too restrictive

Problem: Appointments not syncing to Google/Outlook

Solution:

  • Verify user has connected their Google/Outlook calendar (Settings > Myself)
  • Check that appointment is booked with that specific user
  • Re-authenticate Google/Outlook connection if needed
  • Check Google/Outlook calendar permissions
  • Allow up to 2-3 minutes for sync

Problem: Blocked slots from Google/Outlook not showing

Solution:

  • Verify events in Google/Outlook are marked as BUSY (not just "event")
  • Check user has calendar connected
  • Ensure user is added to the brayv.ai calendar
  • Wait a few minutes for sync
  • Check that event is in the future

Problem: Appointments not syncing to ServiceTitan/HouseCall Pro

Solution:

  • Verify CRM sync is toggled on for the specific calendar
  • Check that user is mapped to technician/employee (Settings > Integrations)
  • Ensure account is still connected to CRM
  • Verify ServiceTitan configuration is complete (job type, business unit)
  • Ensure contact has AT LEAST: street adress, city, and zip code (in addition to name and phone number or email). You cannot book to Service Titan or Housecall pro without address fields. It will fail every time.

Problem: No available time slots showing

Solution:

  • Check calendar availability is configured (at least one day enabled)
  • Verify time windows are set correctly
  • Check minimum notice constraint isn't too restrictive
  • Check maximum range constraint allows far enough ahead
  • Verify users in calendar have availability
  • Check for blocked slots covering all available times
  • Ensure your account has Timezone set (Settings > Business)

Problem: Double-booking happening

Solution:

  • Ensure users have connected Google/Outlook calendars
  • Verify BUSY events are creating blocked slots
  • Check external CRM appointments are syncing as blocked slots
  • Manually create blocked slots for known unavailability
  • Verify user availability rules are correct

Problem: Calendar widget not accepting bookings

Solution:

  • Verify widget is enabled
  • Check that calendar is active
  • Ensure availability is configured
  • Test from the widget directly (not just preview)
  • Check for JavaScript errors in browser console
  • Verify embed code is correct
  • Ensure your account has Timezone set (Settings > Business)

Problem: Reminders not sending

Solution:

  • Verify notifications are enabled for the calendar
  • Check reminder timing (may not have reached send time yet)
  • Ensure contact has phone number (for SMS) or email
  • Check contact's DND settings
  • Verify your account has SMS capability (phone number + A2P approval) and Notification emails configured (Settings > Email)
  • Review notification settings configuration

Problem: Wrong team member being assigned

Solution:

  • Check user selection strategy setting
  • Verify all intended users are in the calendar
  • Review user availability rules
  • Check for blocked slots on specific users
  • Consider switching to "Optimize Distribution" strategy for strict, even round-robin assignment
  • If booked by AI, check the booking mode, if AI selection, check your rules, use the "Test" button to test your rules.

Related Features