Reservation Approvals Help

Overview

Reservation requests for a manual-approval plan (approval_mode='manual', status pending_approval) are approved or rejected by the facility owner.

This used to be a standalone "Reservation Approvals" menu item and page. It is now integrated into the "responses" tab of the Forms page. The legacy URLs /reservation-approvals and /guest-submissions automatically redirect to /forms?tab=responses (existing bookmarks keep working).

From this page (Forms → responses tab → "Pending Reservations" card) you can:

  • View all reservations awaiting approval (shown as responses to the Default Pending Reservation Form)
  • Approve a reservation (free plans / member quota confirm instantly; paid plans send a payment link after approval)
  • Reject a reservation (a reason is required — the guest is automatically emailed the rejection reason)

Approve/reject is also available from the Reservation dashboard's detail pane. Opening a pending_approval reservation there shows the same approve/reject controls. Use whichever screen fits your workflow.


How to Access

Main menu → FormsResponses tab → click the "Pending Reservations" card.

Rows awaiting approval show a "Pending Approval" badge. Click a row to open the detail panel with the approve/reject controls.

If there are no reservations awaiting approval, the list is empty.


Features

Feature 1: Pending Reservation List

Reservations with pending_approval status appear as responses to the Default Pending Reservation Form, tagged with a "Pending Approval" badge. Clicking a row opens a detail panel (or a modal on mobile) showing the form's answers (e.g. guest name, whatever fields the form has) plus the approve/reject buttons.

The same user filter available on the responses tab (search by guest name / email) applies here too.

Feature 2: Approve

Clicking "Approve" in the detail panel confirms the reservation in a single click — no extra input required.

What happens next depends on the plan's price.

Plan type After approval
Free plan, or a reservation drawing from a member's unlimited-use quota Confirms immediately (confirmed); the key is issued and a confirmation email is sent
Paid plan The reservation moves to pending (awaiting payment) and the guest is emailed a payment link. The key is issued once the guest completes payment

Either way, the guest receives an automatic email notifying them of the approval — you do not need to contact them separately.

The decision is recorded in reservation_approvals (decider + timestamp).

Feature 3: Reject

A reason is required to reject.

Steps

  1. Click "Reject" in the detail panel
  2. A reason input field appears
  3. Enter the rejection reason (required — the confirm button stays disabled until you do)
  4. Click "Reject" (the confirm button)
  5. The reservation status changes to cancelled
  6. The reason is recorded in reservation_approvals.rejection_reason, and the guest automatically receives a rejection email containing that reason

To cancel the rejection in progress, click "Cancel" in the input area (the reservation stays in the pending-approval queue).


How to Enable Manual Approval (Per Plan)

To switch a plan to "approve every time" mode, open its editor in Plan Settings and turn on the "Require approval each time you book" checkbox in the "Reservation Approval" section. Direct SQL updates are no longer needed.

  • This setting applies only to online / front-desk reservations — it has no effect on walk-in check-ins.
  • If you want "approve once, then auto-confirm from then on," use a membership plan (apply-first / screened signup) instead of the approval toggle. Once a member is approved at signup, their subsequent reservations confirm automatically.
  • A reservation that draws from a member's unlimited-use quota bypasses approval regardless of the plan's approval setting, since that member was already screened at signup.

There is no automatic binding of the Default Pending Reservation Form to a plan yet. To attach a form to a specific plan, use the "Applied Forms" section in Plan Settings.

Important: a plan without this form attached will not show its pending reservations on this page (Forms → Responses tab). The "Pending Reservations" card only lists responses to the Default Pending Reservation Form — i.e. reservations from a plan that has it attached. If you turn on approval mode without attaching this form, those pending reservations are visible and actionable only from the reservation detail pane on the Reservation dashboard.


Known Limitations

Item Status
Granularity finer than "every time" (e.g. auto-approve after the first N bookings) Not supported. approval_mode is binary: 'auto' / 'manual'
Timeout handling for a pending reservation whose start time has passed Not implemented. reservation_approvals has no expiry column — it stays pending_approval until manually decided

Everything else (the plan-editor toggle, guest-path handling of pending_approval, the guest-facing "awaiting approval" screen, approval/rejection emails, and avoiding double key issuance) is implemented. See internal ADR-0041 for design details.


FAQ

Q: What does a guest see while awaiting approval?

The booking-complete screen shows an "Awaiting Approval" state: "Your reservation request has been received. Please wait for the facility to approve it. You'll be notified by email once it's approved. For paid plans, a payment link follows approval."

Q: Is the rejection reason emailed to the guest?

Yes. Rejecting sends the guest an automatic email containing the reason you entered.

Q: Are approval / rejection actions logged?

Yes. Each decision is written to reservation_approvals (decided_by / decided_at / rejection_reason).

Q: Do member reservations also require approval every time?

No. A reservation that draws from a member's unlimited-use quota bypasses approval and confirms automatically. Approval only applies to regular reservations that don't consume a quota.

Q: Is there a "first-time approval only, auto-confirm thereafter" mode?

approval_mode itself has no "first-time only" value. To achieve the same effect, use a membership plan (apply-first / screened signup) — approve the member once at signup, and their reservations confirm automatically afterward.

Q: What happens if a pending reservation passes its start time?

Nothing automatic today. It stays pending_approval until you manually approve or reject it.

Q: Can I approve/reject from the Reservation dashboard too?

Yes. The reservation detail pane (opened from the reservation list or calendar) shows the same approve/reject controls for any pending_approval reservation.

Q: I turned on approval mode but nothing shows up under "Pending Reservations" on the Forms page

The plan probably doesn't have the Default Pending Reservation Form attached. This tab only lists responses to that form, so a plan without it attached won't surface its pending reservations here. Either attach the form ("Applied Forms" in Plan Settings) or handle it directly from the reservation detail pane on the Reservation dashboard.


Open the MarkdownPaste it into an AI assistant.

Ask about this article

AI answers from this article's content.