Microsoft Bookings Integration Guide
Microsoft Bookings Integration Guide
Overview
The Microsoft Bookings integration lets your AI bot answer customer questions about available services, staff, and appointment times — and even create and look up bookings — directly from your Microsoft Bookings calendar.
Requires: Microsoft 365 connected (go to Integrations → Microsoft 365 first), plus BookingsAppointment.ReadWrite.All and Bookings.Read.All Graph API permissions granted in your tenant.
Setup
1. Go to Integrations → Microsoft 365 and connect your M365 tenant if not already done.
2. Go to Integrations → Microsoft Bookings.
3. Find your Bookings Business ID: it's an email-shaped address unique to your Bookings calendar (e.g. yourPage@yourtenant.com) — not a GUID. In the Microsoft 365 admin center, open your Bookings calendar, then copy the address shown on its Booking page settings.
4. Paste the Business ID and click Save.
Service Discovery Tools
Get Business Info
Returns the Bookings business name, phone number, email, address, and website URL.
Triggers: "What's your phone number?", "Where are you located?", "How do I contact you?"
Get Available Services
Lists all bookable services with their name, description, duration in minutes, and price.
Triggers: "What services do you offer?", "How long is a haircut?", "What does a consultation cost?", "What appointment types do you have?"
Get Staff Members
Lists all staff members with their name, email, and role.
Triggers: "Who are your stylists?", "Can I book with Sarah?", "Who is available for appointments?"
Booking Tools
Check Availability
Checks available appointment slots for a specific service on a given date. Returns up to 10 time slots.
Input: Service ID (from Get Services) + date (YYYY-MM-DD format).
Triggers: "When can I book a haircut this Friday?", "What times are available tomorrow for a consultation?", "Is 2pm open on Thursday?"
Create Appointment
Books an appointment for a customer — requires service, start time, customer name, and email.
Input: Service ID, start time (ISO 8601), customer name, customer email. Optional: staff ID, duration in minutes, customer phone.
Returns: Appointment ID, confirmation details, and Teams meeting link if the service is virtual.
Triggers: After checking availability, the bot can confirm and create the booking in one step.
Get Appointment
Looks up an existing appointment by its ID. Returns service name, time, customer info, and status (booked, cancelled, noShow).
Triggers: "What time is my appointment?", "Can you look up booking #abc123?", "Is my appointment confirmed?"
Cancel Appointment
Cancels an existing appointment by its ID, directly through the Bookings calendar — no need to send the customer to a confirmation email link.
Triggers: "Cancel my appointment", "I need to cancel booking #abc123", "Can you cancel my haircut on Friday?"
Reschedule Appointment
Moves an existing appointment to a new start time.
Input: Appointment ID + new start time (ISO 8601).
Triggers: "Can I move my appointment to 3pm instead?", "Reschedule booking #abc123 to next Tuesday"
Required Graph API Permissions
The Velaro Azure AD app must have these application permissions granted in your tenant:
BookingsAppointment.ReadWrite.All— required to create and read appointmentsBookings.Read.All— required to list services, staff, and availability
To grant these: Azure Portal → Azure Active Directory → Enterprise Applications → find Velaro → Permissions → Grant admin consent.
Tips for Best Results
- Use a starter workflow that first calls
ms_bookings_get_servicesto list options, thenms_bookings_check_availabilitywith the customer's chosen service and preferred date, thenms_bookings_create_appointmentto confirm. - Service ID is a GUID — the bot should retrieve service IDs from
ms_bookings_get_servicesbefore checking availability. Don't hardcode IDs in workflows. - Virtual services: If your Bookings service is configured as an online meeting, the created appointment will include a Teams meeting join link.
- Cancellations and rescheduling: The bot can cancel or reschedule an existing appointment directly — the customer doesn't need to use the Bookings confirmation email link.
Was this article helpful?