Coming soon to the Salesforce AppExchange

Date: Salesforce Multi-Date and Range Picker

Click as many dates as you need, drag a date range, or add a recurring pattern. Every date saves to your Salesforce records.

Or try MultiDatePick live now, no login →
  • Passed Salesforce Security Review
  • 100% native: your data stays in Salesforce
  • Screen Flows
  • Record pages
  • App & Home pages
  • Experience Cloud
  • 5 views
  • 9 languages
  • No Apex
Animated demo of the MultiDatePick Dates component in Salesforce: naming a time-off request, dragging across three days of Thanksgiving week, adding the Friday with one click, and saving all four days at once
Drag three days, click a fourth, save all four at once.
TRY IT LIVE: NO INSTALL, NO LOGIN

Try MultiDatePick live in your browser

The real component on a public Salesforce site, the fictional ACME Financial. Pick dates and open slots, see status colors and the back office. Resets every hour.

Launch the live demo →

Allow multiple date selections in Salesforce

A standard Salesforce date field holds one date. The Date component holds as many as your users pick.

You needStandard date fieldMultiDatePick Date
Many separate dates✗One field per date✓Click any number of days
A start and end date✗Type two dates✓Drag across the calendar
Every other Monday✗Enter each one✓One recurring pattern
Status per date✗Not possible✓Colored by any picklist
Change dates later✗Edit record by record✓Edit mode, right on the calendar
Use it in a Screen Flow✗One date input per date✓A Text collection or range JSON

Click, drag or repeat: three ways to pick dates

Mix all three in one selection. Undo and Clear All are always one click away.

1ClickPick any single dates, scattered across the month.
2DragDrag across days to select a date range in one move.
3Recurring patternWeekdays, weekends or custom days. Every N weeks. The 1st, 2nd, 3rd, 4th or last occurrence in the month, like the 2nd and 4th Friday or the last Saturday.
Salesforce multi-date picker recurring pattern dialog in MultiDatePick: Weekdays, Weekends or Custom Days, which occurrences in the month (1st to 4th or Last), repeat every N weeks, start and end dates, and a preview
Every other Monday for a quarter, in one pattern.

More than a date picker

60+ properties, all set by clicks. The standouts:

Salesforce multi-date calendar in MultiDatePick: a Candidate Availability month with dates colored Confirmed, Tentative and Pending, striped days that mix two statuses, and a status picker for new dates

Status colors

Map any picklist value to a color. Days with two statuses get stripes.

Salesforce two-month date picker in MultiDatePick: August and September 2026 side by side with status-colored dates, for planning across a month boundary

Two-month view

Two months side by side for long ranges and quarter planning.

Animated demo of MultiDatePick Edit Mode on a Salesforce calendar: two days of Requested records are selected, Select All picks both, the status is changed to Confirmed, and after Apply Changes the days turn green

Edit mode

Approve, move or delete saved dates in bulk, right on the calendar.

  • Hover popovers with your fields
  • Blocked dates from any object
  • Earliest and latest date
  • Max dates allowed
  • Pre-selected dates
  • Only these dates selectable
  • Second picklist on save
  • Auto-named records
  • Week starts Monday
  • Small, medium, large
  • 9 languages
  • WCAG 2.1 AA

Five views of the same date records

Same records, same save. Set the default with View; offer the rest with Available Views.

Animated demo of the MultiDatePick Salesforce calendar view: the month fills with status colors, and hovering a day opens a card listing that day's records by name, time and status

Which days?

  • A month at a time, status color on every day
  • Click or drag to pick
  • Hover a day to see its records
  • The default

One component, five layouts. Demos use sample appointment data; a Date calendar draws the same views from its own date records.

How it saves records: object and field mapping

Pick a record shape. Saving only adds records; it never deletes the ones already there.

One record per dateSMTWTFS5 recordsMonTueWedThuFriRSVPs, attendance, on-call days, inspections.The default.
One record per date rangeSMTWTFS1 recordStart Tue to End SatPTO, travel, multi-day jobs, venue setups.Set End Date Field API Name. Mon to Fri becomes one record, not five.
Your child objectSettingExample
The object that stores datesChild Object API NameTrip_Date__c
Date (or range start)Date Field API NameDate__c
Lookup to the parentRelationship Field API NameTrip__c
Range end OptionalEnd Date Field API NameEnd_Date__c
Status picklist OptionalStatus Field + Status ColorsStatus__c, Approved:green,Pending:orange
Hover details OptionalHover Popover FieldsName,Status__c
Blocked dates OptionalBlocked Dates Object, Date Field, Filter FieldHoliday__c, Date__c

No API names to type. In the Setup Wizard every object and field is a dropdown.

Use cases for the Salesforce multi-date picker

15 ways teams use Date. Most have a ready-made config in the Config Library.

PTO and vacation requests

Mon to Fri saves as one range. Pending, Approved, Denied at a glance.

  • Date range
  • Status colors
  • Recurring

On-call rotation

Every other Monday for a quarter in two clicks. Primary, Backup, Swapped.

  • Every N weeks
  • 1st to last
  • Load existing

Event attendance and RSVP

One RSVP record per event date. Saved RSVPs show, so no duplicates.

  • One per date
  • Load existing
  • Status colors

Project milestones and deadlines

Milestones and review dates on the project record, each with a label.

  • Two-month view
  • Record name

Facility blackout dates

Mark holidays and closures. Other calendars grey them out automatically.

  • Blocked dates
  • Any object

Content publishing calendar

Every Tuesday and Thursday in one pattern. Reschedule by moving dates.

  • Recurring
  • Hover popovers
  • Edit mode

Field service multi-day jobs

Drag Mon to Fri for one job record. Existing jobs show to prevent overlap.

  • Date range
  • Load existing
  • Status colors

Training and course enrollment

Pick the days of a multi-week course. Days the class is off are greyed out.

  • Blocked dates
  • Recurring

Subscription and renewal tracking

Bulk-record renewal dates, auto-named like "Q3 Renewal".

  • Two-month view
  • Default record name

Audit and compliance schedules

The 1st Monday of every month, all fiscal year, tracked by status.

  • Monthly occurrence
  • Status colors

Equipment inspection and maintenance

Inspection dates on each asset record, skipping facility closures.

  • Record page
  • Hover popovers
  • Blocked dates

Real estate showing availability

Open-house dates on the listing. A read-only public calendar on your site.

  • Experience Cloud
  • Read only

Sales territory visit planning

Which days each rep is in which territory, multi-day visits as one record.

  • Date range
  • Recurring

Event venue booking dates

Multi-day events, setup and tear-down days as single records.

  • Date range
  • Status colors

Recurring task due dates

Every Wednesday in October, or the last business day of each month.

  • Recurring
  • One per date

Need times or resources too? Date Time adds a time grid; Booking adds rooms, people and capacity.

Put it on a Lightning page

Record, App, Home and Experience Cloud pages. Dates save as child records with no Flow at all.

1What you need firstA child object with a Date field and a Lookup to the parent. Optional: End Date and Status.
2Drop it inIn Lightning App Builder, drag Dates onto the page and set Config Name. That is the only setting.
3What comes outOne record per date, or per range, linked to the page record. Load Existing Dates shows what is saved.
PageWhat you set
Record pageConfig Name. The page record is the parent automatically.
App and Home pagesConfig Name plus Static Parent Record Id.
Experience CloudConfig Name plus Static Parent Record Id. Turn on Show In-Component Toast.
A related record's pageParent Record Id Field: the lookup that points to the real parent.
Animated demo of importing a MultiDatePick config: Copy JSON on the Employee Time-Off card in the website Config Library, paste it into the setup wizard's Import tab, check every field resolves and deploy, then drag the MultiDatePick Dates component onto a Lightning page in App Builder, enter the config name and save
Record page: import a time-off config, drop Dates on the page, type its name.
Animated demo of adding MultiDatePick to a Salesforce App Page in Lightning App Builder: drag the Dates component onto the page, fill in Static Parent Record Id, Child Object, Date Field and Relationship Field, and the Save button appears on the calendar
App page: fill in Static Parent Record Id and the Save button appears.
Summary view after SaveTurn on Show Inline (Always Visible) and Show Done Button in Inline Mode: after Save the calendar folds into a summary card of the picked dates, and a click opens it again.

Pick multiple dates in a Screen Flow

Drag Dates onto a screen and set Config Name. Every checkbox comes from your Setup Wizard config.

1What you need firstA Text collection variable for the dates. A Text variable too if you want ranges.
2Drop it inSet Config Name, then map Selected Dates (Output) to your collection.
3What comes outDates in your variable, ready to loop. Set Parent Record Id and it saves the records too.
OutputWhat the flow gets
Selected Dates (Output)Text collection of ISO dates: ["2026-07-10","2026-07-14"]
Date Ranges JSON (Output)Adjacent dates grouped into ranges. Needs Output Date Ranges as JSON on.
Parse Date Entries from JSONIncluded Flow action: turns the JSON into loopable fromDate / toDate entries.

Flow-only settings stay off unless you turn them on: Required, Show Inline (No Button) and Output Date Ranges as JSON. Full patterns on the Flow Cheat Sheet.

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.

Specifications

The Date component at a glance.

SecurityPassed Salesforce AppExchange Security Review
Data100% native: your data stays in Salesforce. No external servers, no callouts.
Salesforce editionsEnterprise, Unlimited, Performance, Developer and Salesforce Platform, plus industry clouds. Not Essentials or Professional.
Where it runsScreen Flow, Lightning Record Page, App Page, Home Page, Experience Cloud site
SelectionClick single dates, drag date ranges, recurring patterns
Recurring patternsWeekdays, weekends, custom days; every N weeks; 1st, 2nd, 3rd, 4th or last occurrence
Saves asOne record per date, or one per date range with an End Date field. Additive save.
Flow outputsSelected Dates (Text collection of ISO dates), Date Ranges JSON + Parse Date Entries from JSON
LimitsMax dates allowed, earliest and latest date, allow past dates, blocked dates from any object
Views5: Calendar, Timeline, Week, Utilization, Agenda. Plus a two-month layout.
Languages9: English, Spanish, French, German, Italian, Japanese, Hindi, Brazilian Portuguese, Chinese Simplified
Properties60+, all set by clicks. Full reference
SetupSetup Wizard, Lightning App Builder or Flow Builder. No Apex required.
Salesforce API version63.0

One plan, every component

Date, Date Time and Booking are all in the same seat.

$20/user/mo
  • 30-day free trial
  • No card required
  • All three components
  • All future upgrades
See pricing

Multi-date picker questions

Short answers. More on the FAQ page.

Can a Salesforce date field hold multiple dates?

No. A standard Date field holds one date, and a pair of fields holds one range. MultiDatePick saves every date the user picks as a related child record of the parent, so one record can have any number of dates, each with its own status.

How do I select a date range in an LWC?

Drop the MultiDatePick Date component on the page and drag across the days. Set End Date Field API Name and adjacent days save as one record with a start and an end date, so Monday to Friday is one record, not five. No custom LWC to build.

Can I pick multiple dates in a Screen Flow?

Yes. Drag the Date component onto a Flow screen and set Config Name. Selected Dates (Output) returns every picked date as a Text collection of ISO dates. Turn on Output Date Ranges as JSON and the Parse Date Entries from JSON action gives you loopable from and to dates.

Can users pick recurring dates, like every other Monday?

Yes. The Add Recurring Pattern button selects weekdays, weekends or custom days, repeats every N weeks, and can limit to the 1st, 2nd, 3rd, 4th or last occurrence in the month, between a start and an end date.

Can I show a public calendar of dates on an Experience Cloud site?

Yes. Place the Date component on an Experience Cloud page and set Static Parent Record Id. Set Existing Dates Mode to readonly to show saved dates without letting visitors change them, and turn on Show In-Component Toast for save messages.

How much does the MultiDatePick Date component cost?

MultiDatePick is $20 per user per month with a 30-day free trial and no card required. The Date, Date Time and Booking components are all included.

Properties reference

By the label you see in App Builder and Flow Builder. With Config Name set, the wizard fills all of these.

All Properties Reference

Setup

Config NameconfigNameA saved Setup Wizard config. Loads every other setting.

Views

ViewviewOpening layout: calendar (default), timeline, week, utilization, agenda.
Available ViewsavailableViewsViews in the switcher, e.g. calendar,timeline,agenda. Blank offers all five.
Timeline Window (Days)timelineWindowDaysDays Timeline shows at once. Default 14; 0 for the full month.
Timeline ZoomtimelineZoomStarting zoom: day, week (default) or month.
Agenda FieldsagendaFieldsExtra fields on each Agenda row. Blank reuses Hover Popover Fields.

Display

Button Label FlowlabelText on the button that opens the picker. Default "Select Dates".
Calendar TitlemodalTitleTitle at the top of the calendar. Default "Select Dates".
Show InlineshowInlineCalendar always visible, no button. On by default on pages, off in Flow.
Two-Month ViewtwoMonthViewTwo months side by side.
Calendar SizecalendarSizesmall, medium (default) or large.
Day Header FormatdayHeaderFormat3 = SUN MON, 2 = SU MO, 1 = S M.
Week Starts on MondayweekStartsOnMondayWeeks begin Monday instead of Sunday.
Show Recurring Pattern ButtonshowRecurringPatternThe Add Recurring Pattern button. On by default.
Show Selection SummaryshowSelectedSummaryCount and ranges of the picked dates. On by default.
Show Done Button in Inline ModeshowDoneButtonInlineDone folds the calendar into a summary card. On in Flow, off on pages by default.
Required FlowrequiredAt least one date before the Flow can advance.

Limits

Max Dates AllowedmaxSelectionsMost dates a user can pick. 0 = unlimited.
Allow Past DatesallowPastDatesOff = only today and later. On by default.
Earliest Selectable Date FlowminDateFirst date that can be picked.
Latest Selectable Date FlowmaxDateLast date that can be picked.
Pre-Selected Dates FlowdefaultDatesDates already selected when it opens (YYYY-MM-DD).
Blocked Dates FlowdisabledDatesDates that cannot be picked, shown greyed out.
Only These Dates Are Selectable FlowavailableDatesEvery other date is disabled. Court dates, sessions.
Auto-Jump to First Available Date FlowautoJumpToFirstAvailableOpens on the month of the first selectable date.

Status and colors

Status FieldstatusFieldPicklist or text field that colors each date.
Status ColorsstatusColorse.g. Approved:green,Pending:orange,Denied:red. Names or hex codes.
Status Color DisplaystatusColorDisplaycalendar: date cells take the status color.
Status Field LabelstatusFieldLabelLabel for the status picker. Blank uses the field name.
Selectable Statuses (Status Picker)selectableStatusesValues users may set, e.g. Requested on a public site. One value hides the picker.
Hide Records With StatushideBookingsWithStatusStatus to leave off the calendar, e.g. Cancelled.
Second Picklist FieldsecondStatusFieldA second picklist chosen on save, e.g. Reason__c. Not color-coded.
Second Picklist LabelsecondStatusFieldLabelLabel for the second picklist.
Selectable Second-Picklist ValuesselectableSecondStatusesAllowed values. One value is auto-applied and hidden.
Hover Popover FieldshoverFieldsFields in the hover card, e.g. Name,Status__c.
Show In-Component ToastshowSuccessToastSave message drawn inside the component. Use on Experience Cloud.
Success Toast Message (optional)successToastMessageCustom save message.

Edit mode

Enable Edit ModeenableEditModeThe Edit button: change status, move or delete saved dates. On by default.
Edit Button LabeleditButtonLabelCustom text for the Edit button.
Edit Record DisplayeditRecordDisplayDetails per row, in order: name, status, date. Default name, status, time.

Record name

Record Name FieldrecordNameFieldText field that stores a name for each record.
Default Record NamedefaultRecordNamee.g. "Vacation Day" or "On-Call".
Append Date to Record NameappendDateTimeToName"Vacation Day - 2026-07-10". On by default.

Saving records

Child Object API NamerelatedObjectApiNameObject where each date is saved.
Date Field API NamedateFieldApiNameDate field on that object.
End Date Field API NameendDateFieldAdjacent dates save as one record with a start and an end.
Relationship Field API NamerelationshipFieldApiNameLookup from each record to the parent.
Parent Record Id FlowrecordIdParent to save against, e.g. {!recordVar.Id}. Blank = outputs only.
Static Parent Record Id PagesstaticRecordIdParent for App, Home and Experience pages.
Parent Record Id FieldparentRecordIdFieldWhen the page belongs to a different record: the lookup to the real parent.
Load Existing DatespreloadExistingDatesShows saved dates on load. On by default.
Existing Dates ModepreloadModeeditable (default) or readonly.
Save Button LabelsaveButtonLabelText on the Save button. Default "Save".

Blocked dates object

Blocked Dates ObjectblockedDatesSourceObjectObject whose dates are blocked, e.g. holidays.
Blocked Dates Date FieldblockedDatesDateFieldDate field on that object.
Blocked Dates Filter FieldblockedDatesFilterFieldLookup to this record, or a field to filter by. Blank blocks for everyone.
Blocked Dates Filter ValueblockedDatesFilterValueValue the filter field must match, e.g. Holiday.

Flow outputs

Output Date Ranges as JSON FlowoutputAsJsonFills Date Ranges JSON (Output).
Selected Dates (Output)selectedDatesEvery picked date, ISO format (YYYY-MM-DD).
Date Ranges JSON (Output)selectedDateRangesJsonAdjacent dates grouped as fromDate / toDate.

Give your users every date they need

Coming soon to the Salesforce AppExchange. Get notified the day it launches.

Questions or a feature request? Support@MultiDatePick.com