Booking Management Dashboard Help

Overview

The Booking Management dashboard is the admin interface where facility managers view and manage all guest reservations, check availability on a calendar, and configure the booking settings used to generate guest booking URLs.

Booking Management Dashboard

The dashboard has six top-level tabs:

  • Calendar — Availability calendar (Month, Week, and Timeline views). Click empty cells to create a reservation; click existing blocks to view details. (default view)
  • Reservations — View all guest reservations with status and date filters
  • Needs Attention — Review and resolve inventory conflicts (overbookings) caused by iCal feed imports. A red count badge appears on the tab when there are unresolved conflicts.
  • Plan Configs — Create, edit, delete, and share reservation configuration links
  • Check-in — View and copy guest-facing check-in URLs for your iCal and site controller integrations
  • iCal Sync — Set up iCal feed integrations with Airbnb and other OTAs

How to Access

From the main navigation, select Booking Management. The Calendar tab is shown by default.

You can navigate directly to any tab by appending a query parameter to the URL:

Tab URL parameter
Calendar (default, no parameter needed)
Reservations ?tab=reservations
Needs Attention ?tab=unassigned
Plan Configs ?tab=configs
Check-in ?tab=checkin
iCal Sync ?tab=ical

Features

Feature 1: Reservations Tab

The Reservations tab lists guest reservations for this facility, ordered by check-in date (newest first). By default, reservations starting from 7 days ago up to 90 days ahead are shown.

Status Filter

Use the pill-style filter buttons at the top of the list to narrow reservations by status:

Filter Shows
All Every reservation regardless of status
Application Reservations received but not yet confirmed
Confirmed Reservations that have been confirmed
Checked In Guests currently checked in
Cancelled Reservations that have been cancelled

Note: A "Checked Out" status also exists and appears as a badge on reservation cards.

Selecting a filter immediately reloads the list to show only matching reservations. When viewing "All", a count badge appears next to each non-zero status.

Search and Date Filter Bar

Below the status filters is a row of controls for text search, date range filtering, and resetting all filters.

Text Search

Type part of a guest name, email address, or reservation number in the search box. The list updates automatically after a 400 ms debounce pause. Search is case-insensitive.

Date Range Filter (DateRangePicker)

Click the calendar icon to open the date picker and select a start date and end date to narrow the visible date range.

Setting Behavior
Start date only Shows reservations starting on or after the start date
End date only Shows reservations starting on or before the end date
Both dates Shows reservations within the specified period
Default 7 days ago to 90 days ahead

Reset Button

Click Reset to restore the date filter to its default (7 days ago to 90 days ahead), clear the text search field, and reset the status filter to "All".

Reservation Cards

Each card displays:

Field Description
Guest Name / Email Name or email of the guest who made the reservation
Status badge Current status (Application / Confirmed / Checked In / Cancelled)
Amount Total reservation amount and currency
Unpaid badge Shown if payment has not been completed
Source badge Color-coded badge showing the booking source (Direct / iCal/Airbnb / OTA)
Check-In Date and time of check-in
Check-Out Date and time of check-out
Reservation Number Internal reservation ID
Email Guest email address
Notes Any notes attached to the reservation

Clicking a reservation card opens the Reservation Detail Drawer on the right side of the screen.

Source Color Coding

Reservation blocks and source badges are color-coded by origin:

Color Source Description
Blue Direct Created manually in the dashboard, or via a direct booking URL
Sky blue iCal / Airbnb Imported from an iCal feed (e.g. Airbnb)
Coral OTA Reservations from other OTA channels

Feature 1.5: Reservation Conflict Warnings

When an inventory conflict (overbooking) is detected — typically from an iCal import — warnings appear in three places across the dashboard.

Surface What you see
Needs Attention tab badge A red count badge appears on the tab.
Calendar warning banner A red banner appears above the calendar grid. Click it to jump to the Needs Attention tab. Reservation bars for both the loser and winner reservations also receive a ⚠️ marker.
Reservation list warning banner and ⚠️ markers A red banner appears at the top of the list. Affected reservation cards are highlighted with a red border and ⚠️ marker.

Click the Needs Attention tab to see the list of conflicting reservations. Clicking a row opens the reservation detail drawer where you can resolve it by changing rooms or cancelling. For full details see Needs Attention: Reservation Conflicts.


Feature 2: Calendar Tab

The Calendar tab gives you a visual overview of reservation availability. You can click an empty area to create a new reservation on the spot, or click an existing reservation block to view its details.

Switching View Modes

Use the header controls to switch between three view modes:

Mode Description Reservation Display
Month Full-month occupancy overview Reservation counts per day + [+] button
Week 7-day grid × unit rows Reservation bars per room unit
Timeline Hourly view of unit occupancy Time-based reservation bars

Use the navigation arrows in the calendar header to move between months, weeks, or days.

Creating a Reservation from the Calendar

Clicking an empty area in the calendar opens the Reservation Creation Drawer on the right side. The date, unit, and time are pre-filled based on where you clicked.

View Mode Action Auto-filled fields
Month Click the [+] button on a day cell Check-in date
Week Click an empty cell Check-in date + unit
Timeline Click an empty area Check-in date + unit + time

Hourly and TimeSlot Reservations in the Calendar

Hourly and timeSlot reservation types now appear correctly in the Week and Timeline views.

View Mode Hourly / TimeSlot reservation display
Month Not included in the availability gradient (short bookings do not block a full day — this is intentional)
Week Shown as reservation bars in the unit row
Timeline Shown as precisely positioned bars on the time axis

Month view note: Hourly reservations are intentionally excluded from the month-view occupancy gradient. Switch to Week or Timeline view to see their details.

Auto-Confirmation of Free Hourly Reservations

Hourly and timeSlot reservations with a total amount of 0 (free) are automatically confirmed at booking time.

  • No manual admin confirmation is needed.
  • An available room is automatically assigned.
  • The reservation appears immediately in the Week and Timeline calendar views.

Viewing a Reservation from the Calendar

Clicking a reservation block in the calendar opens the Reservation Detail Drawer on the right side.


Feature 3: Reservation Drawer

The Reservation Drawer is the 420 px panel that slides in from the right side of the screen when you click a calendar cell or a reservation card in the list. It has three modes.

Create Mode

A blank reservation form is displayed with date, unit, and time pre-filled from where you clicked.

Form Fields

Field Description Required
Check-in date/time Start of the stay Yes
Check-out date/time End of the stay Yes
Stay type Toggle between Nightly and Hourly Yes
Room type Select the room type Yes
Plan Select the plan for the chosen room type Yes
Guest name Name of the guest No
Guest email Email address of the guest No
Notes Admin-facing notes No

Post-Create Actions

After a reservation is created, two link cards appear:

Link Description
Unpaid reservation link Slug-based URL for the guest to complete payment and check in
Paid reservation link URL for guests who have already paid — delivers the key only

Each card has a "Copy link" button and a "Send by email" button (available only when a guest email was entered).

Detail Mode

Displays a read-only summary of the reservation.

Field Description
Guest info Name and email address
Dates Check-in and check-out date/time
Amount and payment status Total amount and paid/unpaid state
Access code Guest-facing door code (if issued)
Source badge Booking origin
Edit button Switches to Edit mode

Edit Mode

Click the Edit button in Detail mode to switch to Edit mode. The reservation form is shown with all current values pre-filled so you can update and save.


Feature 4: Plan Configs Tab

Reservation configs define the booking rules guests encounter when they use your facility's booking URL. Each config acts as a distinct booking "product" — you can have multiple configs for different room type combinations, pricing structures, or cancellation policies.

Config Card Information

Each config card shows:

Field Description
Config Name Display name for this reservation config
Active / Inactive badge Whether this config is currently accepting bookings
Currency Currency used for payments
Min Advance Minimum lead time (hours) required before check-in — bookings within this window are rejected
Max Advance Maximum number of days ahead that a booking can be made
Policy Tiers Number of cancellation policy tiers defined
Plans Number of KEYVOX plans linked to this config via room-plan mappings

Advance Booking Window Settings

The reservation config form lets you control how far ahead (and how close to now) guests can book. These settings are enforced server-side.

Setting Form field name Behaviour
Booking lead time (h) min_advance_hours Minimum hours between now and the booking start. For example, setting 4 means guests cannot book anything starting within 4 hours. Leave blank for no restriction.
Max advance days max_advance_days How many days from today guests can book. Default is 90.
Max booking duration (min) max_booking_duration_minutes Maximum length of a single hourly / time-slot reservation in minutes. Leave blank for no cap. Stay-mode reservations are exempt. Extensions are also capped server-side so the TOTAL window cannot exceed this value. Does NOT cap post-check-in actual stay length — this is a booking-time constraint only.

How guests see these restrictions:

  • Cells within the minimum advance window are shown with a stripe pattern and cannot be tapped
  • Calendar dates beyond the maximum advance window are greyed out and unselectable
  • End-time cells beyond the max-booking-duration cap cannot be selected (extensions are also rejected at the same cap)
  • Attempting to submit a reservation outside either window produces a clear error message

Changes take effect immediately. Guests using the booking page will see the updated restrictions on their next page load.

Creating a New Config

Click the New button in the top-right of the Configs tab to open the reservation config creation form.

See the Reservation Config Form help for details on each field, including how to configure room-plan mappings.

Supported Plan Types (Reservable vs On-Site Billing Only)

The Plan List supports six plan types, but only three (the reservable plan types) can be booked by guests via reservation URLs. The other three are for on-site billing only and do not appear in the Room Type × Plan mapping on this screen.

Category Plan Type Shown on this screen Use Case
Reservable Accommodation Yes Guests pick check-in/out dates and book
Reservable Hourly Yes Guests book by the hour
Reservable Time Slot Booking Yes Guests book a fixed time window (e.g. 10–13)
On-site billing only Daily Flat No Day-rate billing for same-day on-site use
On-site billing only Flat + Overtime No Fixed-duration package with overtime billing
On-site billing only One-Time No One-shot key issuance billing

Tip: To set up a guest-facing booking page, first create one of the Reservable plan types (Accommodation, Hourly, or Time Slot Booking) in the Plan List, then map it to a room type on this screen.

Editing a Config

Click the pencil (edit) icon on a config card to open that config in the edit form.

Copying the Booking URL

Each config generates a unique guest-facing booking URL. To copy it:

  1. Click the link (copy URL) icon on the config card
  2. The URL is copied to your clipboard automatically
  3. A "Copied" confirmation appears briefly

The URL format (when a facility slug is configured):

https://booking.unlockos.io/{slug}?config=<config-id>

If no facility slug is set, the legacy format is used instead:

https://booking.unlockos.io?facilityId=<facility-id>&configId=<config-id>

Share this URL with guests (via email, your website, or messaging) to let them make reservations using that specific config. You can set the slug in Basic Settings under "App URL".

Deleting a Config

Click the delete icon on a config card to delete it:

  1. A confirmation dialog appears
  2. Click Delete to confirm — this action is permanent

Note: Deleting a config does not delete existing reservations that were made through it. Only the config itself is removed, preventing new reservations from being created with it.


Feature 5: Check-in Tab

Note: The former "Feature 5: Guest Form Tab" (?tab=guestForm) was removed on 2026-05-19. Form editing has moved to Form Management (/forms) in the main menu. Host-country behaviour has equivalent functionality on the new form-management screen.

The Check-in tab displays the guest-facing check-in URLs for all reservation sources connected to your facility — iCal feeds and site controller integrations alike. It sits between the Plan Configs tab and the iCal Sync tab.

What is Shown

When iCal feeds or a site controller integration (e.g. Neppan) are registered, each connected source appears as a URL card:

Field Description
Config name The name of the check-in config linked to this URL
Source badge Color-coded badge showing the reservation source (iCal or the provider name such as neppan)
Room name The room linked to the iCal feed, if applicable
Check-in URL The URL to share with guests (displayed in monospace)
Copy button Copies the URL to the clipboard

When No Sources Are Connected

If no iCal feeds or site controller integrations have been set up, a warning message appears: "No reservation sources connected." Set up an iCal feed in the iCal Sync tab or a site controller in Connection Settings → External Integrations.

For full documentation see iCal Sync and External Integrations.


Feature 6: iCal Sync Tab

The iCal Sync tab lets you register iCal feeds from Airbnb and other OTAs to automatically import reservations. Registered feeds are synced periodically and the imported reservations appear in the Reservations list and Calendar.

Adding an iCal Feed

  1. Paste the iCal feed URL from your OTA into the iCal URL field
  2. Select the corresponding Room from the room dropdown (you can type to search)
  3. Set the Guest Form toggle to control whether guests must complete the guest form during check-in (default: ON)
  4. Click Add Feed
  5. After the feed is added, a success banner with a Go to Check-in Tab button appears — click it to find the check-in URL to share with guests

For full documentation of this tab, see iCal Sync.

Feed Table Information

Each registered feed row shows:

Column Description
Feed URL The registered iCal URL
Room The room this feed is linked to
Last Sync Timestamp of the most recent sync
Events Number of reservations imported in the last sync
Status Success, Error, or Pending
Matching Matching mode toggle for this feed
Guest Form Whether the guest form is required for this feed (ON/OFF button)
Actions Sync and Delete buttons

Guest Form ON/OFF

Click the ON/OFF button in the Guest Form column to toggle whether guests must fill out the guest form (passport details, etc.) when checking in through this feed. The default is ON, which is recommended for accommodation compliance.

Matching Modes

Each feed can be set to one of two matching modes:

Mode Description
Guest verification Guests authenticate themselves by entering their reservation number
Host managed The host (admin) manages reservation matching and key issuance

Click the toggle on a feed row to switch modes.

Manual Sync

Click the circular arrow (sync) button on a feed row to immediately fetch and update reservations from that feed.

Deleting a Feed

Click the Delete button on a feed row. A confirmation modal appears — click Delete to confirm. Automatic syncing stops after deletion. Reservations that were already imported are not deleted.


How to Set Up a Booking Flow (Step-by-Step)

Setting up online reservations for your facility requires two steps in this order:

Step 1: Create Plans

Go to Plan Management and create pricing plans for your room types. To sell via reservation URLs, use one of the three reservable plan types: Accommodation, Hourly, or Time Slot Booking.

"Daily Flat", "Flat + Overtime", and "One-Time" plans are on-site billing only and cannot be linked to reservation URLs. See Supported Plan Types above.

Step 2: Create a Reservation Config

Go to the Plan Configs tab, click New, and:

  1. Enter a config name
  2. In the Room Type x Plan section, select which room type and plan combinations to offer guests
  3. Set currency, advance booking limits, and cancellation policy
  4. Save the config
  5. Copy the generated booking URL and share it with guests

Important: Only room types that have been added to at least one reservation config (via room-plan mapping) will appear on the guest-facing booking page. Completing this step is required for a room type to be bookable by guests.


Frequently Asked Questions

Q: The Daily Flat / Flat + Overtime / One-Time plans I created in the Plan List don't appear under Reservation Management > Plan Configs > New. Is this a bug?

This is intentional. Only Accommodation, Hourly, and Time Slot Booking (the reservable plan types) can be booked by guests through reservation URLs, so only those types appear in the Room Type × Plan mapping. Daily Flat, Flat + Overtime, and One-Time are on-site billing plans — they apply when a guest is already at the facility, not when a guest selects a date/time from a public booking page. See Supported Plan Types for the full breakdown.

Q: The "Needs Attention" tab has a red badge. What should I do?

An inventory conflict has been detected — typically caused by an iCal feed importing a reservation that overlaps with an existing booking. Click the "Needs Attention" tab to see the list and resolve each conflict. For full details see Needs Attention: Reservation Conflicts.

Q: Hourly reservations are not showing on the calendar

Switch to Week or Timeline view. Hourly and timeSlot reservations are intentionally excluded from the Month view occupancy gradient because short bookings do not block an entire day.

Q: Do I need to manually confirm free hourly reservations?

No. Hourly and timeSlot reservations with a total amount of 0 (free) are automatically confirmed and assigned to an available room at booking time.

Q: What is the difference between Application and Confirmed status?

Application means the reservation has been received but not yet processed. Confirmed means the reservation has been accepted and any access code has been issued.

Q: How do I create a reservation from the calendar?

Open the Calendar tab and click an empty area — the [+] button on a day cell in Month view, or any empty cell or area in Week and Timeline view. The Reservation Creation Drawer opens on the right side with date and unit pre-filled.

Q: Where can I see reservations imported from Airbnb?

Both the Reservations tab and the Calendar tab show iCal/Airbnb reservations. They are identified by a sky-blue source badge.

Q: Can I have multiple reservation configs?

Yes. You can create as many configs as needed. This is useful when offering different room types, pricing models, or cancellation policies through separate booking URLs.

Q: What happens to existing reservations if I delete a config?

Existing reservations are not affected. Only new reservations through that config's URL are prevented.

Q: The booking URL I copied — where should guests use it?

Guests open the URL in a web browser to view available dates and make a reservation. You can share it via email, embed it on your website, or include it in a QR code.

Q: A room type I created is not showing up on the guest booking page

A room type only appears on the guest-facing booking page if it has been linked to at least one active reservation config via a room-plan mapping. Check the following:

  1. Open the Plan Configs tab, edit your config, and verify the room type appears in the Room Type x Plan section with a plan assigned.
  2. If the room type has no plan mapping in any config, it will not be shown to guests even if it is active.

Q: I searched for a reservation but it did not appear

Text search matches guest name, email address, and reservation number. Reservations outside the current date filter range are also excluded. Try clicking Reset to return to default filter settings and search again.

Q: Older reservations are not showing up

The default date filter starts from 7 days ago. To view older reservations, use the DateRangePicker to set an earlier start date.

Q: How do I automatically import Airbnb reservations via iCal?

Open the iCal Sync tab, paste your Airbnb iCal export URL, select the corresponding room, and click Add Feed. After the feed is registered, copy the displayed check-in URL and add it to your Airbnb Arrival Guide so guests can check themselves in automatically.

Q: How often are iCal feeds synced?

Feeds are synced automatically on a recurring schedule. To sync immediately, click the Sync button on any feed card.

Q: I configured a booking lead time but guests can still book right away

Make sure the min_advance_hours field in the reservation config form is saved with a value. An empty field means no restriction. Also note this setting is on the Reservation Config (Plan Configs tab), not on the plan form itself.

Q: A guest reports that cells in the booking grid are unselectable

Common causes: (1) the cell falls within the minimum advance window, (2) the date is beyond the maximum advance days, (3) the end-time cell exceeds the plan's maximum booking duration, (4) the time is outside business hours, or (5) the slot is already booked. The guest should see an informative error message if they try to submit a booking in a restricted range.

Q: Guests see "You must book at least X hours in advance"

This error means the selected start time falls within the config's minimum advance window. Guests should choose a start time further in the future.

Q: Guests see "Reservations can only be made up to X days from today"

This error means the selected date exceeds the config's max advance days. Either the guest selects a closer date, or you increase the limit in the config.