Coming soon to the Salesforce AppExchange

How to Let Users Pick Multiple Dates in a Salesforce Screen Flow

Flow gives you one Date field per screen element. If someone needs to choose nine days, that is a problem. Here are the options, and the tradeoffs of each.

Published May 1, 2026 · Updated October 21, 2026 · MultiDatePick

Every admin hits this eventually. A time-off request, an availability form, a training sign-up: the user needs to select several dates that are not necessarily consecutive, and Flow's standard Date component captures exactly one.

The workarounds, and why they hurt

ApproachHow it goesThe cost
Several Date fields on one screenDate 1, Date 2, Date 3, Date 4...Fixed ceiling, ugly, and mostly empty
A loop that asks one at a time"Add another date?" then back to the screenPainful past about three dates
A free-text fieldUser types the dates as textUnparseable, unreportable, error-prone
Start and end date onlyTreat it as one continuous rangeWrong whenever the days are not contiguous
A multi-select picklist of datesPre-generate date valuesGoes stale, needs constant maintenance
A multi-date calendar componentClick every date you need on one screenReturns a collection, ready to loop

The start-and-end workaround is the most common and the most quietly wrong. "I need the 3rd, 4th, 11th and 18th off" becomes 3rd to 18th, which is sixteen days of implied absence. The data looks clean and is simply incorrect.

The real fix: a screen component that returns a collection

What Flow actually needs is a screen component that lets the user click as many dates as they like and hands back a collection. Once you have that, the rest of the flow is ordinary: loop the collection, create a record per date, done.

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
A time off request flow: click three days, submit, and the next screen already has all three as a collection.

MultiDatePick returns several outputs, depending on what you are capturing:

OutputWhat it holdsAPI name
Selected DatesA Text collection of ISO dates, ready to loopselectedDates
Date Ranges JSONConsolidated ranges, when consecutive days should collapse into one recordselectedDateRangesJson
Dates With Times JSONPer-date start and end timesselectedDatesWithTimesJson
Successful Bookings Count, Conflict DatesWhat saved, and what clashedbookingSuccessCount

Turning JSON back into records

Two of those outputs are JSON, because Flow has no native type for "a list of objects with several fields each." You do not parse text in a formula. The package ships a Flow action, Parse Date Entries from JSON, that takes the JSON and returns a proper collection with From Date, To Date, Start Time and End Time. You loop that collection like any other.

Salesforce Screen Flow with a multi-date calendar component letting a user select several dates at once
A multi-date calendar inside a Screen Flow, returning a collection the rest of the flow can loop.

One gotcha that costs people an hour

Set Config Name, not the checkboxes. The component has a long list of on/off properties, and in Flow Builder a checkbox input left blank is empty rather than false. You can skip all of it: build the calendar in the Setup Wizard, then put that config's name in the Config Name property. Every on/off setting then comes from the config, and the handful of flow-only ones (Required, Show Inline, Output Date Ranges as JSON) stay off unless you switch them on. Only if you skip Config Name and set everything by hand do you need $GlobalConstant.True or $GlobalConstant.False on the checkboxes you care about.
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 the component onto the screen, set Config Name, save. No checkboxes.

Want the component to save the records itself? Pass the parent record's Id into Parent Record Id and it creates one child record per date. Leave it blank to loop the output and create the records your own way.

Decide the record shape before you build

The same nine selected dates can become nine records, or four records if consecutive days collapse into ranges, or one parent record with sub-blocks. Each is correct for a different report. Decide it before you build the flow, because changing it afterwards means migrating data as well as editing the flow.

Put a real multi-date picker in your next Flow

Click the dates in the live demo, then follow Getting Started to add the component to a flow screen.

  • $20/user/month, every feature
  • 30-day free trial, no card
  • 100% native Salesforce
  • No Apex
  • Coming soon to the Salesforce AppExchange