Saturday, October 8, 2022

    Latest Posts

    Microsoft Bookings Connector in Power Automate – The Good, The Bad & The Ugly

    I started writing about Microsoft Bookings in 2020, wanting to learn as much as I could and then share that insight with others. To this day, some of my most read blog posts are on the topic of Bookings and how to get the most from it. Back then, the only way to get data from Bookings was either using the Microsoft Bookings API in Microsoft Graph, or by creating some crafty little flows in Power Automate using the Outlook connector. Given my previous interest, I was excited to see Microsoft had introduced a connector for Bookings. It’s currently in Preview, but I decided to take a look and see what options it had, and if it would make much of a difference to organisations using Bookings and wanting to do a bit more with it. Rather than a step by step post on how to do something, I’ve put together a list of what I think is The Good, The Bad and The Ugly.

    The Good

    So what is good about the connector?

    We Now Have One

    Well, obviously the best thing is that one now exists. Microsoft Bookings has sat without one for years. You could use the Outlook connector and the Get events action step, but needed to know the password for the user account linked to the Bookings calendar (the user being created when the Bookings calendar gets created). It wasn’t tricky to provide a password, but it wasn’t ideal. Failing that, you needed to understand how to use an API in Microsoft Graph, which isn’t as ‘low-code friendly’ and a barrier to many people. So having the connector is AWESOME, and a massive step. We have three triggers which are when an appointment is cancelled, created or updated.

    Oh, and side note, do not be put off by the trigger asking for the Bookings Business SMTP Address. For me this is misleading as it also shows, ‘this can be found in your business’s bookings page‘. It is not clear what it is at all. What it’s referring to is the email address linked to the Bookings Calendar. If you are not sure, just open up the public Bookings calendar, the link where people go to book an appointment. The email address will show inbetween calendar/ and then /bookings. Just copy and paste that to link it to your Bookings Calendar.

    Click to view in detail

    Ability To Access Data From Booking

    Using Power Automate without this new Microsoft Bookings connector, a series of variables and steps were needed to split out data with potentially complex expressions (complex depending on your level of comfort with Power Automate) to get simple things like the customer name, email, phone number and any notes provided. Getting any custom questions and answers was even more challenging as you might not make those required so sometimes the body of the appointment contained information, sometimes it didn’t. Using the new connector, we now get access to all of the data dynamically in a clearly defined way. Appointments where only one person can book are defined in 1:1 values, where appointments that can have more than one person book the same date and time are defined in 1:N values.

    Click to view in detail

    Appointment Data For Attendees Greater Than One

    As shown above, we can easily get data for Bookings where the number of attendees is greater than one. There are two values that get returned that could help you with your flows depending what requirements you might have. One is the Max Attendees Count, showing the number of possible people who could book a specific service at the same date, time and for the same staff member. The other is the Filled Attendees Count which is the number of attendees who have booked the appointment slot. So using those together to check and make sure an email gets sent out only when the Filled Attendees Count on a booking equals the Max Attendees Count on a booking could be a good way to send a final summary to the Staff Member showing them all of the people who will be attending that appointment. Could work well for group bookings if that’s something your organisation hosts.

    Click to view in detail

    Support Of Multi Staff Scenarios On The Way

    One of the FAQs on the Microsoft Bookings connector documentation page asks why the Staff Members detail is an array when only one staff member can be assigned per booking. The answer states that in the future, Bookings will support multi staff scenarios. This might be great news for some organisations. For now it just means it’s a bit annoying to try and get the one Staff Members name if you want to include that in some kind of email notification or to update data elsewhere. It’s pretty straightforward, but does need a few steps. Here is one way to do it. Add a Parse JSON step and use the StaffMembers value from the trigger in the Content step. Then paste in the following code as the Schema.

        "type": "array",
        "items": {
            "type": "object",
            "properties": {
                "DisplayName": {
                    "type": "string"
                "EmailAddress": {
                    "type": "string"
            "required": [
    Click to view in detail

    Then add in a Compose step, or your Outlook Email step or wherever you want to add the Staff Members name to, and paste in this expression. We know currently you can only have 1 Staff Member, so this gets the first record returned from the Parse JSON step, and gives us the Display Name. If you wanted the email address just replace DisplayName with EmailAddress.

    Click to view in detail

    The Bad

    What about the bad stuff?

    No Actions Available

    Sadly, no Actions are available yet. Not sure if any are on the way, but I would have liked to see the ability to get a list of appointments linked to a Bookings Calendar. That way we could send a summary of the days or weeks appointments to a staff member. Fingers crossed getting the Triggers is just the first step, and there are Actions on the way!

    Click to view in detail

    Only Bookings Admins Can Create Triggered Flows

    As per the known issues and limitations of the trigger from the Microsoft Bookings connector documentation, only Bookings admins can create appointment triggers. This is a shame, because it’s unlikely that the Admin for a Bookings Calendar is also the same person creating the flow in Power Automate. It’s easy enough to add someone as an Administrator under the Staff section in Microsoft Bookings but it does mean an extra step each time. It might also be that a Bookings Calendar is created and it’s not something you want others accessing and potentially making changes to, so there could be potential for security challenges or issues. Using the Outlook connector and getting the events (booking appointments) does mean you can get access to the data without needing to be an Administrator of the Bookings Calendar, but then tit’s not as easy to get all of the data… so that’s not ideal either.

    Only 5 Flows Per Bookings Mailbox

    Also in the known issues and limitations from Microsoft is that currently you can only have 5 flows per Bookings Mailbox. So depending on your requirements, you might need to get creative and combine flows together in to one. Another consideration is that each trigger is linked up to the email address of the Bookings Calendar, so you might need multiple sets of the same flows depending on how many calendars you have.

    The Ugly

    So what’s not so pretty about it?

    No Trigger For Create AND Update

    Anyone familiar with the Dataverse connector will know we have a trigger of ‘when a row is added, modified or deleted‘ then from there you can indicate if the flow should run if something is Added, Modified, or either of those two things (among other change types). Unfortunately there is no such combined trigger for Microsoft Bookings, so you will need to have two different flows if you want to do something if either of those two things happen (see the next point for a good example).

    Handling Of Multiple Attendee Bookings

    So while it’s great we can get data for bookings where the maximum number of attendees is greater than 1, it’s worth noting that this means the data coming through is a little bit different for those where the max equals 1. When someone books an appointment for a service when there is a 1:1 relationship, the Customer related values are populated. When there is more than one possible a Customers array value gets populated instead. Also, keeping in mind the triggers we have, the trigger will only run the flow for the FIRST time when someone books an appointment where more than 1 person could book it. Let’s say 2 people could book the same date, time and service. John Doe books it, and the flow triggers upon creation of the bookings appointment. Jane Doe books it, and that is considered an update to the existing appointment, so the flow would not trigger. So for this we would need two flows potentially, or one flow based on update only, and only do something when the filled attendees count equals the max attendee count. Just something to keep in mind.

    Click to view in detail

    Lots Of Data Returned As Arrays

    We’ve already looked at the Staff Members where I highlighted the one Staff Member on the booking is returned as an array. You can also see in the item above, for booking appointments where the Max Attendee Count can be greater than 1, the Customers detail is returned in an array also. Any custom questions are also then within an Answers array. So there is the potential for a lot of extra knowledge of Power Automate if you want to get the right data without getting in to a tangled web of ‘Apply to each’ steps.

    Final Conclusion

    I think it’s fantastic that this connector is finally here. It’s giving more options and an easier way to access the right data for an organisation to then take the necessary steps for their own requirements to extend the solution. Hopefully we see some Actions coming soon. What are your thoughts? Do you use Microsoft Bookings? Have you taken a look at the connector yet? Let me know what you think in the comments below!

    Latest Posts

    Don't Miss

    Stay in touch

    To be updated with all the latest news, offers and special announcements.