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:
- Account must be connected to ServiceTitan (Settings > Integrations > ServiceTitan)
- brayv.ai users must be mapped to ServiceTitan technicians
For HouseCall Pro:
- Account must be connected to HouseCall Pro (Settings > Integrations > HouseCall Pro)
- 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:
- Click "Add Contact Reminder"
- Select timing (15 minutes, 1 hour, 1 day before, etc.)
- Enable SMS and/or Email
- 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:
- Visitor selects date and time from available slots
- Fills out contact information
- Confirms opt-in (if enabled)
- Submits booking
- Appointment is created in brayv.ai
- Contact receives confirmation
- Appointment syncs to team member's Google/Outlook calendar
- 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:
- Click on the appointment
- Edit dialog opens
- Modify fields as needed
- Save changes
From Contact Page:
- View contact's appointments card
- Click on appointment
- Edit as needed
From Conversation Page:
- View contact's appointments card
- Click on appointment
- 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:
- John connects his Google Calendar (Settings > Myself)
- John is added to "Main Calendar" in brayv.ai
- AI books appointment with John at 2:00 PM
- Appointment appears in John's Google Calendar automatically
- John adds personal dentist appointment at 3:00 PM in Google Calendar (marked BUSY)
- 3:00 PM becomes blocked in brayv.ai for John
- AI cannot book appointments with John at 3:00 PM
Scenario 2: ServiceTitan Integration (Calendar Level)
HVAC Calendar Setup:
- Account connected to ServiceTitan (Settings > Integrations)
- John and Sarah are mapped to ServiceTitan technicians
- "HVAC Calendar" created with John and Sarah as users
- ServiceTitan sync toggled on for "HVAC Calendar"
- AI books appointment with John at 2:00 PM in HVAC Calendar
- Appointment syncs to ServiceTitan as a job assigned to John's technician profile
- John gets a job in ServiceTitan from another source at 4:00 PM
- 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:
- Visitor goes to your website
- Uses embedded calendar widget
- Selects date/time from available slots
- Enters name, phone, service details
- Confirms SMS opt-in
- Books appointment
- Appointment created in brayv.ai
- Confirmation sent to contact
- Appointment syncs to team member's Google/Outlook calendar
- Appointment syncs to ServiceTitan (if configured)
- 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
- AI Text Agents - Configure AI booking in agent settings
- Customer Journeys - Use calendar triggers for stage transitions
- AI Voice Agents - Configure voice AI booking in agent settings
- Booking Configuration - AI calendar selection guide