Shared Bookings
Custom questions in Microsoft Bookings
Every Microsoft Bookings form field: built-in customer fields, the two question types, required vs optional, the shared list, limits and where answers go.
Last updated 11 sources
A shared booking page collects two kinds of information: five built-in customer fields (name, email, phone, address and notes) and your own custom questions. Custom questions come in two types only, free text and single choice, and you switch them on per service from one list that every service on the page shares. Answers are stored on the appointment, not on the customer, and come out through the Bookings calendar, the export, Power Automate and Microsoft Graph.
Step-by-step setup is in adding required custom questions, and advice on what to ask and how to word it is in the custom questions best-practices guide. This chapter is the reference: every field, every limit, and where each answer ends up, as of October 2026.
Where the settings are#
| Setting | Where | Scope |
|---|---|---|
| Built-in fields and custom questions | Services → edit a service → Custom fields | Per service |
| The question list itself | Same panel, Add a question | Per booking page |
| Consent checkbox | Booking page → Customer data usage consent | Per booking page |
| Hide phone, address or notes everywhere | Microsoft 365 admin center → Settings → Org settings → Bookings → Restrict collection of customer data | Tenant |
| Stop people creating questions | Set-OrganizationConfig -BookingsCreationOfCustomQuestionsRestricted $true | Tenant |
Microsoft says tenant settings can take up to four hours to apply. Custom questions exist only on shared booking pages. Bookings with me (Microsoft now calls it Personal Bookings) has none; see custom questions on Bookings with me.
The built-in customer fields#
| Field | On a new service | Can be optional | Can be switched off | Admin can hide tenant-wide | Watch out for |
|---|---|---|---|---|---|
| Name | Shown, required | No | No | No | The page always requires a name |
| Customer email | Shown, required (per the Bookings FAQ) | Yes | The editor allows it | No | The only address Bookings sends the confirmation, reminders, Teams link and Manage booking button to |
| Phone number | Shown | Yes | Yes | Yes (BookingsPhoneNumberEntryRestricted) | SMS notifications need a number |
| Address | Shown | Yes | Yes | Yes (BookingsAddressEntryRestricted) | Lands in the export's Customer Address column |
| Notes | Shown | Yes | Yes | Yes (BookingsNotesEntryRestricted) | The page caps notes at 3,000 characters |
Microsoft contradicts itself on switching fields off. The service-setup article calls email, phone, address and notes "non-removable fields" that you can only make optional. The custom-questions article shows phone and notes deselected so customers aren't asked.
What we saw when testing (September 2026)#
The service data the public page loads stores each built-in field at one of three levels: required, optional or hidden. That matches the custom-questions article: deselecting a field hides it rather than making it optional. We read this from the page data; we didn't test the editor itself. The same data has a level for guest email addresses, which lets a customer add other people to the booking. Microsoft doesn't document guests for the shared page, although the export's Cc Attendees column says they can be added from the Teams app.
Never hide the email field and ask for an address in a custom question instead. Bookings treats a custom answer as plain text, so the customer gets no confirmation at all. Customers not receiving emails covers the fix.
Question types#
Graph lists two answer types, text and radioButton. The public page we captured offers the same two and nothing else. There's no checkbox, multi-select, drop-down, date, number or file type, no answer validation, and no conditional logic. The question data has no field that could hold a condition.
| You want to ask | What works in Bookings |
|---|---|
| "Tick all that apply" | One single-choice yes/no question per option, or one free-text question |
| A date, ID or reference number | Free text, with the format in the question ("Policy number, 8 digits") |
| Agreement to terms | Customer data usage consent, which records when consent was given, or a required single choice with one option, "I agree". See consent and privacy text |
| Extra questions for some customers only | A separate service with its own question set |
| A hint under the question | Not available. Put it in the wording or the service description |
| A document or photo | Not available. Ask by email after booking |
Required and optional#
- Required is set per service, not per question. Graph stores
isRequiredon the service's link to the question, so one question can be required for "First consultation" and optional for "Follow-up". - The page enforces it in the browser. We haven't tested whether the service itself rejects a booking that skips a required answer. In our tests it accepted bookings that the page would have blocked (one in the past, one over a busy block), so an integration that creates bookings through an API shouldn't count on the service to enforce Required.
- Staff see the questions too. When staff create a booking in the Calendar, the service's questions appear in the form. Microsoft doesn't say whether Required stops staff from saving without an answer.
- The admin wins. A field hidden with Restrict collection of customer data disappears even on services where it's marked required.
How the shared question list behaves#
- One list per booking page. Pages don't share questions. To reuse a question on another page you re-create it, or script it with Graph (
POST /solutions/bookingBusinesses/{id}/customQuestions). Microsoft offers a clone option when you create a page but doesn't say what it copies, so check the questions on a cloned page. - New questions arrive switched off. A question you create on one service shows up on every other service, disabled.
- Deleting is global. A deleted question disappears from every service. Deselect it on the service instead.
- Rewording is risky once bookings exist. Graph says each stored answer keeps "the properties of the custom question at the time of creation of the appointment". Expect older bookings to keep the old wording, which splits your data in the export's Custom Fields column.
- Hidden services keep their questions. A service with Publishing options off can still be booked from the Calendar, and staff see its questions there.
Limits as of October 2026#
| Limit | Value | Source |
|---|---|---|
| Question types | 2: free text, single choice | Graph, our capture |
| Questions per service or per page | Not published | |
| Length of a question or answer | Not published | |
| Notes field | 3,000 characters | Our capture of the page |
| Services per booking page | Microsoft says "should be limited to 50" | Service-setup article |
| Prefill from the page URL | Not supported. See prefilling the form | Q&A |
| Hidden or tracking question | Not available. The RefID URL parameter is the only hidden value. See passing UTM parameters | Our capture |
| Bookings with me | No custom questions, no required fields | Our capture, Q&A |
Where the answers show up#
| Place | Answers there? | Detail |
|---|---|---|
| Bookings Calendar → open the appointment | Yes | The place Microsoft documents for staff |
| Staff member's Outlook event | Not documented | Microsoft sends staff to the Bookings calendar to read answers. We haven't verified whether they're copied into the event |
| Customer's confirmation email | Not documented | Don't tell customers they'll get a copy of their answers |
| Export (TSV) | Yes | One Custom Fields column with "all the questions and answers related to a single booking" combined. Administrators only. Splitting it is covered in the Excel reporting guide |
| Customers list | No | The customer record holds name, email, phones and addresses only |
| Power Automate (Bookings connector, preview) | Yes | CustomQuestionAnswers for one-to-one bookings, Customers[].Answers for group services |
| Microsoft Graph | Yes | customQuestionAnswers on each entry in the appointment's customers collection |
In group services each attendee answers separately, so answers are stored per attendee, not per session.
If you parse single-choice answers, code defensively. Graph documents answer for text questions only and types selectedOptions as strings. The Power Automate connector types SelectedOptions as integers. The page we captured sent the chosen option's text in answer and its position, as a string, in selectedOptions. Prefer the option text when it's there, and map positions back to answerOptions when it isn't.
Gotchas#
- Questions vanished from every service at once. Check the tenant restrictions first. The page reads them and hides phone, address, notes or all custom questions across the organization.
- Add a question is missing or fails. Ask your admin whether
BookingsCreationOfCustomQuestionsRestrictedis set. - A question doesn't appear on the page. It's in the list but not selected for that service, or the service wasn't saved.
- Answers are personal data. They sit in the booking mailbox and in every export someone downloads. Collect only what changes the appointment; where Bookings stores data covers access and erasure requests.
Doing this with BookingsXP#
The BookingsXP booking widget shows your Bookings questions on your own site, keeps the ones Bookings marks Required as required, and can add a line of help text under each question, which the Microsoft page can't. It can also prefill name, email, phone and notes for known visitors, and answer one optional text question with the booking's source so it lands in the Custom Fields export column (see analytics). BookingsXP is independent and not affiliated with or endorsed by Microsoft.
- AnswerAdd required custom questions in Microsoft Bookings
- GuideCustom questions in Microsoft Bookings: best practices
- AnswerCan I add custom or required questions to Bookings with me?
- AnswerCan I prefill the Microsoft Bookings form from the URL?
- AnswerAdd a privacy notice or consent checkbox to Bookings
- GuidePass UTM parameters and gclid into Microsoft Bookings
Questions people also ask
Sources
- Microsoft Learn: Add questions (opens in a new tab) · learn.microsoft.com
- Microsoft Learn: Define service offerings (opens in a new tab) · learn.microsoft.com
- Microsoft Learn: Granular controls shared bookings (opens in a new tab) · learn.microsoft.com
- Microsoft Learn: Bookings faq (opens in a new tab) · learn.microsoft.com
- Microsoft Learn: Reporting info (opens in a new tab) · learn.microsoft.com
- Microsoft Learn: Set organizationconfig (opens in a new tab) · learn.microsoft.com
- Microsoft Learn (opens in a new tab) · learn.microsoft.com
- Microsoft Learn (opens in a new tab) · learn.microsoft.com
- Microsoft Learn (opens in a new tab) · learn.microsoft.com
- Microsoft Learn (opens in a new tab) · learn.microsoft.com
- Microsoft Learn (opens in a new tab) · learn.microsoft.com
Edit or question? hello@bookingsxp.com