Coming Soon to AppExchange - 2026

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 1 May 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

Approach How it goes The cost
Several Date fields on one screen Date 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 screen Painful past about three dates
A free-text field User types the dates as text Unparseable, unreportable, error-prone
Start and end date only Treat it as one continuous range Wrong whenever the days are not contiguous
A multi-select picklist of dates Pre-generate date values Goes stale, needs constant maintenance

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.

MultiDatePick returns several outputs depending on what you are capturing:

  • selectedDates: a Text collection of ISO dates, ready to loop
  • selectedDateRangesJson: consolidated ranges, when consecutive days should collapse into one record
  • selectedDatesWithTimesJson: per-date start and end times
  • bookingSuccessCount and bookingConflictDates: what saved, and what clashed

Turning JSON back into records

Two of those outputs are JSON strings, because Flow has no native type for "a list of objects with several fields each." Rather than making you parse text in a formula, there is an invocable Apex action, MultiDatePickParser, that takes the JSON and returns a proper collection with fromDate, toDate, startTime, endTime, resourceId, and resourceName. 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 (if you build the flow by hand)

Set Boolean properties explicitly. In Flow Builder, a Boolean input left blank is not false, it is null, and the component cannot tell the difference between "the admin wants this off" and "the admin did not touch it." Set them with $GlobalConstant.True or $GlobalConstant.False rather than leaving them empty. If you use the Copy Flow XML button on any config in the config library, this is already done for you: every Boolean the wrapper exposes is stamped with its expected value, so the flow behaves identically to the demo on the config's page.

Decide the record shape before you build

The same nine selected dates can legitimately become nine records, or four records if consecutive days collapse into ranges, or one parent record with sub-blocks. None is more correct in the abstract; it depends on what you need to report on. Decide it before you build the flow, because changing it afterwards means migrating data as well as editing the flow.