According to message center notification MC375740 (updated Jun 21, 2022, Microsoft 365 roadmap item 93239), the deployment of Outlook’s Booking with Me feature is rolling out to targeted release tenants. The deployment to standard release tenants will start soon and be complete in mid-August. Any user with an Exchange Online license has access to Bookings with Me unless the organization disables the feature for the entire tenant or individual users.
Despite its association with Outlook, Booking with Me is a separate app that uses Exchange Web Services (EWS) API calls to interact with user calendars. The idea behind the app is to allow internal and external people to request time in the calendars of other users through their Booking with Me page. The app is separate to the Microsoft Bookings app, with the basic differentiation between the target audiences: personal (manage meetings in my mailbox) and group (manage appointments for a group of people, usually for a business purpose).
Using Booking for Me
If your account isn’t blocked, a Create bookings page link appears in your OWA calendar (Figure 1). A similar link is not available in Outlook for Windows or Mac. After creating a bookings page, the link changes to Edit bookings page.
Figure 1: The link to create a personal bookings page
Clicking the link brings up a draft bookings page for you to populate with meeting type. A meeting type defines the characteristics of a meeting you’re willing to accept, including:
Public or private: Anyone with the link to your bookings page can select from the defined public meeting types to create a meeting in your calendar. Only those with the link to a specific private meeting event can create those events. You might have a private meeting type that can be scheduled immediately at any time by selected co-workers and a public meeting type for everyone else.
When it can happen: By default, you use the working hours defined for your calendar, but you can amend the available hours. For instance, you might decide to reserve slots between 10 AM and 11 AM each morning for meetings.
How long a meeting will be: The default is 30 minutes. It can be as short as 10 minutes
Where the meeting will be: The default is to create online Teams meetings., but you can define a location such as your office or a conference room.
Create buffer times before and after meetings so that you don’t end up with back-to-back events. The buffer time is defined in minutes.
How long in advance someone can schedule a meeting. The default is one hour, meaning that someone can look for a time slot in your calendar an hour ahead of the current time. As many people like to review meetings to decide if they will accept them or reschedule as necessary, a longer lead time might be better.
Figure 2 shows how to populate the settings for a new meeting type.
Figure 2: Creating a meeting type for Booking with me
Each meeting type has a separate link used to make bookings. You don’t have to define all the meeting types immediately as you can add more over time. Just one is needed to create your booking page, which can take ten or so minutes for the service to set up.
Sharing Meeting Types
When the bookings page is ready, you can share its link with other people. The Share option generates a link like Book time with Sean Landy, which expands to a link to the BookWithMe service running on Outlook.com:
The important point to understand is that anyone with a meeting link (public or private) can book a meeting with you, even if they don’t have a Microsoft account.
You can share the link to your bookings page by copying it to include in a document, email, or Teams message, or add it to your email autosignature. OWA greyed out the option to add the booking link automatically in the edit email signature dialog. This was probably because I defined two public meeting types and OWA couldn’t choose which of the links to the meeting types to insert. The problem is easily solved by pasting the link to the bookings page into your email signature.
Booking Meetings
To book a meeting, use the link to someone’s bookings page or the link to a private meeting time that’s been shared with you. Booking with Me displays the page. You can then select the meeting type from the set displayed on the page and then choose a meeting time (Figure 3).
Figure 3: Booking a meeting through a personal bookings page
When someone schedules a meeting through Booking with me, both the requester and the person who hosts the meeting (the meeting owner) receive email confirmation. The meeting owner receives email to tell them that someone set up a meeting through their bookings page. The requester receives a regular meeting invitation. If the meeting is online, the invitation includes any custom Teams meeting information defined by the organization. To make this happen, the Bookings service impersonates the meeting owner and creates a meeting in their calendar with the person who requests the meeting. The calendar event is like any other event and can be updated or cancelled as necessary. This includes changes made by the requestor, who can use a link in the meeting invitation to access meeting details to reschedule or cancel the event.
Figure 4: Email notification that someone’s made a booking
Likely to be a Popular Tool
Booking with me is a good example of how many can deploy its software toolkit to combine different elements drawn from across Microsoft 365 to create a new solution that people can use without installing any additional software. Users might need a little help to understand how to create good meeting types, but once people get the hang of it, I think Booking with me will be popular. Let’s face it: few people enjoy organizing meetings, and if Booking with me helps to reduce the pain a little, it will deliver value.
So much change, all the time. It’s a challenge to stay abreast of all the updates Microsoft makes across Office 365. Subscribe to the Office 365 for IT Pros eBook to receive monthly insights into what happens, why it happens, and what new features and capabilities mean for your tenant.
27 Replies to “Using the Outlook Booking with Me Feature”
So its basically Bookings just that there are no “services” which more than one person can “serve”? And that its usable directly from outlook instead of the separate Bookings app/website?
Do you know if there is, or will ever be, a way for admins to determine if a user has a Bookings with Me page created? I was looking for ways using PowerShell or other means to determine a)Do they have a Public booking page? and b)What is the unique “bookwithme/user/@domain” address of their page. I could then use that to automatically include a link in our company signature software.
We are also working on a similar use case wherein we need to determine if public booking page is available for a user and if yes then get the url of the page. Didn’t find any way to achieve this.
Loading...
It doesn’t seem that Microsoft has exposed a method to get the public booking page of a user programmatically. Have you asked Microsoft Support? They might be able to get some advice from the engineering team.
Loading...
Obtaining the URL is rather easy. It seems to be in the form of “https://outlook.office.com/bookwithme/user/@?anonymous” for all users. You can use “Get-Mailbox -ID “” | Select-Object ExchangeGuid” to obtain the GUID. The part that I struggle with is determining if the user has it set up or not. If it is not set up the URL will fail. I did at one point locate where the Bookings settings are stored within the mailbox. I believe i was using EWSEditor or a similar tool. I *think* it was under “IPM.Configuration.Booking.SelfService.Publishing”. I was unable to find a programmatic method of obtaining this information though.
Loading...
I guess you could run through the mailboxes and test if valid URLs exist for each mailbox. If one does, you could use a custom attribute to store a value to say that the URL exists.
Loading...
Can you provide specific examples of when public and private booking types should be used? A few hypothetical examples would be helpful.
Public bookings might allow anyone in the organization to book a time slot with someone. Private bookings (which could cover a longer slot) might be restricted to the members of someone’s team.
It appears after much troublshooting that Bookings with Me Private meeting link is redirectling to the Public page and therefore receiving an error re ‘ No public meetings are available
The user is not accepting any public meetings through the booking page right now. Please contact them directly or check back here later.’. I have found online the same report but no reply from MS. Do you have any insight into this problem?
I am noticing the same thing! It is very frustrating when I need the private link to book over an over. But my clients are getting the same message even though I did not share the link to only be able to be booked once.
Thanks Tony but I meant a different use case: I emailed my bookings page link to someone who opened the email on their mobile device and attempted to book a meeting on their mobile device (Android, in this example).
They got stuck in an eternal loop of: book a time; enter verification code window pops up, exit the booking page to retrieve code, return to the booking page but the ‘enter verification code’ window has closed and the booking has not been saved, rebook meeting, retrieve code, lose meeting…
Which effectively makes the Booking with Me tool useless as the 50%(?) of people who access their email on mobile will not be able to use the link.
Unless I’m missing something?
Loading...
You’re not missing anything. If I was a cynic, I’d say something like maybe Microsoft didn’t test this scenario…
So maybe you should report it to Microsoft support to make sure that the bug is formally registered and passed to Outlook engineering to be fixed…
Loading...
For orgs who have external sharing / public links turned off at tenant level, to comply with wider policies and/or things like cyber essentials, is there still a way to use this feature?
{"id":null,"mode":"button","open_style":"in_modal","currency_code":"EUR","currency_symbol":"\u20ac","currency_type":"decimal","blank_flag_url":"https:\/\/office365itpros.com\/wp-content\/plugins\/tip-jar-wp\/\/assets\/images\/flags\/blank.gif","flag_sprite_url":"https:\/\/office365itpros.com\/wp-content\/plugins\/tip-jar-wp\/\/assets\/images\/flags\/flags.png","default_amount":100,"top_media_type":"featured_image","featured_image_url":"https:\/\/office365itpros.com\/wp-content\/uploads\/2022\/11\/cover-141x200.jpg","featured_embed":"","header_media":null,"file_download_attachment_data":null,"recurring_options_enabled":true,"recurring_options":{"never":{"selected":true,"after_output":"One time only"},"weekly":{"selected":false,"after_output":"Every week"},"monthly":{"selected":false,"after_output":"Every month"},"yearly":{"selected":false,"after_output":"Every year"}},"strings":{"current_user_email":"","current_user_name":"","link_text":"Virtual Tip Jar","complete_payment_button_error_text":"Check info and try again","payment_verb":"Pay","payment_request_label":"Office 365 for IT Pros","form_has_an_error":"Please check and fix the errors above","general_server_error":"Something isn't working right at the moment. Please try again.","form_title":"Office 365 for IT Pros","form_subtitle":null,"currency_search_text":"Country or Currency here","other_payment_option":"Other payment option","manage_payments_button_text":"Manage your payments","thank_you_message":"Thank you for supporting the work of Office 365 for IT Pros!","payment_confirmation_title":"Office 365 for IT Pros","receipt_title":"Your Receipt","print_receipt":"Print Receipt","email_receipt":"Email Receipt","email_receipt_sending":"Sending receipt...","email_receipt_success":"Email receipt successfully sent","email_receipt_failed":"Email receipt failed to send. Please try again.","receipt_payee":"Paid to","receipt_statement_descriptor":"This will show up on your statement as","receipt_date":"Date","receipt_transaction_id":"Transaction ID","receipt_transaction_amount":"Amount","refund_payer":"Refund from","login":"Log in to manage your payments","manage_payments":"Manage Payments","transactions_title":"Your Transactions","transaction_title":"Transaction Receipt","transaction_period":"Plan Period","arrangements_title":"Your Plans","arrangement_title":"Manage Plan","arrangement_details":"Plan Details","arrangement_id_title":"Plan ID","arrangement_payment_method_title":"Payment Method","arrangement_amount_title":"Plan Amount","arrangement_renewal_title":"Next renewal date","arrangement_action_cancel":"Cancel Plan","arrangement_action_cant_cancel":"Cancelling is currently not available.","arrangement_action_cancel_double":"Are you sure you'd like to cancel?","arrangement_cancelling":"Cancelling Plan...","arrangement_cancelled":"Plan Cancelled","arrangement_failed_to_cancel":"Failed to cancel plan","back_to_plans":"\u2190 Back to Plans","update_payment_method_verb":"Update","sca_auth_description":"Your have a pending renewal payment which requires authorization.","sca_auth_verb":"Authorize renewal payment","sca_authing_verb":"Authorizing payment","sca_authed_verb":"Payment successfully authorized!","sca_auth_failed":"Unable to authorize! Please try again.","login_button_text":"Log in","login_form_has_an_error":"Please check and fix the errors above","uppercase_search":"Search","lowercase_search":"search","uppercase_page":"Page","lowercase_page":"page","uppercase_items":"Items","lowercase_items":"items","uppercase_per":"Per","lowercase_per":"per","uppercase_of":"Of","lowercase_of":"of","back":"Back to plans","zip_code_placeholder":"Zip\/Postal Code","download_file_button_text":"Download File","input_field_instructions":{"tip_amount":{"placeholder_text":"How much would you like to tip?","initial":{"instruction_type":"normal","instruction_message":"How much would you like to tip? Choose any currency."},"empty":{"instruction_type":"error","instruction_message":"How much would you like to tip? Choose any currency."},"invalid_curency":{"instruction_type":"error","instruction_message":"Please choose a valid currency."}},"recurring":{"placeholder_text":"Recurring","initial":{"instruction_type":"normal","instruction_message":"How often would you like to give this?"},"success":{"instruction_type":"success","instruction_message":"How often would you like to give this?"},"empty":{"instruction_type":"error","instruction_message":"How often would you like to give this?"}},"name":{"placeholder_text":"Name on Credit Card","initial":{"instruction_type":"normal","instruction_message":"Enter the name on your card."},"success":{"instruction_type":"success","instruction_message":"Enter the name on your card."},"empty":{"instruction_type":"error","instruction_message":"Please enter the name on your card."}},"privacy_policy":{"terms_title":"Terms and conditions","terms_body":null,"terms_show_text":"View Terms","terms_hide_text":"Hide Terms","initial":{"instruction_type":"normal","instruction_message":"I agree to the terms."},"unchecked":{"instruction_type":"error","instruction_message":"Please agree to the terms."},"checked":{"instruction_type":"success","instruction_message":"I agree to the terms."}},"email":{"placeholder_text":"Your email address","initial":{"instruction_type":"normal","instruction_message":"Enter your email address"},"success":{"instruction_type":"success","instruction_message":"Enter your email address"},"blank":{"instruction_type":"error","instruction_message":"Enter your email address"},"not_an_email_address":{"instruction_type":"error","instruction_message":"Make sure you have entered a valid email address"}},"note_with_tip":{"placeholder_text":"Your note here...","initial":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"empty":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"not_empty_initial":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"saving":{"instruction_type":"normal","instruction_message":"Saving note..."},"success":{"instruction_type":"success","instruction_message":"Note successfully saved!"},"error":{"instruction_type":"error","instruction_message":"Unable to save note note at this time. Please try again."}},"email_for_login_code":{"placeholder_text":"Your email address","initial":{"instruction_type":"normal","instruction_message":"Enter your email to log in."},"success":{"instruction_type":"success","instruction_message":"Enter your email to log in."},"blank":{"instruction_type":"error","instruction_message":"Enter your email to log in."},"empty":{"instruction_type":"error","instruction_message":"Enter your email to log in."}},"login_code":{"initial":{"instruction_type":"normal","instruction_message":"Check your email and enter the login code."},"success":{"instruction_type":"success","instruction_message":"Check your email and enter the login code."},"blank":{"instruction_type":"error","instruction_message":"Check your email and enter the login code."},"empty":{"instruction_type":"error","instruction_message":"Check your email and enter the login code."}},"stripe_all_in_one":{"initial":{"instruction_type":"normal","instruction_message":"Enter your credit card details here."},"empty":{"instruction_type":"error","instruction_message":"Enter your credit card details here."},"success":{"instruction_type":"normal","instruction_message":"Enter your credit card details here."},"invalid_number":{"instruction_type":"error","instruction_message":"The card number is not a valid credit card number."},"invalid_expiry_month":{"instruction_type":"error","instruction_message":"The card's expiration month is invalid."},"invalid_expiry_year":{"instruction_type":"error","instruction_message":"The card's expiration year is invalid."},"invalid_cvc":{"instruction_type":"error","instruction_message":"The card's security code is invalid."},"incorrect_number":{"instruction_type":"error","instruction_message":"The card number is incorrect."},"incomplete_number":{"instruction_type":"error","instruction_message":"The card number is incomplete."},"incomplete_cvc":{"instruction_type":"error","instruction_message":"The card's security code is incomplete."},"incomplete_expiry":{"instruction_type":"error","instruction_message":"The card's expiration date is incomplete."},"incomplete_zip":{"instruction_type":"error","instruction_message":"The card's zip code is incomplete."},"expired_card":{"instruction_type":"error","instruction_message":"The card has expired."},"incorrect_cvc":{"instruction_type":"error","instruction_message":"The card's security code is incorrect."},"incorrect_zip":{"instruction_type":"error","instruction_message":"The card's zip code failed validation."},"invalid_expiry_year_past":{"instruction_type":"error","instruction_message":"The card's expiration year is in the past"},"card_declined":{"instruction_type":"error","instruction_message":"The card was declined."},"missing":{"instruction_type":"error","instruction_message":"There is no card on a customer that is being charged."},"processing_error":{"instruction_type":"error","instruction_message":"An error occurred while processing the card."},"invalid_request_error":{"instruction_type":"error","instruction_message":"Unable to process this payment, please try again or use alternative method."},"invalid_sofort_country":{"instruction_type":"error","instruction_message":"The billing country is not accepted by SOFORT. Please try another country."}}}},"fetched_oembed_html":false}
So its basically Bookings just that there are no “services” which more than one person can “serve”? And that its usable directly from outlook instead of the separate Bookings app/website?
Booking is an app for a group of people to schedule the delivery of services, like IT consulting or healthcare.
Booking with me is a way for someone to allow other people (internal and external) to schedule meetings with them.
Do you know if there is, or will ever be, a way for admins to determine if a user has a Bookings with Me page created? I was looking for ways using PowerShell or other means to determine a)Do they have a Public booking page? and b)What is the unique “bookwithme/user/@domain” address of their page. I could then use that to automatically include a link in our company signature software.
There doesn’t seem to be a public API available for now. At least, I haven’t found one.
We are also working on a similar use case wherein we need to determine if public booking page is available for a user and if yes then get the url of the page. Didn’t find any way to achieve this.
It doesn’t seem that Microsoft has exposed a method to get the public booking page of a user programmatically. Have you asked Microsoft Support? They might be able to get some advice from the engineering team.
Obtaining the URL is rather easy. It seems to be in the form of “https://outlook.office.com/bookwithme/user/@?anonymous” for all users. You can use “Get-Mailbox -ID “” | Select-Object ExchangeGuid” to obtain the GUID. The part that I struggle with is determining if the user has it set up or not. If it is not set up the URL will fail. I did at one point locate where the Bookings settings are stored within the mailbox. I believe i was using EWSEditor or a similar tool. I *think* it was under “IPM.Configuration.Booking.SelfService.Publishing”. I was unable to find a programmatic method of obtaining this information though.
I guess you could run through the mailboxes and test if valid URLs exist for each mailbox. If one does, you could use a custom attribute to store a value to say that the URL exists.
Can you provide specific examples of when public and private booking types should be used? A few hypothetical examples would be helpful.
Public bookings might allow anyone in the organization to book a time slot with someone. Private bookings (which could cover a longer slot) might be restricted to the members of someone’s team.
Thanks for the explanation. Next feature MS will need to add is how to delete a calendar once created.
How can I let the public view my free busy time from my main calendar?
https://learn.microsoft.com/en-us/outlook/troubleshoot/calendaring/how-to-use-internet-freebusy-feature
Is it possible to make Bookings with me available more than 90 days in advance?
I don’t believe so.
Thanks for your answer!
It appears after much troublshooting that Bookings with Me Private meeting link is redirectling to the Public page and therefore receiving an error re ‘ No public meetings are available
The user is not accepting any public meetings through the booking page right now. Please contact them directly or check back here later.’. I have found online the same report but no reply from MS. Do you have any insight into this problem?
No insight. Sounds like you should file a support incident with Microsoft. They can look at the user’s setup. I cannot.
I am noticing the same thing! It is very frustrating when I need the private link to book over an over. But my clients are getting the same message even though I did not share the link to only be able to be booked once.
Doesn’t work on mobile. When you leave the booking page to retrieve the verification code the booking is lost and you have to start again.
Outlook mobile is a radically different environment for apps to work in…
Thanks Tony but I meant a different use case: I emailed my bookings page link to someone who opened the email on their mobile device and attempted to book a meeting on their mobile device (Android, in this example).
They got stuck in an eternal loop of: book a time; enter verification code window pops up, exit the booking page to retrieve code, return to the booking page but the ‘enter verification code’ window has closed and the booking has not been saved, rebook meeting, retrieve code, lose meeting…
Which effectively makes the Booking with Me tool useless as the 50%(?) of people who access their email on mobile will not be able to use the link.
Unless I’m missing something?
You’re not missing anything. If I was a cynic, I’d say something like maybe Microsoft didn’t test this scenario…
So maybe you should report it to Microsoft support to make sure that the bug is formally registered and passed to Outlook engineering to be fixed…
For orgs who have external sharing / public links turned off at tenant level, to comply with wider policies and/or things like cyber essentials, is there still a way to use this feature?
The sharing links will work internally. If you turn off external sharing, it just means that you won’t be able to use them outside the tenant.
Would the scheduler be able to specify a location?
I believe that’s in the control of the person who owns the calendar.