For the salon team — the six roles and what each can do, plus daily operations from approving bookings to billing, memberships, leads, schedules, and policies.
For the salon team. This guide explains who can do what, then walks through
the everyday tasks — bookings, payment, membership sessions, customers, the lead
pipeline, offers, and staff schedules. The internal tool is the admin
portal at admin.theroyalglow.in (its own subdomain — pages sit at the root,
with no /admin prefix).
This guide is for the people who run Royal Glow — the front desk, stylists and
therapists, managers, and owners. It explains who can do what, then walks
through the everyday tasks: handling bookings, taking payment, recording
membership sessions, looking after customers, working the lead pipeline, running
offers, and managing staff schedules.
Access is organised into six levels. Each level can do everything the one below
it can, plus more. This keeps the front desk focused and sensitive areas (like
pricing and reports) limited to the right people.
This matrix is the quick answer to “can this person do that?” A ✅ means yes.
Capability
Staff
Receptionist
Manager
Owner
Developer
View own bookings & submit own leave
✅
✅
✅
✅
✅
View all bookings
❌
✅
✅
✅
✅
Approve / reject / assign bookings
❌
✅
✅
✅
✅
Create walk-ins, mark status, checkout
❌
✅
✅
✅
✅
Generate invoices & take payment
❌
✅
✅
✅
✅
Create memberships & record sessions
❌
✅
✅
✅
✅
CRM notes, tags, lead pipeline
❌
✅
✅
✅
✅
Approve / reject leave
❌
✅
✅
✅
✅
Edit service prices & catalogue
❌
❌
✅
✅
✅
Create / edit offers
❌
❌
✅
✅
✅
Cancel a membership / edit tier defaults
❌
❌
✅
✅
✅
Financial reports & analytics
❌
❌
✅
✅
✅
Edit staff schedules & system settings
❌
❌
✅
✅
✅
Add / remove staff & receptionists
❌
❌
✅
✅
✅
Manage user accounts & roles
❌
❌
❌
✅
✅
Add / edit branches
❌
❌
❌
✅
✅
Integrations & error logs
❌
❌
❌
❌
✅
Receptionists cannot change prices. They take payment and apply offers,
but editing the price list is a Manager-and-above task. This protects pricing
integrity at the front desk.
A note on staff: a Stylist or Therapist sees only their own assigned
appointments and the service notes attached to them (for example, “allergic to
ammonia”). They cannot see other staff’s bookings, customer phone numbers or
emails, prices, or any CRM data.
New online bookings arrive as Pending and appear live on the dashboard and
the bookings list. To handle one:
1
Open the booking
Open it from the dashboard or the Bookings list.
2
Review the details
Review the customer, services, date, and time.
3
Assign staff
Assign a staff member to each service (a dropdown per service).
4
Approve or reject
Click Approve to confirm it, or Reject and give a reason.
When you approve, the customer is notified and the booking becomes
Confirmed. When you reject, the customer sees the reason you typed and can
book again, so write something helpful (for example, “Staff unavailable at 3:30
PM — please try 4:00 PM”).
When the service is finished, the same checkout flow handles payment, the
invoice, and loyalty gems in one go:
1
Mark In Progress
On the confirmed booking, mark it In Progress when the customer checks in.
2
Open checkout
When the service is done, click Mark Completed to open checkout.
3
Apply an offer (optional)
Optionally apply one offer (max one per customer per day).
4
Choose payment method
Choose the payment method: Cash, UPI, or Card.
5
Review the invoice
Review the invoice preview (line items, GST split, total).
6
Complete & generate invoice
Click Complete & Generate Invoice.
The system then, in a single step:
Marks the booking Completed
Creates a GST-compliant invoice (18% GST, shown as CGST 9% + SGST 9%)
Generates a branded PDF and emails it to the customer
Awards gems — 1 gem per ₹100 on the bill (rounded down)
Updates the customer’s visit count, lifetime value, and the day’s revenue
Prices on an invoice are frozen. Each line item stores the service name
and price as they were at the time of sale. Changing a price later never
alters past invoices.
When a member comes in for a spa session, you record it against their hours
instead of taking payment:
1
Open the membership
Open it from Memberships (or the customer’s profile).
2
Record a session
Click Record Session.
3
Select services & duration
Select the service(s) performed and confirm the duration.
4
Save
Save the session.
This deducts the time from their balance, creates a ₹0 invoice as a usage
record, and emails a session confirmation. If the requested time is more than
the hours remaining, the system blocks it and suggests a shorter session or
paying per-service for the extra time. Membership sessions earn no gems.
The Customers area is the salon’s memory of every client.
Find anyone by name, phone, or email; sort by lifetime value, visits, or
recent activity.
Each profile shows visit history, invoices, membership, gems, and notes.
Notes let the team record useful context (preferences, allergies,
conversations). Add a note from the customer’s profile.
Tags group customers. Some are applied automatically (for example
vip for high spenders, loyal for frequent visitors, dormant for those
who haven’t visited in a while). Others are manual (for example bridal,
corporate, influencer). Auto tags can’t be removed; manual ones can.
Leads are prospects who came from Meta / Instagram ads (via the /book ad
landing page or a Meta lead form). They’re different from bookings — a lead
hasn’t reserved a slot yet, they’ve just expressed interest. The Leads area
shows them as a board you move across stages:
New → Contacted → Follow-up → Booked → Won / Lost
New
Just captured. Not yet contacted.
Contacted
You’ve reached out (call or WhatsApp).
Follow-up
Interested but not booked yet — needs nurturing.
Booked
They’ve made a booking linked to this lead.
Won
The booking was completed and paid — revenue attributed.
Lost
They didn’t convert (record a reason).
Each lead card shows the name, phone (tap to call or open WhatsApp), service
interest, and which campaign brought them in. Leads with no contact for 48 hours
are flagged as stale so nothing slips through. When a lead books and
completes a paid visit, it moves to Won automatically.
A customer who finds you through Google, the in-salon QR code, or by typing
the website directly is a normal booking/customer, not a lead. The lead
pipeline is specifically for paid-ad prospects.
Managers and above create promotions in the Offers area. There are three
types:
Type
Example
Percentage off
”20% off all facials this week”
Flat discount
”₹500 off any hair treatment”
Combo price
”Hair + Facial + Manicure = ₹2,999”
Offers have start and end dates and activate or expire automatically. The rules:
one offer per customer per day, applied by the receptionist at checkout, can’t
be combined with gems, and they apply to salon services (not spa memberships).
The Schedule area shows every staff member’s working hours and booked slots
as a grid. Bookings only land on staff who are available, so keeping schedules
accurate matters.Leave follows a clear request → review → decision flow:
1
Submit
A staff member submits a leave request for a future date. It starts as Pending.
2
Review
Receptionists and the manager are notified and review it in Leave.
3
Decide
They Approve (which blocks that staff member’s availability for the date) or
Reject with a reason.
Leave status
Effect on availability
Who sets it
Pending
None — bookings are unaffected
Staff (self-submit)
Approved
Blocks that day for that staff member
Receptionist / Manager
Rejected
None
Receptionist / Manager
Leave types are Sick, Casual, Personal, and Other. Staff can withdraw a request
while it’s still pending, but an approved leave must be changed by a manager. If
an approved leave clashes with existing confirmed bookings, the system warns the
team to reassign them — it doesn’t block the approval.
A no-show is a confirmed booking the customer didn’t attend and didn’t cancel.
The policy is gentle for occasional misses and firmer for repeat offenders:
No-shows
What happens
1 to 3
A “No-Show Risk” note/tag is added to the customer. No restriction.
4 or more within 90 days
Future bookings need manager approval before they’re confirmed. The customer is notified.
Recovery: a customer who completes 3 bookings in a row without a no-show
has the approval requirement and the risk tag removed. Any new no-show resets
that recovery count. As noted above, walk-in no-shows never count toward this
tally.
{"docsConfig":{"theme":"aspen","$schema":"https://mintlify.com/docs.json","name":"Royal Glow Salon \u0026 Spa","description":"Product, engineering, operations, and API documentation for the Royal Glow Salon \u0026 Spa platform — the digital operations system behind a premium beauty and wellness business in Bengaluru.","colors":{"primary":"#7D5C12","light":"#F4E09B","dark":"#7D5C12"},"logo":{"light":"https://mintcdn.com/royal-glow-salon-and-spa/dS3ivn1eYYDGMU1q/logo/brand.png?fit=max\u0026auto=format\u0026n=dS3ivn1eYYDGMU1q\u0026q=85\u0026s=9850260e71bb5f24f582245caa612a92","dark":"https://mintcdn.com/royal-glow-salon-and-spa/dS3ivn1eYYDGMU1q/logo/brand.png?fit=max\u0026auto=format\u0026n=dS3ivn1eYYDGMU1q\u0026q=85\u0026s=9850260e71bb5f24f582245caa612a92","href":"https://theroyalglow.in"},"favicon":"https://mintcdn.com/royal-glow-salon-and-spa/dS3ivn1eYYDGMU1q/favicon.png?fit=max\u0026auto=format\u0026n=dS3ivn1eYYDGMU1q\u0026q=85\u0026s=f7b817d1fd2cbdf016f7c736130321d4","appearance":{"default":"light","strict":false},"background":{"color":{"light":"#FFFFFF","dark":"#1A0F0A"}},"navbar":{"links":[{"icon":"github","href":"https://github.com/royalglowsalonspa/theroyalglow-webapp","label":"GitHub"}],"primary":{"type":"button","label":"Book Now","href":"https://theroyalglow.in/?book=1"}},"footer":{"socials":{"website":"https://theroyalglow.in","github":"https://github.com/royalglowsalonspa/theroyalglow-webapp"},"links":[{"header":"Documentation","items":[{"label":"Overview","href":"/content/docs/index"},{"label":"Product","href":"/content/docs/product/index"},{"label":"Features","href":"/content/docs/features/index"},{"label":"FAQ","href":"/content/docs/faq"}]},{"header":"Engineering","items":[{"label":"Getting started","href":"/content/docs/getting-started"},{"label":"Architecture","href":"/content/docs/architecture"},{"label":"System design","href":"/content/docs/system-design/index"},{"label":"Operations","href":"/content/docs/operations"}]},{"header":"API reference","items":[{"label":"Overview","href":"/content/docs/api-reference/index"},{"label":"Services","href":"/content/docs/api-reference/services"},{"label":"Bookings","href":"/content/docs/api-reference/bookings"},{"label":"Background jobs","href":"/content/docs/api-reference/jobs"}]},{"header":"Royal Glow","items":[{"label":"Main site","href":"https://theroyalglow.in"},{"label":"Admin portal","href":"https://admin.theroyalglow.in"},{"label":"Status page","href":"https://status.theroyalglow.in"},{"label":"GitHub","href":"https://github.com/royalglowsalonspa/theroyalglow-webapp"}]}]},"search":{"prompt":"Search Royal Glow documentation"},"seo":{"metatags":{"og:site_name":"Royal Glow Salon \u0026 Spa Documentation","twitter:card":"summary_large_image"},"organization":{"id":"https://theroyalglow.in/#organization","name":"Royal Glow Salon \u0026 Spa","url":"https://theroyalglow.in","sameAs":["https://github.com/royalglowsalonspa"]},"indexing":"navigable"},"icons":{"library":"lucide"},"styling":{"eyebrows":"breadcrumbs","codeblocks":{"theme":{"light":"gruvbox-light-medium","dark":"gruvbox-dark-medium"}},"latex":true},"contextual":{"options":["copy","view","chatgpt","claude","cursor","mcp"],"display":"header"},"thumbnails":{"appearance":"dark","fonts":{"family":"Plus Jakarta Sans"}},"interaction":{"drilldown":false},"metadata":{"timestamp":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"royal-glow-salon-and-spa","hasAudioNarration":false,"actualSubdomain":"royal-glow-salon-and-spa","customDomains":["docs.theroyalglow.in"],"gitSource":{"type":"github","owner":"royalglowsalonspa","repo":"theroyalglow-webapp","deployBranch":"prod","contentDirectory":"docs","isPrivate":false,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6addf05d97966bd2c9ffd5e9","collectionId":"372ca85f-9792-430d-8e4b-b064b5e0e2cd","liveDeploymentHistoryId":"6addf05d97966bd2c9ffd5e9","schemaVersion":"v3"},"feedback":{"thumbs":true,"edits":true,"issues":true,"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6addf05d97966bd2c9ffd5e9","clientVersion":"0.0.3971","searchFilterCounts":[{"language":"default","tag":"Engineering","count":35},{"language":"default","tag":"API reference","count":22},{"language":"default","tag":"Documentation","count":20},{"language":"default","tag":"Features","count":12},{"language":"default","tag":"Delivery workflow","count":8},{"language":"default","tag":"Platform","count":6},{"language":"default","tag":"Overview","count":4},{"language":"default","tag":"Operations","count":4},{"language":"default","tag":"Quality \u0026 security","count":4},{"language":"default","tag":"Product","count":4}],"searchSettings":{"showContentSnippets":true,"isFiltersEnabled":true,"maxResults":10}},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"privacy":{"consentBanner":{"enabled":true}},"isAtlas":false,"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":":root{--rg-royal-gold:#f4e09b;--rg-deep-gold:#c8a961;--rg-accessible-gold:#7d5c12;--rg-warm-stone:#d4c5a9;--rg-warm-cream:#fff8e7;--rg-golden-mist:#fff3d4;--rg-canvas:#ffffff;--rg-cocoa:#1a0f0a;--rg-chocolate:#2d1810;--rg-warm-gray:#3d2e1f;--rg-dusty-gray:#8c8c8c;--rg-outline:#cccccc;--rg-cloud:#f4f5f9;--rg-success:#3f7d5c;--rg-error:#b5482e;--rg-radius:4px;--rg-radius-card:6px;--rg-radius-lg:10px;--rg-radius-pill:9999px;--rg-shadow-hover:0 16px 34px -24px rgba(26, 15, 10, 0.28);--rg-shadow-elevated:0 20px 44px -28px rgba(26, 15, 10, 0.4);--rg-surface:var(--rg-canvas);--rg-surface-raised:#fffbf3;--rg-border:rgba(26, 15, 10, 0.1);--rg-border-strong:rgba(26, 15, 10, 0.18);--rg-accent:var(--rg-accessible-gold);--rg-accent-soft:rgba(200, 169, 97, 0.12);--rg-ink:var(--rg-cocoa);--rg-ink-muted:var(--rg-warm-gray);--rg-eyebrow-size:11px;--rg-eyebrow-tracking:1.6px}.dark{color-scheme:dark;--rg-surface:var(--rg-cocoa);--rg-surface-raised:#21140e;--rg-border:rgba(244, 224, 155, 0.12);--rg-border-strong:rgba(244, 224, 155, 0.22);--rg-accent:var(--rg-royal-gold);--rg-accent-soft:rgba(244, 224, 155, 0.1);--rg-ink:var(--rg-warm-cream);--rg-ink-muted:var(--rg-warm-stone);--rg-shadow-hover:0 16px 34px -24px rgba(0, 0, 0, 0.8);--rg-shadow-elevated:0 20px 44px -28px rgba(0, 0, 0, 0.9)}#background-color,#body-content,#content-area,#footer,#sidebar,#sidebar-content,#table-of-contents,body,footer,html{background-color:var(--rg-surface)}#sidebar,#table-of-contents,sidebar-nav-group-divider{border-color:var(--rg-border)}img.nav-logo{width:2.75rem!important;height:2.75rem!important;max-width:none!important;object-fit:contain}#navbar{border-bottom:1px solid var(--rg-border);background:var(--rg-surface);backdrop-filter:none;box-shadow:0 1px 0 rgba(26,15,10,.02)}.dark #navbar{box-shadow:0 1px 0 rgba(244,224,155,.03)}.nav-tabs-item,nav-tabs-item,navbar-link{font-size:13px;font-weight:650;letter-spacing:0;text-transform:none}#topbar-cta-button{border-radius:var(--rg-radius-pill);box-shadow:none;font-size:13px;font-weight:700;letter-spacing:0}sidebar-group-header{color:var(--rg-ink-muted)}#footer a:hover,.nav-tabs-item[data-active],advanced-footer a:hover,sidebar-group-icon,tab-icon{color:var(--rg-accent)}#sidebar-content li[data-active]{position:relative;background:var(--rg-accent-soft);border-radius:var(--rg-radius)}#sidebar-content li[data-active]::before{content:\"\";position:absolute;inset-inline-start:0;top:50%;translate:0 -50%;height:62%;width:2px;border-radius:var(--rg-radius-pill);background:var(--rg-accent)}.mdx-content thead th,eyebrow,mdx-content thead th,sidebar-group-header{font-size:var(--rg-eyebrow-size);font-weight:700;text-transform:uppercase}eyebrow,sidebar-group-header{letter-spacing:var(--rg-eyebrow-tracking)}eyebrow{color:var(--rg-accent)}toc-item[data-active-deepest]{color:var(--rg-accent);font-weight:600}.mdx-content table,mdx-content table{width:100%;border-collapse:separate;border-spacing:0;border:1px solid var(--rg-border);border-radius:var(--rg-radius-card);overflow:hidden;font-size:14px}.mdx-content thead th,mdx-content thead th{background:var(--rg-surface-raised);letter-spacing:1px;color:var(--rg-ink-muted);text-align:start;padding:10px 14px;white-space:nowrap}.mdx-content tbody td,mdx-content tbody td{padding:11px 14px;border-top:1px solid var(--rg-border);vertical-align:top}.mdx-content tbody tr:hover,mdx-content tbody tr:hover{background:var(--rg-accent-soft)}.mdx-content tbody td:first-child,mdx-content tbody td:first-child{font-weight:600;color:var(--rg-ink);white-space:nowrap}.mdx-content table code,mdx-content table code{font-size:12.5px;padding:1px 5px;border-radius:var(--rg-radius);background:var(--rg-accent-soft);border:1px solid var(--rg-border)}#footer,card,footer{background:var(--rg-surface)}[data-component-part=card-icon],card{border:1px solid var(--rg-border);border-radius:var(--rg-radius-card)}card{transition:border-color 160ms ease,box-shadow 160ms ease,translate 160ms ease}card:hover{translate:0 -2px}[data-component-part=card-icon]{color:var(--rg-accent);background:var(--rg-accent-soft);padding:7px}[data-component-part=card-title]{font-weight:700;letter-spacing:-.01em}[data-component-part=card-content]{color:var(--rg-ink-muted)}callout{border-inline-start-width:3px}code-block{overflow:hidden}callout,code-block,code-group,tabs,tree{border-radius:var(--rg-radius-card)}accordion,pagination-next,pagination-prev{border-radius:var(--rg-radius-card);transition:border-color 140ms ease}accordion:hover{border-color:var(--rg-border-strong)}accordion-group accordion+accordion{margin-top:8px}steps{--rg-step-rail:var(--rg-border)}step{padding-bottom:4px}tree{padding:12px 14px;font-size:13.5px}tree-folder{font-weight:600}pagination-next,pagination-prev{transition:border-color 140ms ease,box-shadow 140ms ease}card:hover,pagination-next:hover,pagination-prev:hover{border-color:var(--rg-border-strong);box-shadow:var(--rg-shadow-hover)}#footer,footer{border-top:1px solid var(--rg-border)}advanced-footer{padding-block:48px 32px}#footer h3,#footer h4,advanced-footer h3,advanced-footer h4{letter-spacing:var(--rg-eyebrow-tracking);color:var(--rg-ink)}#footer a,advanced-footer a{color:var(--rg-ink-muted);text-decoration-color:transparent;transition:color 140ms ease}.dark .rg-hero,.rg-hero,tree{background:var(--rg-surface-raised)}.rg-hero,accordion,code-block,pagination-next,pagination-prev,tree{border:1px solid var(--rg-border)}.rg-hero{position:relative;overflow:hidden;border-radius:var(--rg-radius-lg);padding:40px 32px;margin-bottom:8px;box-shadow:inset 0 1px 0 rgba(255,255,255,.35)}.dark .rg-hero{box-shadow:inset 0 1px 0 rgba(244,224,155,.04)}#footer h3,#footer h4,.rg-facts li,.rg-hero-eyebrow,advanced-footer h3,advanced-footer h4{font-size:var(--rg-eyebrow-size);font-weight:700;text-transform:uppercase}.rg-hero-eyebrow{display:inline-block;letter-spacing:var(--rg-eyebrow-tracking);color:var(--rg-accent);margin-bottom:10px}.rg-hero .rg-hero-title,.rg-hero h1{font-size:clamp(28px,4vw,40px);font-weight:800;line-height:1.1;letter-spacing:-.02em;color:var(--rg-ink);margin:0 0 10px}.rg-hero-lead{font-size:16px;line-height:1.6;color:var(--rg-ink-muted);max-width:62ch;margin:0}.rg-facts{display:flex;flex-wrap:wrap;gap:8px;margin:16px 0 0;padding:0;list-style:none}.rg-facts li{letter-spacing:1px;color:var(--rg-ink-muted);background:var(--rg-surface);border:1px solid var(--rg-border);border-radius:var(--rg-radius-pill);padding:5px 12px}:where(a, button, summary, [tabindex]):focus-visible{outline:2px solid var(--rg-accent);outline-offset:2px;border-radius:var(--rg-radius)}@media (prefers-reduced-motion:reduce){*,::after,::before{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}card:hover,pagination-next:hover,pagination-prev:hover{translate:none;box-shadow:none}}@media print{#footer,#navbar,#sidebar-content,feedback-toolbar,footer,pagination-next,pagination-prev,toc{display:none!important}.mdx-content table,mdx-content table{border-color:#999}}"}],"page":{"pagePath":"content/docs/product/admin-staff-guide","slug":"/content/docs/product/admin-staff-guide","pageMetadata":{"title":"Admin \u0026 Staff Guide","description":"For the salon team — the six roles and what each can do, plus daily operations from approving bookings to billing, memberships, leads, schedules, and policies.","icon":"user-cog","href":"/content/docs/product/admin-staff-guide"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"For the salon team — the six roles and what each can do, plus daily operations from approving bookings to billing, memberships, leads, schedules, and policies.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Accordion,AccordionGroup,Card,CodeBlock,Columns,Heading,Info,Step,Steps,Table}=_components;if(!Accordion)_missingMdxReference(`Accordion`,true);if(!AccordionGroup)_missingMdxReference(`AccordionGroup`,true);if(!Card)_missingMdxReference(`Card`,true);if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Columns)_missingMdxReference(`Columns`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Info)_missingMdxReference(`Info`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Table)_missingMdxReference(`Table`,true);return _jsxs(_Fragment,{children:[_jsx(Info,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`For the salon team.`}),` This guide explains who can do what, then walks through\nthe everyday tasks — bookings, payment, membership sessions, customers, the lead\npipeline, offers, and staff schedules. The internal tool is the `,_jsx(_components.strong,{children:`admin\nportal`}),` at `,_jsx(_components.code,{children:`admin.theroyalglow.in`}),` (its own subdomain — pages sit at the root,\nwith no `,_jsx(_components.code,{children:`/admin`}),` prefix).`]})}),`\n`,_jsx(_components.p,{children:`This guide is for the people who run Royal Glow — the front desk, stylists and\ntherapists, managers, and owners. It explains who can do what, then walks\nthrough the everyday tasks: handling bookings, taking payment, recording\nmembership sessions, looking after customers, working the lead pipeline, running\noffers, and managing staff schedules.`}),`\n`,_jsx(Heading,{level:`2`,id:`the-six-roles`,children:`The six roles`}),`\n`,_jsx(_components.p,{children:`Access is organised into six levels. Each level can do everything the one below\nit can, plus more. This keeps the front desk focused and sensitive areas (like\npricing and reports) limited to the right people.`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes gruvbox-light-medium gruvbox-dark-medium`,style:{backgroundColor:`#fbf1c7`,\"--shiki-dark-bg\":`#282828`,color:`#3c3836`,\"--shiki-dark\":`#ebdbb2`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Customer \u003c Staff \u003c Receptionist \u003c Manager \u003c Owner \u003c Developer`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Role`}),_jsx(_components.th,{children:`Who they are`}),_jsx(_components.th,{children:`What they focus on`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Customer`})}),_jsx(_components.td,{children:`The end user.`}),_jsx(_components.td,{children:`Booking and managing their own appointments — no admin access at all.`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`Staff`}),` (Stylist / Therapist)`]}),_jsx(_components.td,{children:`Performs services.`}),_jsx(_components.td,{children:`Their own appointments and their own leave. Nothing else.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Receptionist`})}),_jsx(_components.td,{children:`The front desk.`}),_jsx(_components.td,{children:`The daily engine — bookings, billing, memberships, CRM, leads, leave approvals.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Manager`})}),_jsx(_components.td,{children:`Operations lead.`}),_jsx(_components.td,{children:`Everything reception does, plus prices, services, offers, reports, staff, and settings.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Owner`})}),_jsx(_components.td,{children:`The business owner.`}),_jsx(_components.td,{children:`Everything a manager does, plus managing user accounts and branches.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Developer`})}),_jsx(_components.td,{children:`Maintains the software.`}),_jsx(_components.td,{children:`Full access, plus integrations and system logs.`})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`what-each-role-can-access`,children:`What each role can access`}),`\n`,_jsx(_components.p,{children:`This matrix is the quick answer to “can this person do that?” A ✅ means yes.`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Capability`}),_jsx(_components.th,{style:{textAlign:`center`},children:`Staff`}),_jsx(_components.th,{style:{textAlign:`center`},children:`Receptionist`}),_jsx(_components.th,{style:{textAlign:`center`},children:`Manager`}),_jsx(_components.th,{style:{textAlign:`center`},children:`Owner`}),_jsx(_components.th,{style:{textAlign:`center`},children:`Developer`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`View own bookings \u0026 submit own leave`}),_jsx(_components.td,{style:{textAlign:`center`},children:`✅`}),_jsx(_components.td,{style:{textAlign:`center`},children:`✅`}),_jsx(_components.td,{style:{textAlign:`center`},children:`✅`}),_jsx(_components.td,{style:{textAlign:`center`},children:`✅`}),_jsx(_components.td,{style:{textAlign:`center`},children:`✅`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`View all bookings`}),_jsx(_components.td,{style:{textAlign:`center`},children:`❌`}),_jsx(_components.td,{style:{textAlign:`center`},children:`✅`}),_jsx(_components.td,{style:{textAlign:`center`},children:`✅`}),_jsx(_components.td,{style:{textAlign:`center`},children:`✅`}),_jsx(_components.td,{style:{textAlign:`center`},children:`✅`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Approve / reject / assign bookings`}),_jsx(_components.td,{style:{textAlign:`center`},children:`❌`}),_jsx(_components.td,{style:{textAlign:`center`},children:`✅`}),_jsx(_components.td,{style:{textAlign:`center`},children:`✅`}),_jsx(_components.td,{style:{textAlign:`center`},children:`✅`}),_jsx(_components.td,{style:{textAlign:`center`},children:`✅`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Create walk-ins, mark status, checkout`}),_jsx(_components.td,{style:{textAlign:`center`},children:`❌`}),_jsx(_components.td,{style:{textAlign:`center`},children:`✅`}),_jsx(_components.td,{style:{textAlign:`center`},children:`✅`}),_jsx(_components.td,{style:{textAlign:`center`},children:`✅`}),_jsx(_components.td,{style:{textAlign:`center`},children:`✅`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Generate invoices \u0026 take payment`}),_jsx(_components.td,{style:{textAlign:`center`},children:`❌`}),_jsx(_components.td,{style:{textAlign:`center`},children:`✅`}),_jsx(_components.td,{style:{textAlign:`center`},children:`✅`}),_jsx(_components.td,{style:{textAlign:`center`},children:`✅`}),_jsx(_components.td,{style:{textAlign:`center`},children:`✅`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Create memberships \u0026 record sessions`}),_jsx(_components.td,{style:{textAlign:`center`},children:`❌`}),_jsx(_components.td,{style:{textAlign:`center`},children:`✅`}),_jsx(_components.td,{style:{textAlign:`center`},children:`✅`}),_jsx(_components.td,{style:{textAlign:`center`},children:`✅`}),_jsx(_components.td,{style:{textAlign:`center`},children:`✅`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`CRM notes, tags, lead pipeline`}),_jsx(_components.td,{style:{textAlign:`center`},children:`❌`}),_jsx(_components.td,{style:{textAlign:`center`},children:`✅`}),_jsx(_components.td,{style:{textAlign:`center`},children:`✅`}),_jsx(_components.td,{style:{textAlign:`center`},children:`✅`}),_jsx(_components.td,{style:{textAlign:`center`},children:`✅`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Approve / reject leave`}),_jsx(_components.td,{style:{textAlign:`center`},children:`❌`}),_jsx(_components.td,{style:{textAlign:`center`},children:`✅`}),_jsx(_components.td,{style:{textAlign:`center`},children:`✅`}),_jsx(_components.td,{style:{textAlign:`center`},children:`✅`}),_jsx(_components.td,{style:{textAlign:`center`},children:`✅`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Edit service prices \u0026 catalogue`}),_jsx(_components.td,{style:{textAlign:`center`},children:`❌`}),_jsx(_components.td,{style:{textAlign:`center`},children:`❌`}),_jsx(_components.td,{style:{textAlign:`center`},children:`✅`}),_jsx(_components.td,{style:{textAlign:`center`},children:`✅`}),_jsx(_components.td,{style:{textAlign:`center`},children:`✅`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Create / edit offers`}),_jsx(_components.td,{style:{textAlign:`center`},children:`❌`}),_jsx(_components.td,{style:{textAlign:`center`},children:`❌`}),_jsx(_components.td,{style:{textAlign:`center`},children:`✅`}),_jsx(_components.td,{style:{textAlign:`center`},children:`✅`}),_jsx(_components.td,{style:{textAlign:`center`},children:`✅`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Cancel a membership / edit tier defaults`}),_jsx(_components.td,{style:{textAlign:`center`},children:`❌`}),_jsx(_components.td,{style:{textAlign:`center`},children:`❌`}),_jsx(_components.td,{style:{textAlign:`center`},children:`✅`}),_jsx(_components.td,{style:{textAlign:`center`},children:`✅`}),_jsx(_components.td,{style:{textAlign:`center`},children:`✅`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Financial reports \u0026 analytics`}),_jsx(_components.td,{style:{textAlign:`center`},children:`❌`}),_jsx(_components.td,{style:{textAlign:`center`},children:`❌`}),_jsx(_components.td,{style:{textAlign:`center`},children:`✅`}),_jsx(_components.td,{style:{textAlign:`center`},children:`✅`}),_jsx(_components.td,{style:{textAlign:`center`},children:`✅`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Edit staff schedules \u0026 system settings`}),_jsx(_components.td,{style:{textAlign:`center`},children:`❌`}),_jsx(_components.td,{style:{textAlign:`center`},children:`❌`}),_jsx(_components.td,{style:{textAlign:`center`},children:`✅`}),_jsx(_components.td,{style:{textAlign:`center`},children:`✅`}),_jsx(_components.td,{style:{textAlign:`center`},children:`✅`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Add / remove staff \u0026 receptionists`}),_jsx(_components.td,{style:{textAlign:`center`},children:`❌`}),_jsx(_components.td,{style:{textAlign:`center`},children:`❌`}),_jsx(_components.td,{style:{textAlign:`center`},children:`✅`}),_jsx(_components.td,{style:{textAlign:`center`},children:`✅`}),_jsx(_components.td,{style:{textAlign:`center`},children:`✅`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Manage user accounts \u0026 roles`}),_jsx(_components.td,{style:{textAlign:`center`},children:`❌`}),_jsx(_components.td,{style:{textAlign:`center`},children:`❌`}),_jsx(_components.td,{style:{textAlign:`center`},children:`❌`}),_jsx(_components.td,{style:{textAlign:`center`},children:`✅`}),_jsx(_components.td,{style:{textAlign:`center`},children:`✅`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Add / edit branches`}),_jsx(_components.td,{style:{textAlign:`center`},children:`❌`}),_jsx(_components.td,{style:{textAlign:`center`},children:`❌`}),_jsx(_components.td,{style:{textAlign:`center`},children:`❌`}),_jsx(_components.td,{style:{textAlign:`center`},children:`✅`}),_jsx(_components.td,{style:{textAlign:`center`},children:`✅`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Integrations \u0026 error logs`}),_jsx(_components.td,{style:{textAlign:`center`},children:`❌`}),_jsx(_components.td,{style:{textAlign:`center`},children:`❌`}),_jsx(_components.td,{style:{textAlign:`center`},children:`❌`}),_jsx(_components.td,{style:{textAlign:`center`},children:`❌`}),_jsx(_components.td,{style:{textAlign:`center`},children:`✅`})]})]})]}),`\n`,_jsx(Info,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Receptionists cannot change prices.`}),` They take payment and apply offers,\nbut editing the price list is a Manager-and-above task. This protects pricing\nintegrity at the front desk.`]})}),`\n`,_jsxs(_components.p,{children:[`A note on staff: a Stylist or Therapist sees only their `,_jsx(_components.strong,{children:`own`}),` assigned\nappointments and the service notes attached to them (for example, “allergic to\nammonia”). They cannot see other staff’s bookings, customer phone numbers or\nemails, prices, or any CRM data.`]}),`\n`,_jsx(Heading,{level:`2`,id:`daily-operations`,children:`Daily operations`}),`\n`,_jsx(Heading,{level:`3`,id:`approving-and-assigning-bookings`,children:`Approving and assigning bookings`}),`\n`,_jsxs(_components.p,{children:[`New online bookings arrive as `,_jsx(_components.strong,{children:`Pending`}),` and appear live on the dashboard and\nthe bookings list. To handle one:`]}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Open the booking`,children:_jsxs(_components.p,{children:[`Open it from the dashboard or the `,_jsx(_components.strong,{children:`Bookings`}),` list.`]})}),_jsx(Step,{title:`Review the details`,children:_jsx(_components.p,{children:`Review the customer, services, date, and time.`})}),_jsx(Step,{title:`Assign staff`,children:_jsx(_components.p,{children:`Assign a staff member to each service (a dropdown per service).`})}),_jsx(Step,{title:`Approve or reject`,children:_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Approve`}),` to confirm it, or `,_jsx(_components.strong,{children:`Reject`}),` and give a reason.`]})})]}),`\n`,_jsxs(_components.p,{children:[`When you approve, the customer is notified and the booking becomes\n`,_jsx(_components.strong,{children:`Confirmed`}),`. When you reject, the customer sees the reason you typed and can\nbook again, so write something helpful (for example, “Staff unavailable at 3:30\nPM — please try 4:00 PM”).`]}),`\n`,_jsx(Heading,{level:`3`,id:`walk-ins`,children:`Walk-ins`}),`\n`,_jsx(_components.p,{children:`When a customer arrives without booking, create a walk-in:`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Start a walk-in`,children:_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`+ Walk-in`}),`.`]})}),_jsx(Step,{title:`Find or create the customer`,children:_jsx(_components.p,{children:`Search for the customer (or create a new one).`})}),_jsx(Step,{title:`Pick services \u0026 staff`,children:_jsx(_components.p,{children:`Pick the service type, services, and assign staff.`})}),_jsx(Step,{title:`Set the time and save`,children:_jsx(_components.p,{children:`Set the time (defaults to now) and save.`})})]}),`\n`,_jsxs(_components.p,{children:[`Walk-ins skip “pending” and are `,_jsx(_components.strong,{children:`confirmed immediately`}),`, because the customer\nis already in front of you.`]}),`\n`,_jsx(Info,{children:_jsxs(_components.p,{children:[`A no-show on a walk-in `,_jsx(_components.strong,{children:`never`}),` counts against the customer — a walk-in is\nonly created when they’re physically present, so there’s no slot to miss.`]})}),`\n`,_jsx(Heading,{level:`3`,id:`completing-a-booking-→-invoice-→-gems`,children:`Completing a booking → invoice → gems`}),`\n`,_jsx(_components.p,{children:`When the service is finished, the same checkout flow handles payment, the\ninvoice, and loyalty gems in one go:`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Mark In Progress`,children:_jsxs(_components.p,{children:[`On the confirmed booking, mark it `,_jsx(_components.strong,{children:`In Progress`}),` when the customer checks in.`]})}),_jsx(Step,{title:`Open checkout`,children:_jsxs(_components.p,{children:[`When the service is done, click `,_jsx(_components.strong,{children:`Mark Completed`}),` to open checkout.`]})}),_jsx(Step,{title:`Apply an offer (optional)`,children:_jsxs(_components.p,{children:[`Optionally apply `,_jsx(_components.strong,{children:`one offer`}),` (max one per customer per day).`]})}),_jsx(Step,{title:`Choose payment method`,children:_jsxs(_components.p,{children:[`Choose the payment method: `,_jsx(_components.strong,{children:`Cash, UPI, or Card`}),`.`]})}),_jsx(Step,{title:`Review the invoice`,children:_jsx(_components.p,{children:`Review the invoice preview (line items, GST split, total).`})}),_jsx(Step,{title:`Complete \u0026 generate invoice`,children:_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Complete \u0026 Generate Invoice`}),`.`]})})]}),`\n`,_jsx(_components.p,{children:`The system then, in a single step:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Marks the booking `,_jsx(_components.strong,{children:`Completed`})]}),`\n`,_jsxs(_components.li,{children:[`Creates a `,_jsx(_components.strong,{children:`GST-compliant invoice`}),` (18% GST, shown as CGST 9% + SGST 9%)`]}),`\n`,_jsxs(_components.li,{children:[`Generates a branded `,_jsx(_components.strong,{children:`PDF`}),` and `,_jsx(_components.strong,{children:`emails it`}),` to the customer`]}),`\n`,_jsxs(_components.li,{children:[`Awards `,_jsx(_components.strong,{children:`gems`}),` — 1 gem per ₹100 on the bill (rounded down)`]}),`\n`,_jsx(_components.li,{children:`Updates the customer’s visit count, lifetime value, and the day’s revenue`}),`\n`]}),`\n`,_jsx(Info,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Prices on an invoice are frozen.`}),` Each line item stores the service name\nand price as they were at the time of sale. Changing a price later never\nalters past invoices.`]})}),`\n`,_jsx(Heading,{level:`3`,id:`recording-a-membership-session`,children:`Recording a membership session`}),`\n`,_jsx(_components.p,{children:`When a member comes in for a spa session, you record it against their hours\ninstead of taking payment:`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Open the membership`,children:_jsxs(_components.p,{children:[`Open it from `,_jsx(_components.strong,{children:`Memberships`}),` (or the customer’s profile).`]})}),_jsx(Step,{title:`Record a session`,children:_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Record Session`}),`.`]})}),_jsx(Step,{title:`Select services \u0026 duration`,children:_jsx(_components.p,{children:`Select the service(s) performed and confirm the duration.`})}),_jsx(Step,{title:`Save`,children:_jsx(_components.p,{children:`Save the session.`})})]}),`\n`,_jsxs(_components.p,{children:[`This deducts the time from their balance, creates a `,_jsx(_components.strong,{children:`₹0 invoice`}),` as a usage\nrecord, and emails a session confirmation. If the requested time is more than\nthe hours remaining, the system blocks it and suggests a shorter session or\npaying per-service for the extra time. Membership sessions earn `,_jsx(_components.strong,{children:`no gems`}),`.`]}),`\n`,_jsx(Heading,{level:`3`,id:`managing-customers-crm`,children:`Managing customers (CRM)`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.strong,{children:`Customers`}),` area is the salon’s memory of every client.`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Find anyone`}),` by name, phone, or email; sort by lifetime value, visits, or\nrecent activity.`]}),`\n`,_jsx(_components.li,{children:`Each profile shows visit history, invoices, membership, gems, and notes.`}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Notes`}),` let the team record useful context (preferences, allergies,\nconversations). Add a note from the customer’s profile.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Tags`}),` group customers. Some are applied `,_jsx(_components.strong,{children:`automatically`}),` (for example\n`,_jsx(_components.code,{children:`vip`}),` for high spenders, `,_jsx(_components.code,{children:`loyal`}),` for frequent visitors, `,_jsx(_components.code,{children:`dormant`}),` for those\nwho haven’t visited in a while). Others are `,_jsx(_components.strong,{children:`manual`}),` (for example `,_jsx(_components.code,{children:`bridal`}),`,\n`,_jsx(_components.code,{children:`corporate`}),`, `,_jsx(_components.code,{children:`influencer`}),`). Auto tags can’t be removed; manual ones can.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`the-lead-pipeline`,children:`The lead pipeline`}),`\n`,_jsxs(_components.p,{children:[`Leads are prospects who came from `,_jsx(_components.strong,{children:`Meta / Instagram ads`}),` (via the `,_jsx(_components.code,{children:`/book`}),` ad\nlanding page or a Meta lead form). They’re different from bookings — a lead\nhasn’t reserved a slot yet, they’ve just expressed interest. The `,_jsx(_components.strong,{children:`Leads`}),` area\nshows them as a board you move across stages:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes gruvbox-light-medium gruvbox-dark-medium`,style:{backgroundColor:`#fbf1c7`,\"--shiki-dark-bg\":`#282828`,color:`#3c3836`,\"--shiki-dark\":`#ebdbb2`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`New → Contacted → Follow-up → Booked → Won / Lost`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(AccordionGroup,{children:[_jsx(Accordion,{title:`New`,id:`new`,children:_jsx(_components.p,{children:`Just captured. Not yet contacted.`})}),_jsx(Accordion,{title:`Contacted`,id:`contacted`,children:_jsx(_components.p,{children:`You’ve reached out (call or WhatsApp).`})}),_jsx(Accordion,{title:`Follow-up`,id:`follow-up`,children:_jsx(_components.p,{children:`Interested but not booked yet — needs nurturing.`})}),_jsx(Accordion,{title:`Booked`,id:`booked`,children:_jsx(_components.p,{children:`They’ve made a booking linked to this lead.`})}),_jsx(Accordion,{title:`Won`,id:`won`,children:_jsx(_components.p,{children:`The booking was completed and paid — revenue attributed.`})}),_jsx(Accordion,{title:`Lost`,id:`lost`,children:_jsx(_components.p,{children:`They didn’t convert (record a reason).`})})]}),`\n`,_jsxs(_components.p,{children:[`Each lead card shows the name, phone (tap to call or open WhatsApp), service\ninterest, and which campaign brought them in. Leads with no contact for 48 hours\nare flagged as `,_jsx(_components.strong,{children:`stale`}),` so nothing slips through. When a lead books and\ncompletes a paid visit, it moves to `,_jsx(_components.strong,{children:`Won`}),` automatically.`]}),`\n`,_jsx(Info,{children:_jsxs(_components.p,{children:[`A customer who finds you through Google, the in-salon QR code, or by typing\nthe website directly is a normal `,_jsx(_components.strong,{children:`booking/customer`}),`, not a lead. The lead\npipeline is specifically for paid-ad prospects.`]})}),`\n`,_jsx(Heading,{level:`3`,id:`creating-offers`,children:`Creating offers`}),`\n`,_jsxs(_components.p,{children:[`Managers and above create promotions in the `,_jsx(_components.strong,{children:`Offers`}),` area. There are three\ntypes:`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Type`}),_jsx(_components.th,{children:`Example`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Percentage off`})}),_jsx(_components.td,{children:`”20% off all facials this week”`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Flat discount`})}),_jsx(_components.td,{children:`”₹500 off any hair treatment”`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Combo price`})}),_jsx(_components.td,{children:`”Hair + Facial + Manicure = ₹2,999”`})]})]})]}),`\n`,_jsx(_components.p,{children:`Offers have start and end dates and activate or expire automatically. The rules:\none offer per customer per day, applied by the receptionist at checkout, can’t\nbe combined with gems, and they apply to salon services (not spa memberships).`}),`\n`,_jsx(Heading,{level:`3`,id:`staff-schedules-and-leave`,children:`Staff schedules and leave`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.strong,{children:`Schedule`}),` area shows every staff member’s working hours and booked slots\nas a grid. Bookings only land on staff who are available, so keeping schedules\naccurate matters.`]}),`\n`,_jsxs(_components.p,{children:[`Leave follows a clear `,_jsx(_components.strong,{children:`request → review → decision`}),` flow:`]}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Submit`,children:_jsxs(_components.p,{children:[`A staff member submits a leave request for a future date. It starts as `,_jsx(_components.strong,{children:`Pending`}),`.`]})}),_jsx(Step,{title:`Review`,children:_jsxs(_components.p,{children:[`Receptionists and the manager are notified and review it in `,_jsx(_components.strong,{children:`Leave`}),`.`]})}),_jsx(Step,{title:`Decide`,children:_jsxs(_components.p,{children:[`They `,_jsx(_components.strong,{children:`Approve`}),` (which blocks that staff member’s availability for the date) or\n`,_jsx(_components.strong,{children:`Reject`}),` with a reason.`]})})]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Leave status`}),_jsx(_components.th,{children:`Effect on availability`}),_jsx(_components.th,{children:`Who sets it`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Pending`})}),_jsx(_components.td,{children:`None — bookings are unaffected`}),_jsx(_components.td,{children:`Staff (self-submit)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Approved`})}),_jsx(_components.td,{children:`Blocks that day for that staff member`}),_jsx(_components.td,{children:`Receptionist / Manager`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Rejected`})}),_jsx(_components.td,{children:`None`}),_jsx(_components.td,{children:`Receptionist / Manager`})]})]})]}),`\n`,_jsx(_components.p,{children:`Leave types are Sick, Casual, Personal, and Other. Staff can withdraw a request\nwhile it’s still pending, but an approved leave must be changed by a manager. If\nan approved leave clashes with existing confirmed bookings, the system warns the\nteam to reassign them — it doesn’t block the approval.`}),`\n`,_jsx(Heading,{level:`3`,id:`the-no-show-policy`,children:`The no-show policy`}),`\n`,_jsx(_components.p,{children:`A no-show is a confirmed booking the customer didn’t attend and didn’t cancel.\nThe policy is gentle for occasional misses and firmer for repeat offenders:`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`No-shows`}),_jsx(_components.th,{children:`What happens`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`1 to 3`})}),_jsx(_components.td,{children:`A “No-Show Risk” note/tag is added to the customer. No restriction.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`4 or more within 90 days`})}),_jsxs(_components.td,{children:[`Future bookings need `,_jsx(_components.strong,{children:`manager approval`}),` before they’re confirmed. The customer is notified.`]})]})]})]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Recovery:`}),` a customer who completes `,_jsx(_components.strong,{children:`3 bookings in a row`}),` without a no-show\nhas the approval requirement and the risk tag removed. Any new no-show resets\nthat recovery count. As noted above, walk-in no-shows never count toward this\ntally.`]}),`\n`,_jsx(Heading,{level:`2`,id:`a-day-at-the-front-desk-in-order`,children:`A day at the front desk, in order`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Check the dashboard`,children:_jsx(_components.p,{children:`Pending bookings, today’s appointments, stale leads.`})}),_jsx(Step,{title:`Approve or reject`,children:_jsx(_components.p,{children:`Action pending bookings and assign staff.`})}),_jsx(Step,{title:`Create walk-ins`,children:_jsx(_components.p,{children:`As customers arrive.`})}),_jsx(Step,{title:`Mark In Progress`,children:_jsx(_components.p,{children:`At check-in.`})}),_jsx(Step,{title:`Checkout`,children:_jsx(_components.p,{children:`Completed services — payment, invoice, gems.`})}),_jsx(Step,{title:`Record membership sessions`,children:_jsx(_components.p,{children:`For spa members.`})}),_jsx(Step,{title:`Work the lead pipeline`,children:_jsx(_components.p,{children:`Call and follow up.`})}),_jsx(Step,{title:`Update customer notes and tags`,children:_jsx(_components.p,{children:`As you learn things.`})}),_jsx(Step,{title:`Action leave requests`,children:_jsx(_components.p,{children:`Review and decide.`})})]}),`\n`,_jsx(Heading,{level:`2`,id:`where-to-go-next`,children:`Where to go next`}),`\n`,_jsxs(Columns,{cols:2,children:[_jsx(Card,{title:`Business Overview`,href:`/content/docs/product/business-overview`,children:_jsx(_components.p,{children:`The big-picture view of the business, its modules, and how it makes money.`})}),_jsx(Card,{title:`Customer Guide`,href:`/content/docs/product/customer-guide`,children:_jsx(_components.p,{children:`See exactly what your customers experience when they book online.`})}),_jsx(Card,{title:`Features`,href:`/content/docs/features/index`,children:_jsx(_components.p,{children:`Deeper reference for any module — billing, memberships, CRM, scheduling, and more.`})})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"codeStyling":{"theme":{"light":"gruvbox-light-medium","dark":"gruvbox-dark-medium"}},"config":{},"pageMetadata":{"title":"Admin \u0026 Staff Guide","description":"For the salon team — the six roles and what each can do, plus daily operations from approving bookings to billing, memberships, leads, schedules, and policies.","icon":"user-cog","href":"/content/docs/product/admin-staff-guide"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"The six roles","slug":"the-six-roles","depth":2,"children":[{"title":"What each role can access","slug":"what-each-role-can-access","depth":3,"children":[]}]},{"title":"Daily operations","slug":"daily-operations","depth":2,"children":[{"title":"Approving and assigning bookings","slug":"approving-and-assigning-bookings","depth":3,"children":[]},{"title":"Walk-ins","slug":"walk-ins","depth":3,"children":[]},{"title":"Completing a booking → invoice → gems","slug":"completing-a-booking-→-invoice-→-gems","depth":3,"children":[]},{"title":"Recording a membership session","slug":"recording-a-membership-session","depth":3,"children":[]},{"title":"Managing customers (CRM)","slug":"managing-customers-crm","depth":3,"children":[]},{"title":"The lead pipeline","slug":"the-lead-pipeline","depth":3,"children":[]},{"title":"Creating offers","slug":"creating-offers","depth":3,"children":[]},{"title":"Staff schedules and leave","slug":"staff-schedules-and-leave","depth":3,"children":[]},{"title":"The no-show policy","slug":"the-no-show-policy","depth":3,"children":[]}]},{"title":"A day at the front desk, in order","slug":"a-day-at-the-front-desk-in-order","depth":2,"children":[]},{"title":"Where to go next","slug":"where-to-go-next","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"royal-glow-salon-and-spa","siteName":"Royal Glow Salon \u0026 Spa","title":"Admin \u0026 Staff Guide - Royal Glow Salon \u0026 Spa","navMaps":{"firstHrefInVersion":{"Current":{"href":"/content/docs/product/admin-staff-guide","matchLevel":0},"v2":{"href":"/content/docs-v2","matchLevel":3}},"firstHrefInLanguage":{}},"lastModified":"2026-08-30T10:36:50.549Z","gitLastModified":"2026-08-29T22:46:14.000Z","originalFileLocation":"content/docs/product/admin-staff-guide.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"light\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"For the salon team — the six roles and what each can do, plus daily operations from approving bookings to billing, memberships, leads, schedules, and policies.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Royal Glow Salon \u0026amp; Spa\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/royal-glow-salon-and-spa/y0ASLgrdkFTEuGkt/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/royal-glow-salon-and-spa/y0ASLgrdkFTEuGkt/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/royal-glow-salon-and-spa/y0ASLgrdkFTEuGkt/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/royal-glow-salon-and-spa/y0ASLgrdkFTEuGkt/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/royal-glow-salon-and-spa/y0ASLgrdkFTEuGkt/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/royal-glow-salon-and-spa/y0ASLgrdkFTEuGkt/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/royal-glow-salon-and-spa/y0ASLgrdkFTEuGkt/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/royal-glow-salon-and-spa/y0ASLgrdkFTEuGkt/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/royal-glow-salon-and-spa/y0ASLgrdkFTEuGkt/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Admin \u0026amp; Staff Guide - Royal Glow Salon \u0026amp; Spa\">\u003cmeta data-mint-head property=\"og:description\" content=\"For the salon team — the six roles and what each can do, plus daily operations from approving bookings to billing, memberships, leads, schedules, and policies.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Royal Glow Salon \u0026amp; Spa Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.theroyalglow.in/content/docs/product/admin-staff-guide\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://royal-glow-salon-and-spa.mintlify.app/_mintlify/api/og/v2?division=Product\u0026amp;title=Admin+%26+Staff+Guide\u0026amp;description=For+the+salon+team+%E2%80%94+the+six+roles+and+what+each+can+do%2C+plus+daily+operations+from+approving+bookings+to+billing%2C+memberships%2C+leads%2C+schedules%2C+and+policies.\u0026amp;theme=9ddabff0b3fd2d31abb74056\u0026amp;signature=12dddb5ee2776605b78d3d92443103c87200212ca5e7a10caf81569e2a99d6e8\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Admin \u0026amp; Staff Guide - Royal Glow Salon \u0026amp; Spa\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"For the salon team — the six roles and what each can do, plus daily operations from approving bookings to billing, memberships, leads, schedules, and policies.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://royal-glow-salon-and-spa.mintlify.app/_mintlify/api/og/v2?division=Product\u0026amp;title=Admin+%26+Staff+Guide\u0026amp;description=For+the+salon+team+%E2%80%94+the+six+roles+and+what+each+can+do%2C+plus+daily+operations+from+approving+bookings+to+billing%2C+memberships%2C+leads%2C+schedules%2C+and+policies.\u0026amp;theme=9ddabff0b3fd2d31abb74056\u0026amp;signature=12dddb5ee2776605b78d3d92443103c87200212ca5e7a10caf81569e2a99d6e8\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/royal-glow-salon-and-spa/y0ASLgrdkFTEuGkt/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Royal Glow Salon \u0026amp; Spa\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#7D5C12\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.theroyalglow.in/content/docs/product/admin-staff-guide\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/content/docs/product/admin-staff-guide.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://theroyalglow.in/#organization\",\"name\":\"Royal Glow Salon \u0026 Spa\",\"url\":\"https://theroyalglow.in\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/royal-glow-salon-and-spa/dS3ivn1eYYDGMU1q/logo/brand.png?fit=max\u0026auto=format\u0026n=dS3ivn1eYYDGMU1q\u0026q=85\u0026s=9850260e71bb5f24f582245caa612a92\"},\"sameAs\":[\"https://github.com/royalglowsalonspa\"]},{\"@type\":\"WebSite\",\"@id\":\"https://docs.theroyalglow.in#website\",\"name\":\"Royal Glow Salon \u0026 Spa\",\"url\":\"https://docs.theroyalglow.in\",\"publisher\":{\"@id\":\"https://theroyalglow.in/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.theroyalglow.in/content/docs/product/admin-staff-guide#webpage\",\"url\":\"https://docs.theroyalglow.in/content/docs/product/admin-staff-guide\",\"name\":\"Admin \u0026 Staff Guide\",\"description\":\"For the salon team — the six roles and what each can do, plus daily operations from approving bookings to billing, memberships, leads, schedules, and policies.\",\"dateModified\":\"2026-08-29T22:46:14.000Z\",\"isPartOf\":{\"@id\":\"https://docs.theroyalglow.in#website\"},\"breadcrumb\":{\"@id\":\"https://docs.theroyalglow.in/content/docs/product/admin-staff-guide#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.theroyalglow.in/content/docs/product/admin-staff-guide#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Product\",\"item\":\"https://docs.theroyalglow.in/content/docs/product/index\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Admin \u0026 Staff Guide\",\"item\":\"https://docs.theroyalglow.in/content/docs/product/admin-staff-guide\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.theroyalglow.in/content/docs/product/admin-staff-guide#article\",\"headline\":\"Admin \u0026 Staff Guide\",\"name\":\"Admin \u0026 Staff Guide\",\"description\":\"For the salon team — the six roles and what each can do, plus daily operations from approving bookings to billing, memberships, leads, schedules, and policies.\",\"url\":\"https://docs.theroyalglow.in/content/docs/product/admin-staff-guide\",\"mainEntityOfPage\":{\"@id\":\"https://docs.theroyalglow.in/content/docs/product/admin-staff-guide#webpage\"},\"dateModified\":\"2026-08-29T22:46:14.000Z\",\"publisher\":{\"@id\":\"https://theroyalglow.in/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.theroyalglow.in#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Royal Glow Salon \u0026 Spa\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Royal Glow Salon \u0026 Spa","nav":{"global":null,"versions":[{"version":"Current","default":true,"tag":"Latest","tabs":[{"tab":"Documentation","icon":"book-open","groups":[{"group":"Overview","icon":"compass","pages":[{"title":"Overview","icon":"compass","mode":"wide","href":"/content/docs"},{"title":"Project Status","icon":"gauge","href":"/content/docs/project-status"}]},{"group":"Product","icon":"users","pages":[{"title":"Product","icon":"users","mode":"wide","href":"/content/docs/product/index"},{"title":"Business Overview","icon":"briefcase","href":"/content/docs/product/business-overview"},{"title":"Customer Guide","description":"A friendly, step-by-step guide for customers — discovering the salon, booking, memberships, gems, offers, and signing in.","icon":"user-round","href":"/content/docs/product/customer-guide"},{"title":"Admin \u0026 Staff Guide","icon":"user-cog","href":"/content/docs/product/admin-staff-guide"}]},{"group":"Features","icon":"sparkles","pages":[{"title":"Features","description":"Every Royal Glow feature explained in plain language first, then with the data, rules, and endpoints engineers need.","icon":"sparkles","mode":"wide","href":"/content/docs/features/index"},{"title":"Booking System","icon":"calendar-check","href":"/content/docs/features/booking"},{"title":"Booking Rules","icon":"settings-2","href":"/content/docs/features/booking-rules"},{"title":"SPA Memberships","icon":"crown","href":"/content/docs/features/memberships"},{"title":"Loyalty — Gems","icon":"gem","href":"/content/docs/features/loyalty-gems"},{"title":"Offers \u0026 Combos","icon":"ticket-percent","href":"/content/docs/features/offers"},{"title":"CRM \u0026 Lead Pipeline","icon":"contact","href":"/content/docs/features/crm-leads"},{"title":"Staff Scheduling \u0026 Leave","icon":"calendar-days","href":"/content/docs/features/scheduling-leave"},{"title":"Billing \u0026 Invoicing","icon":"receipt-indian-rupee","href":"/content/docs/features/billing-invoicing"},{"title":"Notifications","icon":"bell","href":"/content/docs/features/notifications"},{"title":"No-Show Policy","icon":"user-x","href":"/content/docs/features/no-show-policy"},{"title":"Favourite Services","icon":"heart","href":"/content/docs/features/favourite-services"}]},{"group":"Reference","icon":"book","pages":[{"title":"Glossary","icon":"library","href":"/content/docs/glossary"},{"title":"Frequently Asked Questions","sidebarTitle":"FAQ","icon":"circle-question-mark","href":"/content/docs/faq"}]}]},{"tab":"Engineering","icon":"code","pages":[{"title":"Engineering","href":"/content/docs/getting-started"}]},{"tab":"API reference","icon":"plug","pages":[{"title":"API reference","href":"/content/docs/api-reference"}]}]},{"version":"v2","tag":"Legacy","pages":[{"title":"v2","href":"/content/docs-v2"}]}]},"title":"Admin \u0026 Staff Guide - Royal Glow Salon \u0026 Spa","buildId":"dpl_DFJrtvUi8HS5F9nkooKuDJsuD5BM","deploymentId":"dpl_DFJrtvUi8HS5F9nkooKuDJsuD5BM","dynamics":[],"chunks":[]}