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.

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 |
| 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:
- Click the link (copy URL) icon on the config card
- The URL is copied to your clipboard automatically
- 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:
- A confirmation dialog appears
- 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
- Paste the iCal feed URL from your OTA into the iCal URL field
- Select the corresponding Room from the room dropdown (you can type to search)
- Set the Guest Form toggle to control whether guests must complete the guest form during check-in (default: ON)
- Click Add Feed
- 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:
- Enter a config name
- In the Room Type x Plan section, select which room type and plan combinations to offer guests
- Set currency, advance booking limits, and cancellation policy
- Save the config
- 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:
- 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.
- 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.
Related Pages
- Reservation Calendar (Month / Week / Day views, mobile optimization)
- Needs Attention: Reservation Conflicts
- Reservation Config Form (Create/Edit)
- Form Management
- Guest Booking App (Manage Reservations)
- Check-In (How to Receive Your Access Keys)
- iCal Sync (Airbnb / OTA Integration)
- Plan List (Manage Pricing Plans)
- External Integrations (Site Controller)
- Shared Capacity Booking (Coworking Seat Booking)