🚀 Coming Soon to AppExchange — 2026

multiDatePickBooking

Book Resources Across Multiple Dates in Salesforce. Visual time-slot grid with real-time conflict detection for rooms, equipment, vehicles, and people.

Install from AppExchange
multiDatePickBooking component in action

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.

⚡ Lightning Page Instructions

1

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):

FieldTypePurpose
NameText (standard)Display name shown in the resource dropdown
Business_Hours_Start__cTimeWhen the resource becomes available each day
Business_Hours_End__cTimeWhen the resource stops being available

Booking Object (e.g. Room_Booking__c):

FieldTypePurpose
Booking_Date__cDateThe date of the reservation
Start_Time__cTimeWhen the booking starts
End_Time__cTimeWhen the booking ends
Room__cLookup (to Resource)Which resource is booked
Travel__cLookup (to Parent)Links to the parent record (optional)
💡
Note: {!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.
2

Drop It In

Drag multiDatePickBooking onto your Record Page in App Builder and configure:

Resource Object Settings

  • resourceObjectApiName — the resource object, e.g. Room__c
  • resourceNameField — display name field, usually Name
  • businessHoursStartField — availability start time field, e.g. Business_Hours_Start__c
  • businessHoursEndField — availability end time field, e.g. Business_Hours_End__c
  • allowMultipleResources — set to ON to let users book multiple resources at once

Booking Object Settings

  • resourceBookingObject — the booking object, e.g. Room_Booking__c
  • bookingDateField — the Date field, e.g. Booking_Date__c
  • bookingStartTimeField — the Start Time field, e.g. Start_Time__c
  • bookingEndTimeField — the End Time field, e.g. End_Time__c
  • bookingResourceField — lookup to the resource, e.g. Room__c
  • relationshipFieldApiName — lookup to the parent record, e.g. Travel__c
3

What Comes Out

Booking records created automatically. When a user selects a resource, picks dates, chooses time slots on the grid, and clicks Book, the component auto-creates one booking record per selected time slot. Existing bookings show as unavailable (pink/red) on the time grid so users can't double-book. For multiple resources, only slots available across all selected resources are shown.

🔄 Flow Instructions

1

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 NameTypeCollection?Notes
{!bookingSuccessCount}NumberNoHow many booking records were successfully created
{!bookingConflictDates}TextYesDates where bookings failed due to conflicts
2

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__c
  • resourceNameField — display name field, usually Name
  • businessHoursStartField — e.g. Business_Hours_Start__c
  • businessHoursEndField — e.g. Business_Hours_End__c
  • allowMultipleResources — ON to let users select multiple resources

Booking Object Settings

  • resourceBookingObject — the booking object, e.g. Room_Booking__c
  • bookingDateField — e.g. Booking_Date__c
  • bookingStartTimeField — e.g. Start_Time__c
  • bookingEndTimeField — e.g. End_Time__c
  • bookingResourceField — lookup to resource, e.g. Room__c
  • relationshipFieldApiName — lookup to parent, e.g. Travel__c

Output Wiring

  • bookingSuccessCount (Output) — wire to {!bookingSuccessCount}
  • bookingConflictDates (Output) — wire to {!bookingConflictDates}
3

What Comes Out

Auto-saved — no Loop/Create Records needed. The component handles record creation internally when the user clicks Book. Use {!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

PropertyTypeDefaultDescription
resourceObjectApiNameStringAPI name of the object storing your bookable resources.
resourceNameFieldStringNameField containing the resource's display name.
businessHoursStartFieldStringTime field defining when the resource becomes available.
businessHoursEndFieldStringTime field defining when the resource stops being available.
allowMultipleResourcesBooleanfalseWhen ON, users can select and book multiple resources at once.

Booking Record Configuration

PropertyTypeDefaultDescription
resourceBookingObjectStringAPI name of the object where booking records are created.
bookingDateFieldStringDate field on the booking object for the reserved date.
bookingResourceFieldStringLookup field pointing to the resource being booked.
bookingStartTimeFieldStringTime field for the booking start time.
bookingEndTimeFieldStringTime field for the booking end time.
relationshipFieldApiNameStringLookup field linking each booking to the parent record.

Time Slot Configuration

PropertyTypeDefaultDescription
timeIntervalInteger30Size of each bookable time slot in minutes. Options: 15, 30, or 60.
availabilityLookAheadDaysInteger180Number of days to check for resource availability.

Output Properties (Read-Only)

PropertyTypeDescription
bookingSuccessCountIntegerNumber of booking records successfully created.
bookingConflictDatesString[]Dates where bookings could not be created due to conflicts.