The booking dialog is not a separate page. It opens as an overlay on the
homepage (a bottom sheet on mobile, a centered modal on desktop). The homepage
CTA never sends customers to
/book — that route is reserved for Meta-ad lead
capture (see CRM & Lead Pipeline).What it is
A streamlined way for customers to request an appointment without leaving the homepage. Instead of a long multi-page form, everything happens in a four-step dialog. A booking starts life as a request (statuspending) — the salon
confirms it shortly after, so the customer is never left wondering whether their
slot is locked in.
How it works — the 4-step dialog
The dialog walks the customer through four short steps:1
Date & slot
Branch (auto-selected as Rayasandra in Phase 1), name and email prefilled from
the profile (not editable), a date picker for future dates only, and the
available time slots for that day. Fully booked or closed slots are greyed out.
2
Choose category
A Salon / SPA toggle, then multi-select category cards within the chosen type.
One booking is one type only — Salon or SPA, never both — which keeps the
two sides of the business cleanly separated for reporting.
3
Choose services
Service cards under the selected categories, with a running total at the bottom
(e.g. “3 services · ₹3,500.00”). SPA services that come in 60-minute and
90-minute variants appear as a single card with a duration selector.
4
Summary
A “Booking Submitted!” confirmation showing the booking number, the selected
services with prices, the GST-inclusive total, a “Pay at the salon (Cash / UPI /
Card)” note, and the customer’s current gems balance.
If the customer is not signed in when they trigger the dialog, the booking
context (
book=1, any UTM values, and leadId) is saved to sessionStorage,
they sign in with Google, and the dialog re-opens automatically afterwards —
so the journey is never lost.Entry points
There is one booking dialog, reached from several places:
Customers arriving with no UTM are attributed as
organic. First-touch
attribution is stored once and never overwritten by later visits.
How it works — the booking lifecycle
Every booking moves through a defined set of states:1
pending
The initial state for every online booking. The customer can edit services,
reschedule, or cancel. (Walk-ins skip this state.)
2
confirmed
A receptionist or manager approved the request and assigned staff. The customer
can still reschedule or cancel.
3
in_progress
The customer is in the salon and the service is underway.
4
completed
The service is done — an invoice is generated, gems are awarded, and a
confirmation email is sent.
rejected (declined with a reason from
pending), cancelled (from pending or confirmed), no_show (15 minutes
after the end time when the customer never arrived), and rescheduled (moved to
a new slot from confirmed).
Walk-ins skip
pending. When a receptionist creates a walk-in booking the
customer is already in the salon, so it is created directly as confirmed. A
walk-in no-show therefore does not count toward the no-show tier — there
was no pre-booked slot to miss. See the No-Show Policy.Rules
Who chooses the staff member?
Who chooses the staff member?
The customer does not. A receptionist or manager assigns staff per service when
approving the booking. Customers can leave a staff preference in the notes, but
the assignment decision stays with the salon.
How many times can a booking be rescheduled?
How many times can a booking be rescheduled?
Up to 2 reschedules per booking, each at least 1 hour before the appointment. A
3rd attempt is blocked — the customer must cancel and re-book.
What are the cancellation rules?
What are the cancellation rules?
Cancellation is free more than 4 hours before the appointment. Within 4 hours it
is tagged in CRM (no fee, ever). Cancellation is not possible once a booking is
in_progress. The cut-off is configurable — see
Booking rules.Why don't past bookings change when prices change?
Why don't past bookings change when prices change?
Pricing is snapshotted. Each
booking_service row freezes the service name and
price at the time of booking, so later catalogue changes never alter a past
booking.When are gems awarded?
When are gems awarded?
On completion. Service bookings earn 1 gem per ₹100 invoiced when the booking is
completed. See Loyalty — Gems.
Booking number format
Every booking gets a human-readable number:H= salon (hair/beauty),S= spaYYMM= two-digit year and month- a 5-digit random suffix keeps numbers unique
- the optional
-Msuffix marks a membership session
BK-RS-2606-H-38291 is a June 2026 salon booking at the Rayasandra
branch.
Related links
Bookings API
Create, list, view, and cancel a booking (customer endpoints).
Admin — Bookings API
Approve, reject, assign, complete, and mark no-show.
No-Show Policy
How no-shows are tracked and escalated.
Booking Rules
Lead time, advance window, cancellation cut-off, and the per-customer cap.
Data Model
The booking, booking_service, and booking_status_log tables.
