Microsoft Bookings (Preview)
Microsoft Bookings is a scheduling tool and is part of the Microsoft Office family of products. It allows users and organizations to create booking pages and helps their customers book appointments easily.
This connector is available in the following products and regions:
Service | Class | Regions |
---|---|---|
Logic Apps | Standard | All Logic Apps regions except the following: - Azure Government regions - Azure China regions - US Department of Defense (DoD) |
Power Automate | Standard | All Power Automate regions except the following: - US Government (GCC) - US Government (GCC High) - China Cloud operated by 21Vianet - US Department of Defense (DoD) |
Power Apps | Standard | All Power Apps regions except the following: - US Government (GCC) - US Government (GCC High) - China Cloud operated by 21Vianet - US Department of Defense (DoD) |
Contact | |
---|---|
Name | Microsoft 365 Support |
URL | https://support.microsoft.com/en-us/contactus# |
Connector Metadata | |
---|---|
Publisher | Microsoft Corporation |
Website | https://book.ms |
Privacy policy | https://docs.microsoft.com/en-us/microsoft-365/bookings/bookings-faq?view=o365-worldwide#privacy |
Categories | Business Management;Collaboration |
Microsoft Bookings connector is built with the purpose of extending Booking appointments with other functionalities that power platform has to offer. Have you ever looked for custom workflows which you have wanted to build for your customers when they make an appoint with your business, like, Booking a Zoom meeting along with an appointment, Integrating a payment method using Sripe, Uploading customer data to a CRM system, sending out welcome emails? Booking connector is a solution for these asks. With this connector we are exposing all appointment booking actions - like Create/Update/Delete of Bookings.
Prerequisites
Customers trying to use the Bookings Connector should have a Bookings Business License to use this connector with. Microsoft Bookings will be available with these licenses.
How to get credentials
Microsoft Bookings uses Microsoft Entra ID authentication. Having a valid O365 account will ensure that you are authenticated to use Bookings connector. You should be a signed in user to create appointment based flows.
Get started with your connector
For creating a custom flow with Bookings apppointments as triggers, you will need to know the Booking busineess' SMTP address. You can build flows with bookings appointment being created/updated/cancelled as triggers. Here are some of the common flows that you can build:
Integration with Stripe
Stripe allows private individuals and businesses to accept payments over the internet. You can track customers, orders, invoices and more; For more information Stripe | Microsoft Power Automate
Integration with Zoom
This Connector will help to automate Zoom Meeting Operations; For more information Zoom Meetings (Independent Publisher) | Microsoft Power Automate
Integration with Dynamic 365
Dynamics 365 Sales Insights helps increase your sales with the help of AI-driven insights that promote personalized engagement and proactive decision making to help build relationships. ; For more information Dynamics 365 Sales Insights | Microsoft Power Automate
Here is all the list of connectors: List of supported connectors | Microsoft Power Automate
Known issues and limitations
Only Bookings admins can create flows using Appointment triggers. Description: Right now only Bookings admins (different from tenant admins) can create appointment triggers. If you are a user who is not an admin (Team Member, Scheduler, Viewer, Guest), you should ask your admin to create a flow. Alternatively, you can also request for admin access.
Only 5 flows can be created per Bookings Mailbox. Description: For a Booking Mailbox, only 5 flows can be created. This is a Bookings Mailbox level limit and not a per admin limit. If you are looking for more than one action for an appointment trigger, you can add that in one of the existing flows by using the Add Action button. You can contact other Booking administrators for support.
Errors saying "Staff not part of Bookings Business", "Invalid authority" while creating a flow. Description: Please ensure you are a part of the said Bookings Mailbox and you are an admin for the same. You can go to the staff tab and verify the same.
Some of the Bookings parameters - Cancel Reason for 1:1 Bookings are not populated. Description: The said paramters do not appear now and we are working to fix this soon.
Bad Gateway Error - If there are issues in the backend API for creating flows. 502 Bad gateway errors are seen. Please report the same to Microsoft 365 support.
Common errors and remedies
HTTP Error Codes while creating flows:
- '401': Check for Authentication related issues in your connection.
- '403': Only Bookings Administrators can create appointment flows. Check (1) in Known issues and Limitations section.
- '403': Notification URL domain not a part of allowed list.
- '429': More than expected number of appointment flows created for a business. Check (2) in Known issues and Limitations section.
- '502': This is an internal server error. Please report this to your support engineer with all the error details in the flow creation response.
FAQ
What do I do if my Booking calendar is not a part of the drop down in the triggers? Answer: This drop down is based on recently accessed bookings calendars for which user is an admin. You can visit it once from Bookings web page and this should ensure that Bookings Calendar appears. You might also not have admin access if you are not seeing a specific mailbox alone.
If (1) does not work, How do I create a flow for a calendar I am an admin of? Answer: You can enter a custom value. The value here will be the Business' SMTP address/ You can head to your Bookings page. Look for the Integrations tab and select the Power Automate option. You can copy the SMTP address displayed here and paste it in the flow's text box.
How to get Customer data from the appointment trigger responses? Answer: If this is a 1:1 booking, then the top level fields like CustomerName, CustomerEmail etc can be used. If it is a group bookings, the customers array can be used to get fields like displayName (customers email, customers displayName etc) can be used with a power automate "Foreach" option.
Why is the StaffMembers an array? Answer: You will be able to assign more than one staff member as host. If your service has only one staff as host, then the staff details will be seen in the staff member array.
Is there a common id that one can use across triggers for a same appointment? Answer: Yes, you can use the selfServiceAppointmentId. This field will be populated for all type of appointments - be it Online or In-Person or Staff Booked or customer Booked. The "Id" field is an exchange id and is not unique across triggers.
Is there a way to get what changed in the update appointment trigger notification? Answer: No, this is not possible today.
How does notifications for multi attendee appointment work? Answer: In case of appointments with multiple attendees, addition of new customers (after the first one) is triggered as an update appointment and not as a create appointment. This is due to the fact that adding a new customer to a created booking essentially means adding an attendee to an existing bookings' appointment entity. The first customer that was added to the slot always triggers the appointment creation trigger as that is the point when the booking appointment entity is created.
Creating a connection
The connector supports the following authentication types:
Default | Parameters for creating connection. | All regions | Not shareable |
Default
Applicable: All regions
Parameters for creating connection.
This is not shareable connection. If the power app is shared with another user, another user will be prompted to create new connection explicitly.
Throttling Limits
Name | Calls | Renewal Period |
---|---|---|
API calls per connection | 100 | 60 seconds |
Actions
List Booking Businesses where user is an admin |
Operation used to list all mailboxes for which the accessing user is an Administrator. |
List Booking Businesses where user is an admin
Operation used to list all mailboxes for which the accessing user is an Administrator.
Returns
- Body
- ListMailboxResponse
Triggers
When a appointment is Created |
This trigger is used for listening to create of bookings appointments. Select a booking page or enter the SMTP address of the booking page that you are looking forward to listen for create appointment events |
When an appointment is Cancelled |
This trigger is used for listening to cancel of bookings appointments. Select a booking page or enter the SMTP address of the booking page that you are looking forward to listen for cancel appointment events. |
When an appointment is Updated |
This trigger is used for listening to update of bookings appointments. Select a booking page or enter the SMTP address of the booking page that you are looking forward to listen for update appointment events. |
When a appointment is Created
This trigger is used for listening to create of bookings appointments. Select a booking page or enter the SMTP address of the booking page that you are looking forward to listen for create appointment events
Parameters
Name | Key | Required | Type | Description |
---|---|---|---|---|
Booking page.
|
SMTPAddress | True | string |
Select a booking page |
change_type
|
change_type | True | array of string |
Changes to listen on |
Returns
- Body
- AppointmentData
When an appointment is Cancelled
This trigger is used for listening to cancel of bookings appointments. Select a booking page or enter the SMTP address of the booking page that you are looking forward to listen for cancel appointment events.
Parameters
Name | Key | Required | Type | Description |
---|---|---|---|---|
Booking page.
|
SMTPAddress | True | string |
Select a booking page |
change_type
|
change_type | True | array of string |
Changes to listen on |
Returns
- Body
- AppointmentData
When an appointment is Updated
This trigger is used for listening to update of bookings appointments. Select a booking page or enter the SMTP address of the booking page that you are looking forward to listen for update appointment events.
Parameters
Name | Key | Required | Type | Description |
---|---|---|---|---|
Booking page.
|
SMTPAddress | True | string |
Select a booking page |
change_type
|
change_type | True | array of string |
Changes to listen on |
Returns
- Body
- AppointmentData
Definitions
ListMailboxResponse
Name | Path | Type | Description |
---|---|---|---|
mailboxes
|
mailboxes | array of MailboxEntity |
All mailbox entities. |
MailboxEntity
Name | Path | Type | Description |
---|---|---|---|
Display name
|
displayName | string |
Mailbox Display name. |
Mailbox SMTP
|
string |
SMTP of the Booking mailbox. |
AppointmentData
Name | Path | Type | Description |
---|---|---|---|
Additional Info
|
AdditionalInfo | string |
Additional Info about the booking. |
Customer Email
|
CustomerEmail | string |
Customer Email address in case of 1:1 bookings. |
CustomerId
|
CustomerId | string |
Customer Id in case of 1:1 bookings. |
Location Display Name
|
CustomerLocation.DisplayName | string |
Customer location display name. Location filled from C2 page for 1:1 Booking. |
City
|
CustomerLocation.PhysicalAddress.City | string |
City the customer belongs to for 1:1 booking. |
CountryOrRegion
|
CustomerLocation.PhysicalAddress.CountryOrRegion | string |
Country Or Region of the customer for 1:1 booking. |
PostalCode
|
CustomerLocation.PhysicalAddress.PostalCode | string |
Postal Code of the customer for 1:1 booking. |
State
|
CustomerLocation.PhysicalAddress.State | string |
State where the customer belongs to in the 1:1 booking. |
Street
|
CustomerLocation.PhysicalAddress.Street | string |
Street where the customer belongs to in the 1:1 booking. |
CustomerName
|
CustomerName | string |
Customer Name for 1:1 booking. |
CustomerNotes
|
CustomerNotes | string |
Customer Notes for 1:1 booking. |
CustomQuestionAnswers
|
CustomQuestionAnswers | array of CustomQuestion |
All the custom questions and answers for 1:1 booking. |
CustomerPhone
|
CustomerPhone | string |
Customer phone for 1:1 booking. |
CustomerTimeZone
|
CustomerTimeZone | string |
Customer Time Zone for 1:1 booking. |
Customers
|
Customers | array of CustomerData |
List of customers in the 1:N booking |
Duration
|
Duration | integer |
Duration of the appointment |
EndTime
|
EndTime | string |
End Time of the appointment. |
FilledAttendeesCount
|
FilledAttendeesCount | integer |
Number of attendees who have booked this appoinment slot. |
Id
|
Id | string |
[Deprecated] - use selfServiceAppointmentId as unique identifer for the bookings appointment. |
IsSMSNotificationsEnabled
|
IsSMSNotificationsEnabled | boolean |
Field to check if SMS notification is enabled for the appointment. |
JoinWebURL
|
JoinWebURL | string |
URL for joining this online appointment. |
MaxAttendeesCount
|
MaxAttendeesCount | integer |
Max number of attendees allowed in this appoinment. |
SelfServiceAppointmentId
|
SelfServiceAppointmentId | string |
Appointment id for the booking appointment. |
ServiceId
|
ServiceId | string |
Unique Service Identifier. |
ServiceName
|
ServiceName | string |
Name of the bookings service. |
ServiceNotes
|
ServiceNotes | string |
Service level notes for the staff and admin. |
StaffMembers
|
StaffMembers | array of StaffMemberData |
List of staff members |
Start Time
|
StartTime | string |
Start Time of the appointment. |
Tracking Data
|
TrackingData | string |
Campaign tracking Data. |
Cancel Reason
|
CancelReason | string |
Reason for cancellation of this booking appointment |
CustomerData
Name | Path | Type | Description |
---|---|---|---|
Email
|
string |
Email of the customer in the group booking. |
|
Id
|
Id | string |
Unique ID of the customer in the group booking. |
Location Display Name
|
Location.DisplayName | string |
Customer location display name. Location filled from C2 page for group booking. |
City
|
Location.PhysicalAddress.City | string |
City the customer belongs to for group booking. |
Country Or Region
|
Location.PhysicalAddress.CountryOrRegion | string |
Country Or Region of the customer for group booking. |
Postal Code
|
Location.PhysicalAddress.PostalCode | string |
Postal Code of the customer for group booking. |
State
|
Location.PhysicalAddress.State | string |
State where the customer belongs to in the group booking. |
Street
|
Location.PhysicalAddress.Street | string |
Street where the customer belongs to in the group booking. |
Display Name
|
Name | string |
Display Name of the customer in the group booking. |
Notes
|
Notes | string |
Notes of the customer in the group booking. |
Timezone
|
TimeZone | string |
Timezone of the customer in the group booking. |
Answers
|
Answers | array of CustomQuestion |
All the custom questions and answers. |
StaffMemberData
Name | Path | Type | Description |
---|---|---|---|
DisplayName
|
DisplayName | string |
Display Name of the staff assigned for this appointment. |
EmailAddress
|
EmailAddress | string |
Email Address of the staff assigned to this appointment. |
Id
|
Id | string |
Unique Staff identifier. |
CustomQuestion
Name | Path | Type | Description |
---|---|---|---|
Answer
|
Answer | string |
Answer to this custom question. |
AnswerOptions
|
AnswerOptions | array of string |
All the answer options. |
IsRequired
|
IsRequired | boolean |
Tells if answering this question is mandatory. |
Question
|
Question | string |
Question to be answered. |
QuestionID
|
QuestionID | string |
Unique Identifier of the Question to be answered. |
SelectedOptions
|
SelectedOptions | array of integer |
All the selected answer options. |