Coming Soon to AppExchange — 2026

Config Library

32 ready-to-import configs covering 45+ real-world scheduling scenarios. Answer 3 quick questions below to find your match — or browse by component. Paste the JSON into the Setup Wizard, map the demo field names to your own org's schema, and deploy in seconds.

Browse All

New here? Start with the install & setup guide →

How importing a config works

These sample configs are built against MultiDatePick's bundled demo objects (Schedule__c, Event__c, Resource__c). Your org will almost always use its own objects and field names — that's expected and supported.

  1. Download the config JSON below.
  2. Paste it into the wizard's Import tab (App Launcher → MultiDatePick Setup Wizard → Existing Configurations → Import).
  3. Map the fields: if any objects or fields referenced in the JSON don't exist in your org, the wizard will surface a Smart Field Mapping panel listing every missing reference with a dropdown of your org's matching objects/fields. Pick the replacement for each and click Apply & Deploy.

No code, no XML editing. The wizard rewrites the config with your selections before the metadata deploy, so the imported config lands ready to drop on a record page in your org. If everything already matches (e.g. you're cloning between sandboxes), the mapping step is skipped automatically.

Find your config

Answer the 3 questions to narrow the list — same questions the in-org Setup Wizard asks. Skip any question to keep that dimension open.

1Do you need to capture times?
2Do you need a resource picker?
3Should adjacent dates consolidate?

New to importing? See the 3-step walkthrough →

Date Selection Configurations

Configs for Date — multi-date selection without time slots. Best for tracking dates, marking availability, and scheduling events.

Date

Employee Time-Off Request

Employees select PTO or vacation days on a calendar. Consecutive dates are consolidated into a single record with start and end dates. Recurring patterns let users select "every Friday" or bi-weekly schedules.

Key properties:
endDateField date range consolidation, statusColors Pending/Approved/Rejected, showRecurringPattern, twoMonthView, enableEditMode, weekStartsOnMonday
Date

Facility Blackout Dates

Administrators mark facility closure or blackout dates. Existing closures are preloaded in read-only mode so they can't be accidentally removed. Status colors distinguish between active, planned, and resolved closures.

Self-referencing pattern: blocked dates pull from the same Schedule__c table as the bookings themselves. Records in that table block selection on their date. Point blockedDatesSourceObject at a different object if you'd rather separate closures from bookings.
Key properties:
endDateField date range consolidation, preloadMode readonly, blockedDatesSourceObject, statusColors Active/Planned/Resolved, twoMonthView
Date

Student Absence Tracking

Teachers or administrators record student absences. Past dates are allowed so absences can be logged retroactively. Status colors categorize each absence as excused, unexcused, medical, or pending review.

Key properties:
allowPastDates true, statusColors Excused/Unexcused/Medical/Pending, maxSelections 20, twoMonthView, enableEditMode, weekStartsOnMonday
Date

Court & Hearing Dates

Legal teams schedule hearing dates for cases. Multi-day hearings use date range consolidation. Cancelled dates are hidden from the calendar. Status colors track each hearing's progress from scheduled to completed.

Key properties:
endDateField date range consolidation, statusColors Scheduled/Continued/Completed/Cancelled, hideBookingsWithStatus Cancelled, maxSelections 10, enableEditMode
Date

Content Publishing Calendar

Marketing teams plan content publishing schedules linked to campaigns. Holidays and blackout dates block content scheduling on closed days. Hover tooltips show the title, channel, and author for each scheduled date.

Self-referencing pattern: blocked dates pull from the same Schedule__c table by default — records flagged in that table block selection. Swap blockedDatesSourceObject for your own holidays object (e.g. Company_Holiday__c) if you keep closures separately.
Key properties:
blockedDatesSourceObject Schedule__c, statusColors Draft/Scheduled/Published/Cancelled, hideBookingsWithStatus, hoverFields Title/Channel/Author, showRecurringPattern, twoMonthView
Date

Volunteer Availability

Volunteers mark the dates they're available. Date range consolidation means a week of availability becomes one record instead of five. Recurring patterns let volunteers say "every Saturday" through the end of the quarter.

Key properties:
endDateField date range consolidation, showRecurringPattern, twoMonthView, enableEditMode, weekStartsOnMonday
Date

Compliance Audit Schedule

Compliance teams schedule audit dates for accounts. Multi-day audits use date range consolidation. Hover tooltips show the assigned auditor and audit type at a glance. Status colors track progress from planned through completion or failure.

Key properties:
endDateField date range consolidation, statusColors Planned/In Progress/Completed/Failed, hoverFields Auditor/Audit_Type, maxSelections 12, enableEditMode, twoMonthView
Date

On-Call Rotation

Managers assign on-call coverage across a team. Recurring patterns make it easy to set weekly rotations. Status colors distinguish primary, secondary, and backup roles at a glance on the calendar.

Key properties:
showRecurringPattern, statusColors Primary/Secondary/Backup, twoMonthView, enableEditMode, weekStartsOnMonday
Date

Conference Multi-Day Pass

Attendees pick the days they'll attend a multi-day conference. Adjacent days collapse into a single pass record with a start date and end date — a 3-day attendee gets one pass, not three separate records. Non-adjacent picks (e.g. only Day 1 + Day 3) each get their own record.

Key properties:
endDateField for date-range collapse, twoMonthView, showSelectedSummary, statusColors Issued/Pending/Refunded, hideBookingsWithStatus Refunded, enableEditMode
No Date configs match this filter.

Date & Time Configurations

Configs for Date Time — date selection with per-date time assignment. Best for appointments, shifts, sessions, and anything that needs start/end times.

Date Time

Interview Scheduling

Recruiters schedule multi-round interviews across several days. 30-minute slots with conflict detection prevent double-booking. Consolidated time span merges adjacent slots into a single block.

Key properties:
timeInterval 30 min, conflictBehavior block, consolidateTimeSpan, groupTimeSlotsByPeriod, maxSelections 5, enableEditMode, conflictLookAheadDays 90
Date Time

Shift Scheduling

Operations managers build shift schedules across a team. Extended hours (6 AM – 10 PM) cover all shift types. Recurring patterns enable weekly rotation templates. Different times per date let managers mix morning and evening shifts.

Key properties:
timeInterval 60 min, minTime 06:00 / maxTime 22:00, allowDifferentTimes, showRecurringPattern, consolidateTimeSpan, statusColors Scheduled/Swap Requested/Open, twoMonthView
Date Time

Appointment Booking

Service businesses schedule client appointments with conflict prevention. Status colors show confirmed, pending, and cancelled slots at a glance. Hover tooltips reveal appointment type and notes without clicking.

Key properties:
timeInterval 30 min, conflictBehavior block, consolidateTimeSpan, groupTimeSlotsByPeriod, statusColors Confirmed/Pending/Cancelled/No Show, hideBookingsWithStatus Cancelled, statusColorDisplay grid, hoverFields Type/Notes
Date Time

Tutoring Sessions

Students or tutors schedule recurring tutoring sessions in afternoon/evening hours. Conflict detection prevents overlapping sessions. Recurring patterns let students book "every Tuesday at 4 PM" for the semester.

Key properties:
timeInterval 60 min, minTime 15:00 / maxTime 21:00, conflictBehavior block, showRecurringPattern, maxSelections 5, statusColors Scheduled/Completed/Cancelled/No Show, hideBookingsWithStatus Cancelled
Date Time

Maintenance Windows

IT teams schedule overnight maintenance windows for assets and infrastructure. Conflict behavior is set to "warn" instead of "block" — teams can intentionally overlap maintenance if needed. Hover fields show change number, description, and impact assessment.

Overnight time range: minTime 22:00 → maxTime 06:00 crosses midnight. Slot generation handles this; verify the calendar renders the way you expect before training admins.
Key properties:
timeInterval 60 min, minTime 22:00 / maxTime 06:00 (overnight), conflictBehavior warn, endDateField multi-day windows, statusColors Planned/In Progress/Completed/Failed, statusColorDisplay grid, hoverFields Description/Impact/Change_Number, conflictLookAheadDays 180
Date Time

Property Showings

Real estate agents schedule property showings. Different times per date let agents block different windows for different properties. Hover tooltips show the assigned agent and buyer name without opening the record.

Key properties:
timeInterval 30 min, minTime 09:00 / maxTime 19:00, allowDifferentTimes, conflictBehavior block, groupTimeSlotsByPeriod, maxSelections 10, statusColors Scheduled/Confirmed/Cancelled/Completed, hoverFields Agent/Buyer_Name
Date Time

Office Hours

Professors or advisors publish their office hours on a calendar. 15-minute slots provide granular scheduling. Recurring patterns let instructors set "Mon/Wed/Fri 2–4 PM" for the entire semester in one click.

Key properties:
timeInterval 15 min, groupTimeSlotsByPeriod, consolidateTimeSpan, showRecurringPattern, twoMonthView, weekStartsOnMonday, conflictBehavior block
Date Time

Exam Scheduling

Academic departments schedule exam sessions for courses. Conflict detection prevents scheduling two exams in the same slot. Status colors track progress from scheduled through completion. Hover shows assigned room and proctor.

Key properties:
timeInterval 60 min, conflictBehavior block, consolidateTimeSpan, groupTimeSlotsByPeriod, maxSelections 4, statusColors Scheduled/In Progress/Completed/Rescheduled, statusColorDisplay grid, hoverFields Room/Proctor, conflictLookAheadDays 120
Date Time

Compliance Rest Periods

For shifts with mandated rest periods (DOT, healthcare, manufacturing). The shift saves as one parent record covering the full envelope; required rest periods become child sub-block records that auditors can review. 15-minute granularity for fine-grained rest tracking.

Sub-Blocks: rest periods are stored as child records on the bundled Sub_Block__c object — no extra schema setup required. Point subBlockObjectApiName at your own child object if you'd rather use a custom name.
Key properties:
consolidateTimeSpan, subBlockObjectApiName Sub_Block__c, subBlockModeButtonLabel Mark as Rest, timeInterval 15 min, statusColors Compliant/Review/Flagged, allowPastDates
No Date Time configs match this filter.

Resource Booking Configurations

Configs for Booking — date and time selection with resource management. Best for rooms, equipment, people, facilities, and anything with availability or capacity limits.

Booking

Meeting Room Booking

Employees reserve conference rooms with live capacity badges. Status colors distinguish confirmed, pending, and cancelled bookings. Cancelled bookings are hidden from the grid and don't count toward capacity.

Key properties:
capacityField, showAvailabilityCount, statusColors Confirmed/Pending/Cancelled, hideBookingsWithStatus Cancelled, statusColorDisplay grid, groupTimeSlotsByPeriod, conflictBehavior block, enableEditMode
Booking

Equipment Checkout

IT or AV teams manage shared equipment reservations. 60-minute slots cover typical checkout durations. Business hours fields ensure equipment is only bookable during operating hours.

Key properties:
timeInterval 60 min, businessHoursStartField / businessHoursEndField, conflictBehavior block, enableEditMode
Booking

Desk Hoteling

Employees reserve shared desks in a hybrid workplace. The time slot grid is disabled — desks are booked for the full day. Capacity tracking shows how many seats remain at shared tables. Two-month view helps plan weeks ahead.

Date-only Booking: disableTimeSlotGrid removes the hourly slot grid entirely. Best when bookings are full-day and capacity is the only constraint. Combine with capacityField to model any shared inventory (desks, lockers, parking spots).
Key properties:
disableTimeSlotGrid (full-day booking), capacityField, showAvailabilityCount, statusColors Reserved/Checked In/Cancelled, hideBookingsWithStatus Cancelled, twoMonthView, enableEditMode
Booking

Lab & Studio Booking

Research labs, recording studios, or maker spaces with capacity limits. Status colors distinguish between reserved, in-use, and maintenance slots. Hover tooltips show the purpose and equipment needed for each booking.

Key properties:
capacityField, showAvailabilityCount, businessHoursStartField / businessHoursEndField, statusColors Reserved/In Use/Available/Maintenance, hideBookingsWithStatus Maintenance, statusColorDisplay grid, hoverFields Purpose/Equipment_Needed, groupTimeSlotsByPeriod
Booking

Vehicle & Fleet Reservation

Fleet managers handle vehicle checkout for field teams. Extended hours (6 AM – 8 PM) accommodate early departures and late returns. Consolidated time span merges adjacent slots into a single booking block. Hover shows purpose and destination.

Key properties:
timeInterval 60 min, minTime 06:00 / maxTime 20:00, consolidateTimeSpan, statusColors Reserved/In Transit/Returned/Cancelled, hideBookingsWithStatus Cancelled, statusColorDisplay grid, hoverFields Purpose/Destination, groupTimeSlotsByPeriod
Booking

Therapist Scheduling

Healthcare practices schedule therapy sessions per therapist. Recurring patterns let patients book a standing weekly session. Cancelled bookings are hidden from the grid. Availability badges show each therapist's open slots.

Key properties:
showAvailabilityCount, showRecurringPattern, statusColors Confirmed/Pending/Cancelled/No Show, hideBookingsWithStatus Cancelled, statusColorDisplay grid, hoverFields Session_Type/Notes, businessHoursStartField / businessHoursEndField, enableEditMode
Booking

Athletic Facility Booking

Gyms, courts, and fields with capacity limits. Extended hours (6 AM – 10 PM) cover early-morning and evening sessions. Multiple resources enabled so members can book a court and a batting cage in one flow.

Multi-resource mode: allowMultipleResources swaps the single-resource dropdown for checkboxes. The time grid renders combined capacity across whatever resources the user has selected, and bookings can span multiple resources atomically.
Key properties:
capacityField, showAvailabilityCount, allowMultipleResources, minTime 06:00 / maxTime 22:00, statusColors Reserved/Walk-In/Cancelled, hideBookingsWithStatus Cancelled, statusColorDisplay grid, groupTimeSlotsByPeriod
Booking

Multi-Site Workshop

A trainer leads ONE session that runs simultaneously across linked rooms (overflow seating, hybrid sites, livestream studios). With capacityAggregation = Distinct, picking 4 rooms for a 2 PM session shows 1/MAX-cap — one event, not four — so the count tracks distinct sessions rather than per-room inventory.

When to pick Distinct vs Combined: use Distinct when one logical event uses several resources together (a workshop running in 4 rooms = 1 booking). Use the default Combined when resources contribute independently (a catering bundle with 3 ovens + 2 warmers sums to 5 used).
Key properties:
capacityField, capacityAggregation Distinct, allowMultipleResources, minTime 08:00 / maxTime 18:00, statusColors Confirmed/Tentative/Cancelled, hideBookingsWithStatus Cancelled, enableEditMode
Booking

Active Conference Rooms (Filtered Picker)

Showcases resourceFilterField + resourceFilterValue with the multi-field AND syntax — picker shows only resources where Active__c = true AND Resource_Type__c = 'Conference Room'. The semicolon separator combines both filters; admins can swap in any field/value pair from the resource object.

Filter syntax cheatsheet: ; between fields = AND, , between values = OR. Field count on each side of ; must match. Examples: Resource_Type__c=Conference Room · Building__c=North,South (OR) · Resource_Type__c;Building__c=Conference Room;North,South (AND with OR inside the second field).
Key properties:
resourceFilterField Active__c;Resource_Type__c, resourceFilterValue true;Conference Room, capacityField, allowMultipleResources, statusColors Confirmed/Pending/Cancelled, hideBookingsWithStatus Cancelled, enableEditMode
Booking

Catering Equipment Bundle

Reserve multiple independent pieces of equipment (ovens, warmers, serving stations, beverage carts) for the same event. Each item has its own capacity, and capacityAggregation = Combined sums everything — so 3 ovens used out of 5 oven inventory + 2 warmers used out of 4 reads as 5/9 across the bundle.

Multi-resource + Combined capacity (default): sums bookings AND capacities across the checked resources. The "5/9" badge tells operators they have 4 spots left across the whole bundle without having to mentally add up per-resource counts.
Key properties:
capacityField, capacityAggregation Combined, allowMultipleResources, timeInterval 30, minTime 07:00 / maxTime 21:00, statusColors Confirmed/Pending/Cancelled, hideBookingsWithStatus Cancelled, enableEditMode
Booking

Salon & Spa Booking

Clients book appointments with specific stylists or therapists. Auto-jump takes users straight to the first available slot. Both cancelled and no-show bookings are hidden from the grid. Hover shows service type, estimated duration, and notes.

Key properties:
timeInterval 30 min, autoJumpToFirstAvailable, consolidateTimeSpan, showAvailabilityCount, statusColors Booked/Walk-In/Cancelled/No Show, hideBookingsWithStatus Cancelled & No Show, statusColorDisplay grid, hoverFields Service/Duration/Notes
Booking

Multi-Day Vehicle Rental

Customers reserve a vehicle for multiple consecutive days. Adjacent days collapse into a single reservation record per vehicle — a Mon-Fri rental creates one record (start: Mon, end: Fri), not five separate daily records. No time slots since the rental spans full days.

Date-span Booking without a time grid: endDateField + disableTimeSlotGrid together model a multi-day rental as a single record with start/end. Saves reporting joins downstream — one Mon→Fri rental is one row, not five.
Key properties:
endDateField for date-range collapse on Booking, disableTimeSlotGrid full-day mode, conflictBehavior block, statusColors Confirmed/Pending/Returned/Cancelled, hideBookingsWithStatus Cancelled, twoMonthView, enableEditMode
Booking

Trainer Day With Breaks

Trainers book a full day on a resource (room, vehicle, equipment). The day saves as one parent record from the first slot to the last; lunch and breaks become child sub-block records. Click "Mark as Break" to flag a slot manually, or just leave gaps and they auto-detect.

Sub-Blocks on Booking: the bundled Sub_Block__c child object stores break records linked to the parent Schedule via subBlockParentLookupField. No extra schema setup required — both objects ship in the package.
Key properties:
consolidateTimeSpan, subBlockObjectApiName Sub_Block__c, subBlockParentLookupField Schedule__c, subBlockModeButtonLabel Mark as Break, showSubBlockButton, statusColors Confirmed/Tentative/Pending/Cancelled, enableEditMode
Booking

Field Service Visit With Travel

Field technicians schedule visits where on-site time and travel-between-stops both matter. The visit envelope saves as one parent record; gaps between picked slots become child sub-block records labeled as travel. Track on-site time vs. drive time separately on the same booking.

Heaviest config in the library: full Sub-Block support on Booking — schedule, resource, and sub-block objects all bundled with the package. Reporting can roll up on-site time vs. drive time without custom joins.
Key properties:
consolidateTimeSpan, subBlockObjectApiName Sub_Block__c, subBlockModeButtonLabel Mark as Travel, conflictBehavior block, statusColors Confirmed/Dispatched/Completed/Cancelled, hoverFields Notes, enableEditMode
No Booking configs match this filter.

Object & Field Mapping

Each config references object and field API names that you'll need to replace with your own. Use the diagrams below to see which fields map to which objects.

Date Selection
Date — replace these fields with your object and field API names
Your Record Object
Related_Object__cObject API Name
Date_Field__cDate field
Relationship_Field__cLookup to parent
End_Date_Field__cDate range end (optional)
Status_Field__cPicklist field (optional)
Hover_Fields__cPopover detail fields (optional)
Blocked Dates Object Optional
Blocked_Dates_Source_Object__cObject API Name
Blocked_Dates_Date_Field__cDate field
Blocked_Dates_Filter_Field__cLookup to parent
Important: Every config in this library uses example object and field names. Before importing, open the JSON and replace the orange values with your org's actual object and field API names. If you use blocked dates, replace the red values too. Everything else in the config works as-is.
Date & Time
Date Time — replace these fields with your object and field API names
Your Record Object
Related_Object__cObject API Name
Date_Field__cDate field
Relationship_Field__cLookup to parent
Start_Time_Field__cTime field
End_Time_Field__cTime field
End_Date_Field__cDate range end (optional)
Status_Field__cPicklist field (optional)
Hover_Fields__cPopover detail fields (optional)
Sub-Block Object Optional
Sub_Block_Object_Api_Name__cObject API Name
Sub_Block_Parent_Lookup_Field__cLookup to parent
Sub_Block_Date_Field__cDate field
Sub_Block_Start_Time_Field__cStart time
Sub_Block_End_Time_Field__cEnd time
Sub_Block_Name_Field__cLabel field (optional)
Blocked Dates Object Optional
Blocked_Dates_Source_Object__cObject API Name
Blocked_Dates_Date_Field__cDate field
Blocked_Dates_Filter_Field__cLookup to parent

Sub-Block Use Cases

When Consolidate Time Span is enabled, gaps between selected time slots are automatically detected and saved as separate records on a child object. Users can also manually mark slots as sub-blocks.

  • Shift scheduling with breaks — Employee selects 8 AM – 5 PM; the 12 – 1 PM lunch gap auto-creates a record on a Break__c object
  • Travel itineraries — User blocks travel windows; layovers between flights become Travel_Leg__c records
  • Training schedules — Instructor selects teaching blocks; free periods between sessions save as Available_Slot__c records
  • Work schedules with appointments — Manager defines work hours; gaps for meetings or appointments auto-save to an Appointment__c object
Important: Every config in this library uses example object and field names. Before importing, replace the orange values with your record object and field API names. If you use sub-blocks, replace the purple values with your child object and fields. If you use blocked dates, replace the red values too. Everything else works as-is.
Resource Booking
Booking — replace these fields with your object and field API names
Your Record Object
Related_Object__cObject API Name
Date_Field__cDate field
Relationship_Field__cLookup to parent
Booking_Resource_Field__cLookup to resource
Start_Time_Field__cTime field
End_Time_Field__cTime field
Status_Field__cPicklist field (optional)
Hover_Fields__cPopover detail fields (optional)
linked via
lookup
Your Resource Object
Resource_Object__cObject API Name
Resource_Name_Field__cDisplay name
Business_Hours_Start_Field__cTime field
Business_Hours_End_Field__cTime field
Capacity_Field__cNumber field (optional)
Resource_Filter_Field__cFilter field (optional)
Resource_Filter_Value__cFilter value (optional)
Sub-Block Object Optional
Sub_Block_Object_Api_Name__cObject API Name
Sub_Block_Parent_Lookup_Field__cLookup to parent
Sub_Block_Date_Field__cDate field
Sub_Block_Start_Time_Field__cStart time
Sub_Block_End_Time_Field__cEnd time
Sub_Block_Name_Field__cLabel field (optional)
Blocked Dates Object Optional
Blocked_Dates_Source_Object__cObject API Name
Blocked_Dates_Date_Field__cDate field
Blocked_Dates_Filter_Field__cLookup to parent
Important: Every config in this library uses example object and field names. Before importing, replace the orange values with your record object and field API names, and the green values with your resource object and fields. The purple values are only needed for Parent + Sub-Blocks configs (consolidateTimeSpan); the red values only for blocked dates. Everything else works as-is.
Hover Fields Example
When Hover_Fields__c is set (e.g. "Service__c,Duration__c,Status__c"), hovering a booked time slot or date cell shows a popover like this:
April 22, 2026 · 2 bookings
Service: Haircut & Color
Duration: 90
Status: Confirmed
View Record →
Service: Beard Trim
Duration: 30
Status: Pending
View Record →
Popover appears on hover over booked time slots in the grid and on date cells in the calendar.

Don't see your use case?

Reach out and I'll help you build a custom config — or use the Setup Wizard to create one from scratch.

Email Support@MultiDatePick.com Open Setup Wizard Guide

Troubleshooting

Quick fixes for the most common setup snags — especially when placing the component on an App Page, Home Page, or Experience Site. For the full walkthrough, see App / Home / Experience Pages.

The Save button never appears

One of the four requirements is missing. On App/Home/Experience, the usual culprit is an empty Static Record Id. Confirm the Related Object, Date Field, and Relationship Field properties are filled too.

Calendar loads, but saving does nothing / errors

The user can't access the objects. Assign the MultiDatePick permission set (or, on an Experience Site, grant the member/guest profile read/create on the objects and fields).

"Field does not exist" on save

The object or field API name doesn't match the schema — usually a typo or the wrong field. Use the exact API name from Setup → Object Manager. You only need a namespace prefix when pointing at an object from another installed package (e.g. acme__Visit_Date__c); your own objects — and the bundled demo objects — don't require one.

Community members can't see records they created

Experience Site sharing. Add a sharing rule (or set org-wide defaults) so the member or guest user can see the records on the related object.

Saves, but nothing shows when they refresh the page

Turn on preloadExistingDates so the component loads existing records for that parent each time it opens.

Static Record Id "isn't valid"

It must be a real 15- or 18-character Id of the parent object — the one your Relationship Field API Name points to — not some other record.