Business — customers and booking
Public booking page
Your public booking page is at https://YOUR-OPERATOR-DOMAIN/{your-business-slug}/book
(path-based tenancy on every hosting tier). Your Operator may share the exact URL
from Settings → Booking link in the tenant panel.
The page lets customers:
- Pick a service.
- Pick a provider (optional — "any available" is offered).
- Pick a date and time from available slots.
- Enter their contact details.
- Pay a deposit (if required) via the payment gateway.
- Receive a confirmation email with an ICS calendar attachment.
Embedding the booking button on your website
Add the redirect widget to your existing website:
<script src="https://YOUR-OPERATOR-DOMAIN/{your-business-slug}/embed.js"></script>
<button data-booking-widget>Book Now</button>
Clicking the button opens your hosted booking page in a new browser tab, so your own website stays open behind it.
The inline-iframe embed is a VPS-tier feature (phase 2). The redirect widget works on all hosting tiers including shared hosting.
Customer self-service portal
After a booking is confirmed, the customer receives a confirmation email with a "Manage my appointment" link. This link is a secure time-limited token that allows the customer to:
- Reschedule the appointment (if the cancellation window has not passed).
- Cancel the appointment (with the applicable refund policy applied).
(The ICS calendar file is delivered as an attachment on the confirmation email, not from the portal page.) The portal link is valid from the time of booking until 24 hours after the appointment ends. No account or password is needed.
Payments and deposits
/app → Settings → Payments (your self-service task)
To accept deposits you need a Stripe account. Enter your Stripe publishable key and Stripe secret key in Settings → Payments. A $0 auth-charge verifies the keys when you save; your gateway activates only once the check passes.
Deposit flow
- Customer reaches the payment step in the booking wizard.
- Stripe processes the deposit; the slot is held for 10 minutes while the payment completes.
- On success, the appointment moves from
pendingtoconfirmed; the customer receives a confirmation. - On payment failure or timeout, the hold is released and the slot becomes available again.
Refunds and forfeits
🔧 Operator-managed. Refunds and forfeits are issued by your Operator from the appointment's Payments action in their admin console. To request a refund, contact your Operator.
- Within the cancellation window: the configured refund policy applies (full, partial, or none).
- Outside the cancellation window (or no-show): the deposit is forfeited.
Payment reconciliation
Every 15 minutes, a background sweep polls Stripe for any pending or authorized
payments that did not receive a webhook (e.g. due to a transient network failure).
The Operator's Diagnostics → Payment reconcile sweep health probe shows whether this
sweep is running.
NPS and reviews
🔧 Operator-managed. Enabling NPS per service, and viewing the aggregate review list, are done by your Operator. To turn NPS on for a service or see your reviews, contact your Operator.
When NPS / review follow-up is enabled for a service, the system sends a review request
email 24 hours after the appointment is marked completed. The Operator's read-only
Reviews view shows submitted reviews and NPS scores.
Customers who have not consented to marketing communications still receive a transactional NPS request (the NPS request is tied to their appointment, not a general marketing campaign).