multiDatePickBooking
Book Resources Across Multiple Dates in Salesforce. Visual time-slot grid with real-time conflict detection for rooms, equipment, vehicles, and people.
Overview
multiDatePickBooking is the most advanced component in the suite. It combines the calendar with a resource selection panel and a visual time-slot grid. Users pick a resource (or multiple resources), select dates, and then click available time slots to create bookings. The component queries your resource object for available items, checks for existing bookings to detect conflicts in real time, and creates booking records automatically.
Use this for conference room reservations, equipment checkout, vehicle scheduling, technician dispatch, or any scenario where a shared resource needs to be reserved on specific dates and times.
On This Page
⚡ Lightning Page Instructions
What You Need First
The Booking component requires two objects: a Resource object (what gets booked) and a Booking object (where reservations are stored).
Resource Object (e.g. Room__c):
| Field | Type | Purpose |
|---|---|---|
Name | Text (standard) | Display name shown in the resource dropdown |
Business_Hours_Start__c | Time | When the resource becomes available each day |
Business_Hours_End__c | Time | When the resource stops being available |
Booking Object (e.g. Room_Booking__c):
| Field | Type | Purpose |
|---|---|---|
Booking_Date__c | Date | The date of the reservation |
Start_Time__c | Time | When the booking starts |
End_Time__c | Time | When the booking ends |
Room__c | Lookup (to Resource) | Which resource is booked |
Travel__c | Lookup (to Parent) | Links to the parent record (optional) |
{!recordId} is passed automatically on Record Pages — you don't need to wire it manually. Create a few resource records (e.g. "Conference Room A", "Conference Room B") so the dropdown has items to show.Drop It In
Drag multiDatePickBooking onto your Record Page in App Builder and configure:
Resource Object Settings
resourceObjectApiName— the resource object, e.g.Room__cresourceNameField— display name field, usuallyNamebusinessHoursStartField— availability start time field, e.g.Business_Hours_Start__cbusinessHoursEndField— availability end time field, e.g.Business_Hours_End__callowMultipleResources— set to ON to let users book multiple resources at once
Booking Object Settings
resourceBookingObject— the booking object, e.g.Room_Booking__cbookingDateField— the Date field, e.g.Booking_Date__cbookingStartTimeField— the Start Time field, e.g.Start_Time__cbookingEndTimeField— the End Time field, e.g.End_Time__cbookingResourceField— lookup to the resource, e.g.Room__crelationshipFieldApiName— lookup to the parent record, e.g.Travel__c
What Comes Out
🔄 Flow Instructions
What You Need First
Same two objects as the Record Page section above (Resource + Booking). Then create these Flow variables to capture what happened after the user books:
| Variable Name | Type | Collection? | Notes |
|---|---|---|---|
{!bookingSuccessCount} | Number | No | How many booking records were successfully created |
{!bookingConflictDates} | Text | Yes | Dates where bookings failed due to conflicts |
Drop It In
Add a Screen element in Flow Builder, drag multiDatePickBooking onto it, and configure:
Resource Object Settings
resourceObjectApiName— the resource object, e.g.Room__cresourceNameField— display name field, usuallyNamebusinessHoursStartField— e.g.Business_Hours_Start__cbusinessHoursEndField— e.g.Business_Hours_End__callowMultipleResources— ON to let users select multiple resources
Booking Object Settings
resourceBookingObject— the booking object, e.g.Room_Booking__cbookingDateField— e.g.Booking_Date__cbookingStartTimeField— e.g.Start_Time__cbookingEndTimeField— e.g.End_Time__cbookingResourceField— lookup to resource, e.g.Room__crelationshipFieldApiName— lookup to parent, e.g.Travel__c
Output Wiring
bookingSuccessCount(Output) — wire to{!bookingSuccessCount}bookingConflictDates(Output) — wire to{!bookingConflictDates}
What Comes Out
{!bookingSuccessCount} to show a confirmation message like "Successfully booked 3 time slots." Use {!bookingConflictDates} in a Decision element to notify the user about dates that couldn't be booked due to conflicts.All Properties Reference
Display Properties
Shared display properties from multiDatePickDates are available (label, modalTitle, showInline, singleMonthView, calendarSize, weekStartsOnMonday, showRecurringPattern).
Constraint Properties
Shared constraint properties from multiDatePickDates are available (maxSelections, allowPastDates, minDate, maxDate).
Resource Configuration
| Property | Type | Default | Description |
|---|---|---|---|
resourceObjectApiName | String | — | API name of the object storing your bookable resources. |
resourceNameField | String | Name | Field containing the resource's display name. |
businessHoursStartField | String | — | Time field defining when the resource becomes available. |
businessHoursEndField | String | — | Time field defining when the resource stops being available. |
allowMultipleResources | Boolean | false | When ON, users can select and book multiple resources at once. |
Booking Record Configuration
| Property | Type | Default | Description |
|---|---|---|---|
resourceBookingObject | String | — | API name of the object where booking records are created. |
bookingDateField | String | — | Date field on the booking object for the reserved date. |
bookingResourceField | String | — | Lookup field pointing to the resource being booked. |
bookingStartTimeField | String | — | Time field for the booking start time. |
bookingEndTimeField | String | — | Time field for the booking end time. |
relationshipFieldApiName | String | — | Lookup field linking each booking to the parent record. |
Time Slot Configuration
| Property | Type | Default | Description |
|---|---|---|---|
timeInterval | Integer | 30 | Size of each bookable time slot in minutes. Options: 15, 30, or 60. |
availabilityLookAheadDays | Integer | 180 | Number of days to check for resource availability. |
Output Properties (Read-Only)
| Property | Type | Description |
|---|---|---|
bookingSuccessCount | Integer | Number of booking records successfully created. |
bookingConflictDates | String[] | Dates where bookings could not be created due to conflicts. |
