Back to Guides
Quotes

Quotes — sending a quote on a booking

For services priced "on consultation". Booking comes in, you send a price, customer accepts.

Some services aren't fixed-price — colour corrections, complex piercings, custom ink, anything where the actual scope shows up at the consultation. Mark the service as Requires Quote under Catalog → Services and the booking flow handles the rest.

How it looks to the customer

  • The customer picks the quote-required service.
  • The booking page shows "Quote on consultation" instead of a price.
  • They book a time as normal.
  • The booking lands in your Pending queue with status quote_pending.
  • The customer doesn't get a payment ask yet.

How you respond

  1. Open the booking → click Send Quote.
  2. Enter the quoted amount (and optional notes — "Includes 2 hours of bleach work").
  3. Optionally tick Require deposit to confirm + a percentage.
  4. Click Send. The customer gets an email with the price, your notes, and an Accept / Decline pair of buttons.

How customers respond

The Accept / Decline buttons go to a public quote page. Either:

  • Accept without deposit → booking flips to confirmed, confirmation email + SMS go out as usual, your team gets notified in the bell.
  • Accept with deposit required → routes through Stripe Checkout. Once paid, booking flips to confirmed. Until paid, it stays in quote_pending with a "Awaiting deposit" badge.
  • Decline → booking flips to cancelled with the customer's optional reason captured. Your team is notified.

What the customer sees in their portal

Pending quotes show up at the top of their /user/dashboard with a coloured "Pending Quote" card showing the quoted amount, your notes, and Accept / Decline buttons. The accept routes them through the same public quote page.

Quote expiry

A booking-attached quote expires when the booking date passes (you can't book in the past). For standalone quotes (next guide) you set an explicit expiry date.

Tweaks

  • Re-quoting: you can replace the quote on a booking that's still in quote_pending. The customer gets a new email; the old link still works but shows the new price.
  • Cancelling a sent quote: change the booking status to cancelled directly. The customer's accept link will show "This quote is no longer active" if they try to accept.
  • Internal notes: anything you type into the Internal notes field is admin-only and never sent to the customer.