The principle
Wherever a client is on the site, the page already knows something about what they want. On Sam's profile, they want Sam. On the balayage page, they want balayage. On a gallery image of Jo's work, they probably want Jo and that service. The Book button on each page should carry that knowledge into the booking platform, so the client only has to pick a time.
The generic Book button that opens the platform's full menu of forty services and eight stylists is the fallback, not the default.
Step 1: configure the platform
In Fresha, Booksy, Vagaro, Timely, Phorest or Square Appointments:
- Every service with its duration, price and any stylist-tier pricing, and marked bookable online.
- Every stylist with their services and their online hours.
- New client registration with minimal fields.
- Deposits or card capture per your policy.
- SMS confirmations and reminders in your wording.
- Waitlist on.
Book a test appointment as a client on a phone before touching the site.
Step 2: learn the deep-link parameters
Each platform's booking URL accepts parameters that pre-select things. The names differ (check each platform's current help pages), but all of the common ones support at least a staff member and a service:
- Fresha: links to a specific service or team member from the online booking settings.
- Booksy: business, staffer and service links from the Marketing or Online Booking section.
- Vagaro: widget and link builder with service and provider selection.
- Timely: Book Now links per staff and per service.
- Phorest: online booking links with staff and service parameters.
- Square Appointments: booking site links per service and team member.
Collect a table: each stylist's link, each service's link, and where supported, each stylist-plus-service combination.
Step 3: wire the buttons
| Where | Book button pre-selects | |---|---| | Header, every page | Nothing, or the booking page | | Home page hero | Nothing, or "new client" service | | Service page | That service | | Stylist profile | That stylist | | Gallery image | The service shown, and the stylist if known | | Offers page | The offer's service | | Location page (multi-site) | That location |
Store the platform IDs as fields on the service and stylist records, and have the template build the link. When a stylist joins, the manager pastes their ID into their record and every Book-with button is correct.
Step 4: the dedicated booking page
/book on your own domain: the platform's widget embedded (or a branded hand-off to its hosted page), a one-line reassurance, the stylists as a row of faces with Book-with buttons, the phone number, and nothing else. This URL goes on Instagram, Google Business Profile, voicemail and cards.
Keep it fast: reserve the widget's height so nothing shifts; preconnect to the platform's domain; no gallery on this page.
Everywhere else, the widget is not embedded. Service and stylist pages link out with parameters, so no page pays for the widget unless the client wants it.
Step 5: the gallery books too
Each gallery image has fields for service and stylist. Tapping an image shows it large with "Balayage by Sam, from £X" and a Book button pre-selecting both. The gallery stops being decoration and becomes a menu.
Step 6: test where clients arrive from
On a phone: Safari and Chrome, then Instagram's in-app browser, then Facebook's. From the bio link, from a story link sticker, from Google Maps. Complete a booking from a stylist profile and from a service page in each. If an embedded widget fails in an in-app browser, point those entry points at the platform's hosted page with parameters, which is built for in-app browsers. Then check the platform's diary and the confirmation SMS.
Step 7: track it
A booking_click event on every Book button with parameters for page, service and stylist. UTM tags on every external link (bio, stories, Google). The platform's completed bookings by source. Monthly: clicks versus completions, and which pages and stylists produce the most.
Monthly check
From the home page, a service page, a stylist profile and the Instagram bio, on a phone: tap Book, complete a booking, cancel it. Platforms update their booking flows; find out before a client does.
What goes wrong
- IDs not stored as fields, so links are hand-pasted and rot when staff change.
- The widget on every page, slowing the site for the majority who are browsing.
- The bio link to the home page.
- No in-app browser test.
- Stylist-tier pricing not reflected, so the site says one price and the platform charges another.
Where this sits
Booking from any service, any stylist and any gallery image, with the choice already made, is the core wiring of every salon website we build. The platform holds the diary; the website's job is to get the client into it with the fewest possible decisions left.