Booking System
Booking is the heart of Royal Glow. A customer taps Book Now, picks a date and time, chooses their services, and submits — all in a single dialog that opens right over the homepage. Staff then confirm the request, assign a stylist or therapist, and complete the appointment on the day.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
One service type per booking — a booking is Salon or SPA, never mixed.
This hard separation keeps the two sides of the business cleanly split for
reporting and is enforced from the dialog through to the database.
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.