How it works
Add a Booking Slots field to any Elementor Pro Form. The field shows a datepicker and a time selector. When a date is chosen the frontend requests available time slots from WordPress and fills the time list dynamically.
- Dates enabled via Availability Ranges (PRO) or Perpetual Weekday mode (Lite).
- Frontend receives a
serverTimeandminBookingNoticeto hide too-soon slots. - Final validation runs server-side to ensure the slot remains available before booking.
Installation
- Upload the plugin folder to
/wp-content/plugins/or install via the WordPress installer. - Activate the plugin from Plugins.
- Ensure Elementor and Elementor Pro are active.
- Edit a page, add a Form widget and insert the Booking Slots field.
- To activate the PRO features, go to Booking Slots → License and enter your license key. You can purchase a license here: Purchase PRO
Free (Lite) options
Labels & placeholders
- Date Label – text shown above the date field.
- Time Label – text shown above the time selector.
- Placeholders – date & time placeholder texts.
Perpetual weekday mode
- Available Days – pick weekdays that are available.
- Start / End Time (Legacy) – global window used in Lite mode.
- Time Interval – global slot interval (used when no ranges are defined).
Lite mode supports shared slots across forms and bookings up to 1 year ahead.
PRO features PRO
- Availability Ranges – per-range dates, times, and custom interval.
- Per-range Minimum Booking Notice – set how many minutes in advance a booking is allowed.
- Multi-form isolation, custom calendar colors, admin filters and bulk delete.
Availability Ranges – format
One range per line. Format:
DD/MM/YYYY to DD/MM/YYYY | HH:MM to HH:MM | INTERVAL
Examples (two ranges):
09/11/2025 to 14/11/2025 | 01:00 to 17:00 | 10
23/11/2025 to 24/11/2025 | 10:00 to 18:00 | 15
Optional per-range NOTICE (minutes) may be appended (PRO):
09/11/2025 to 14/11/2025 | 01:00 to 17:00 | 10 | 60
Minimum booking notice
The minimum booking notice prevents visitors from booking too close to the slot time. Behavior:
- Per-range notice (PRO) overrides the global notice.
- The frontend hides slots earlier than
serverTime + noticefor same-day selections. - Always enforce the same rule server-side in validation & slot generation for safety.
Timezone & serverTime
The plugin uses the WordPress site timezone (via wp_timezone() or
timezone_string). The
frontend receives a serverTime string in the field config so client-side filtering
matches
server-side time. Verify Settings → General timezone to match your expected time zone.
Examples & troubleshooting
Missing slots today
- Minimum notice may remove all remaining slots; try a smaller notice or a future date.
- Check WordPress timezone under Settings → General.
Editor preview missing the field
Editor preview may not always render dynamic fields correctly. Test fully on a live frontend page.
Developer notes
- Field config available in the date input via
data-field-config(JSON). Keys includeavailabilityRanges,interval,formId,serverTime, andminBookingNotice. - AJAX endpoints:
efbs_get_available_slots,efbs_check_slot_availability,efbs_get_fully_booked_dates. - Enforce critical rules server-side (min notice, cutoff, availability) to avoid race conditions.
Support
If you still need help, visit our support page: