Skip to content
Back to help

Booking flow anatomy

Four steps, four knobs each

The customer-facing booking flow on goldenhour is four steps: service → date → time → confirm. Each step has its own configuration knobs + its own common abandonment causes. Master each step in turn.

  1. Step 01

    Pick a service

    Customer lands on /book/<slug>. Sees the service grid sorted with featured services first, then by most-recently-edited within each bucket. Tap a service → moves to step 2.

    Config knobs

    • Service visibility (Settings → Services → isPublic per service)
    • Service ordering (Settings → Services → isFeatured toggle)
    • Service photo (per-service photoUrl) + description copy
    • Per-service available days (constrains which dates show in step 2)

    Common abandonment cause

    Generic service names + no descriptions + no photos. The grid reads as a list of SKUs, not as a real menu. Add a 1-sentence description + a photo to every service.

  2. Step 02

    Pick a date

    Customer sees a calendar of the next 14-30 days with per-day availability indicator. Closed days (per business hours OR per-service available-days OR time-blocks) appear greyed-out.

    Config knobs

    • Business hours (Settings → Hours, per day)
    • Per-service available-days (Settings → Services)
    • Time blocks (Calendar → block time)
    • Booking horizon (max days out: defaults to 60)
    • Min lead time (defaults to 24 hours)

    Common abandonment cause

    Calendar shows ZERO available dates because business hours + per-service available days + drive-buffer don't intersect anywhere. Run the test on your own phone every time you change a setting.

  3. Step 03

    Pick a time

    Customer sees a grid of slot times for the selected day. Slots are computed via `computeAvailableSlots`: business hours minus existing appointments minus time blocks minus per-service buffers minus drive-buffer (mobile).

    Config knobs

    • Service duration + processing time + before/after buffers (per-service)
    • Drive buffer (Settings → Mobile, account-wide)
    • Slot interval (defaults to 30 min)

    Common abandonment cause

    Buffers stacked too tight = no available slots even on an empty day. Buffers stacked too wide = three slots/day max + frustrated customers. The sweet spot for spray tan: 15-min before + 30-min after + 30-min drive (mobile only).

  4. Step 04

    Confirm + pay

    Customer enters contact info, fills the intake form, optionally pays deposit, optionally selects add-ons, accepts the policy, submits.

    Config knobs

    • Intake questions (Settings → Intake)
    • Deposit amount (per-service depositCents)
    • Add-ons + which services they apply to (Settings → Add-ons)
    • Cancellation policy + no-show fee (Settings)
    • Booking-page layout sections (Settings → Booking page)

    Common abandonment cause

    Highest-friction step. 30+ intake questions, surprise no-show fee disclosed only at this step, slow Mapbox geocode for mobile address. Read the page yourself on mobile + count the seconds: under 90s is the target.

Diagnostic checklist

Three checks every 30 days

  1. 01Walk the flow yourself on mobile. In private/incognito. Time it. Note any moment of friction (slow load, confusing copy, surprise question, abandoned).
  2. 02Check Reports → Funnel. Compare step-to-step conversion. The biggest drop-off is your next optimization target.
  3. 03Ask one regular client. Send a voice memo asking them to walk through booking + describe what they see + what confused them. Three minutes of audio beats a year of guessing.

Related: booking-page trust signals