Screen Flow Guide

Put a MultiDatePick calendar in any Salesforce Screen Flow. Drop the component on a screen, set Config Name, and you are done.

No Apex required
  1. 1Save a configSetup Wizard or Config Library
  2. 2Drop it on a screenSearch MultiDatePick
  3. 3Set Config NameSave, Debug, Activate

One property: Config Name

Build the config once in the Setup Wizard, or import one from the Config Library. In the flow you set one property and the component loads the rest.

Animated demo in Salesforce Flow Builder: open a screen, search MultiDatePick, drag the Resource Booking component onto the screen, set Config Name to a saved Setup Wizard config, click Done and Save
Drag in the component, set Config Name, Done, Save. Nothing else to map.
  • Open a Screen
  • Search MultiDatePick
  • Drag on Booking, Date or Date Time
  • Config Name
  • Save

Every checkbox comes from the config. With Config Name set you never touch a checkbox in Flow Builder. Text and number properties you fill in on the screen override the config.

Save against a record

Bind Parent Record Id to the record the flow runs for, such as {!recordId} or a Get Records result. The component then saves its records linked to that parent. On Date and Date Time, leave it blank and the selection passes to the flow instead.

Build it from a blank flow

Five minutes in Flow Builder. Nothing to deploy: you test it with Debug.

1. New Screen Flow

Setup, Flows, New Flow, Screen Flow, Create.

Creating a new Salesforce Screen Flow in Setup to host a MultiDatePick component
2. Add a Screen

Add a Screen element to the canvas.

Adding a Screen element to a Salesforce Screen Flow
3. Drag on the component

Search MultiDatePick in the component list and drag it on.

Dragging the MultiDatePick Booking component onto a Salesforce flow screen
4. Set Config Name

Type the config name exactly as the wizard saved it. Bind Parent Record Id if the records belong to a parent.

5. Save and Debug

Click Debug, pick dates or time slots, and check the records were created. Then Activate and add the flow to a record page, an action button or an Experience Cloud site.

What the flow gets back

Booking saves its own bookings. Date and Date Time hand the selection to the flow, or save it themselves when Parent Record Id is set.

ComponentOutput (label in Flow Builder)API name
BookingSuccessful Bookings Count, Conflict DatesbookingSuccessCount, bookingConflictDates
DateSelected Dates, Date Ranges JSONselectedDates, selectedDateRangesJson
Date TimeDates With Times JSONselectedDatesWithTimesJson
Animated demo of a Salesforce Screen Flow time off request: the user clicks three days on a MultiDatePick calendar, submits, and the next flow screen lists the three dates the flow received
Three days picked, three dates passed to the next screen.

No Apex required: the ready-made Flow actions

You never write Apex. To turn Date or Date Time JSON into records, use the three pieces that ship with the package. They appear in Flow Builder like any standard action.

  • Parse Date Entries from JSON
  • Loop its entries
  • Create Records, one per entry
Flow action Parse Date Entries from JSON

Search for it under Action. Feed it Date Ranges JSON or Dates With Times JSON. Date only or date and time is detected for you.

Class: MultiDatePickParser

Data type MultiDatePickEntryCollection

What the action returns. Store it in an Apex-Defined variable and loop data.

  • data: the entries to loop
  • totalCount: how many
  • success, errorMessage: for a Decision
Data type MultiDatePickEntry

One entry, your loop variable. Map it in Create Records.

  • fromDate, toDate: the range (equal for one day)
  • startTime, endTime: Date Time only
  • id: entry number

Date Ranges JSON (Date)

{ "data": [
  { "id": 1, "fromDate": "2026-02-10", "toDate": "2026-02-12" },
  { "id": 2, "fromDate": "2026-02-15", "toDate": "2026-02-15" }
] }

Dates With Times JSON (Date Time)

{ "data": [
  { "id": 1, "fromDate": "2026-02-10", "toDate": "2026-02-10",
    "startTime": "09:00", "endTime": "17:00" }
] }

Appendix: map properties by hand

Only if you skip Config Name. Flow Builder lists properties alphabetically and shows picklists such as Conflict Behavior as plain text boxes, which is why Config Name is the easier path. For a Booking screen, set these:

Label in Flow BuilderWhat to enterAPI name
Resource Object API NameThe object you book, such as a Room objectresourceObjectApiName
Resource Name FieldThe field shown as each resource's nameresourceNameField
Capacity FieldHow many bookings a resource takes at once. Slots show 3/5 and close when full.capacityField
Booking Object API NameThe object each booking is saved toresourceBookingObject
Booking Date FieldThe date field on the booking objectbookingDateField
Booking Start Time Field, Booking End Time FieldThe time fields on the booking objectbookingStartTimeField, bookingEndTimeField
Booking Resource FieldThe lookup from the booking to the resourcebookingResourceField
Conflict BehaviorType block (default), skip or allowconflictBehavior
Parent Record IdThe record the bookings belong to, such as {!recordId}recordId
Parent Record Relationship FieldThe lookup from the booking to that parentrelationshipFieldApiName

Checkboxes are yours to set here. Without Config Name, every checkbox (Required, Show Inline, Output Date Ranges as JSON and the rest) is whatever you tick on the screen.

See it before you build it

Try the live demo with no login, or get notified the day MultiDatePick arrives on the Salesforce AppExchange.

Stuck on a flow? Support@MultiDatePick.com