Bookings
Chair View (Mobile In-Service)
Mobile booking detail switches to Chair View when a booking is starting or in progress. Surfaces the timer, must-know strip, last formula, photo rail, last-time recap, and one-tap rebook + checkout. Phone and tablet.
Last updated 14 July 2026
The mobile booking detail switches to Chair View when the booking is starting or in progress. Same URL, swapped body - built around the active service window with everything you need chair-side at a glance: timer, customer must-knows, formula, photos, last-time recap, and one-tap Rebook + Checkout.
Where to find it - Mobile: Booking detail (
/booking/{id}) when the booking is in service or 15 min before. Web: standard booking detail (no Chair View).
TL;DR
- Activates 15 minutes before start, on arrival, or when in progress.
- Mobile-only (phone + tablet). No platform fork - same component renders on both.
- Three modes: Starting soon / Checked in / In progress.
- Timer chip flips to overtime when the booking runs past scheduled end.
- All plans.
When Chair View activates
The mode is computed from the booking's status and timing:
| Trigger | Mode | Timer label example |
|---|---|---|
status: confirmed AND now ≥ start − 15 min AND now ≤ end |
starting-soon | "Starts in 8 min" |
status: arrived |
checked-in | "Checked in · Starts in 3 min" |
status: ready_to_start |
in-progress | "27 min left" (warning) → "+8 min" (destructive on overtime) |
Outside those conditions, the standard booking detail renders. Bookings in cancelled, completed, no_show don't show Chair View - they show the standard detail with their final state.
What you see
Top-to-bottom on the screen:
1. Chair View Header
- Customer avatar (initial)
- Customer name - tappable to open their profile
- Service · Staff line
- Timer chip (right side): info / warning / destructive variant depending on time remaining and overtime status
The timer announces "Booking now over scheduled duration" once via the device's accessibility readback when it transitions to overtime - useful for VoiceOver / TalkBack users.
2. Must-Know Strip
Compact horizontal strip of context flags that matter chair-side:
- Allergies flag (if the customer has any recorded)
- Hair / skin type (if recorded)
- Colour formula summary (the rolling note on FREE, or latest structured formula on PRO, for hair venues)
- Patch test status (passed / due / overdue, if applicable)
Tap any flag to drill into the relevant section.
3. Formula Card (hair venues)
FREE shows the customer's rolling free-text note. PRO shows the latest structured formula and adds these actions:
- Use last formula - opens the formula form prefilled
- View history - full formula history for this customer
- Record - fresh formula from scratch
See Colour Formulas for the full formula reference.
4. Chair Photo Rail
Quick access to the customer's treatment photos with a Take today's photo tile at the start. Suppressed entirely on Wellness & Spa venues (per industry rules - clients undressed in low-light spaces don't fit the photo workflow).
Edit gate: only OWNER / MANAGER can capture / edit photos. STAFF see the rail read-only.
See Treatment Photos for the full photo reference.
5. From Last Time Card
A recap of the customer's most recent visit (date, service, staff, anything notable from their notes). Helps you start the conversation: "I see you had highlights with Tom three months ago - how's that grown out?"
Derived from customer.getBookingContext.recentBookings[0]. Silently hides if there's no prior visit or the query errors.
6. Booking Notes
Any notes attached to this specific booking - from the customer's online booking, from the operator who created it, or from the AI booking enquiry auto-responder.
7. Chair View Footer
Sticky bottom - two big buttons:
- Rebook - fast follow-up booking for the same customer
- Checkout - wraps to standard checkout flow with this booking pre-loaded
Both haptic on tap.
Shared workstation access
Chair View is not available from the dedicated shared workstation. The workstation uses its own restricted booking view and does not expose formulas, photos, notes, must-know flags or full customer profiles. Sign in with a personal account to use Chair View.
Telemetry
A chair_view_rendered PostHog event fires once per booking when both side queries (formula + photos) have settled. Properties: status, isNew (first booking for this customer), hasFormula, hasPhotos. Useful for adoption tracking.
Tier
All plans. PRO unlocks:
- Structured per-visit formula history, reuse and photo links
- Treatment photo capture beyond storage limits (FREE caps at 12 photos)
Everything else (timer, must-know strip, last-time recap, footer) is available on FREE.
Mobile-only
Chair View is by design a chair-side phone/tablet experience. Web stays on the standard booking detail sheet - operators on web are typically reception/admin, not chair-side.
How it shares data with the standard detail
Same URL (/booking/{id}), same TanStack Query keys (customer.getBookingContext, treatmentPhotos.list, colourFormulas.getLatest) - so opening the booking, switching to Chair View, and back doesn't refetch.
What's NOT in Chair View
- Editing the booking (reschedule, change service, change staff) - use the standard booking detail
- Cancellation actions - same
- No-show marking - same
- Approve / decline pending requests - same
Chair View is for the active service window. Operator actions outside the chair workflow stay on the standard detail.
Common mistakes
| Problem | What to check |
|---|---|
| Don't see Chair View on a booking | The booking might not be inside the activation window. Check status (must be confirmed for starting-soon mode, arrived for checked-in, ready_to_start for in-progress) and timing. |
| Timer says "Starts in 8 min" but my clock says 3 min before start | Confirm your phone's clock is correct. The timer uses your device time. |
| Photo rail missing | Either your venue is Wellness & Spa (suppressed by design) or the booking has no customer attached. |
| Formula card missing | The customer has no formula note or structured formula on file, or your venue isn't hair-industry. |
| Must-know flags missing | The customer's profile doesn't have allergies / hair type / patch test recorded. Update their profile. |
| Want Chair View on web | Not supported - Chair View is mobile-only by design. Use the standard web booking detail. |
FAQ
What is Chair View?
A mobile-optimised body for the booking detail that activates when the booking is starting or in progress. Same URL, swapped layout - timer chip, customer's must-know info, last colour formula (if hair), photo rail, recap of the last visit, plus Rebook and Checkout buttons in the footer.
When does Chair View activate?
Three trigger conditions: 15 minutes before a confirmed booking starts ('starting soon'), when the booking is marked arrived ('checked in'), or when it's marked ready to start ('in progress'). Otherwise the normal booking detail renders.
Why doesn't my Wellness venue see a photo rail in Chair View?
Wellness & Spa venues have treatment photos suppressed by design - clients are often undressed or in low-light rooms, so the photo workflow doesn't fit. Chair View hides the photo rail entirely for wellness venues.
Does Chair View work on web?
No - Chair View is mobile-only (phone + tablet). The web booking detail keeps its standard sheet view. Chair-side workflow is inherently phone/tablet-oriented.
Does Chair View work for non-hair industries?
Yes - beauty, nails, aesthetics, tattoo, barber all benefit from the timer, must-know strip, last-time recap, photos, and Rebook/Checkout buttons. The Last Formula card is the hair-specific section; other industries see the rest.
Can I customise what's in Chair View?
Not today - the layout is fixed. The sections that render adapt to your industry (no photos for wellness, no formula for non-hair) but otherwise it's a standardised chair-side surface.