Services are the heart of BookHero. They define what a client can book on your public page, how much time each booking takes on the calendar, what flows into checkout, and what commission can be tracked per employee. Touching this catalogue touches almost everything else. So it's worth getting it right before dumping 30 lines in a rush.
This guide shows you how to build a service from scratch, pick the right pricing type, choose a duration that doesn't sabotage your calendar, and use the optional fields (description, photo, hide) so the public page sells for you.
Where services live
Services live in Storefront (URL /dashboard/storefront), in the 'Services' tab. It's the same place you customise brand colour, logo, cover, slug and store products: everything that touches your public image sits under one roof.
What you define here shows up in three different places: on the public page (where clients pick and book), in the manual booking panel (when you schedule by hand), and at checkout (when you charge). All three read from the same catalogue, so an update propagates automatically.
Anatomy of a service: what to fill in
Each service has a fixed set of fields. Some are required, others optional. Worth knowing what each one does before creating the first:
- Name (required): 2 to 80 characters. What the client reads on the page. Short and specific wins.
- Duration in minutes (required): from 1 minute up to 24 hours. Sets how much time the booking takes on the calendar.
- Price type (required): fixed, from, or variable. More on those below.
- Price in euros (required if fixed or from): the value that appears on the page and pre-fills at checkout.
- Description (optional): up to 240 characters. One line of context on the public page.
- Photo (optional): lifts conversion for visual services. Hair, tattoo, nail art, makeup.
- Hide (toggle): removes the service from the public page but keeps history and lets you still book it internally.
- Group (optional): visual divider to organise services by category (e.g. Cut, Colour, Treatments).
Step by step: create a service
Open Storefront › Services
From the dashboard sidebar, head to 'Storefront' and stay on the 'Services' tab (the first one). You see the current list on the left and an 'Add service' button top-right.
Click 'Add service'
The create modal opens. It has 5 fields: name, duration (hours + minutes), price type, price in euros, description. Photo is added after the service is created.
Pick a short, specific name
'Men's haircut' beats 'Professional men's hairstyling'. Clients skim: when two services look too similar they bounce to a competitor's page. Stay under 30 characters.
Set a realistic duration (with setup and cleanup)
30 minutes for a cut usually means 5 minutes greeting, 20 of actual work and 5 of cleanup. Slicing that buffer feels efficient but slips the whole day after the third booking.
Pick the price type and the value
Fixed (you know to the cent), From (show the floor, close the rest at checkout), Variable (no public price, decide on the spot). Each has its place: see the table below.
Save in the green save bar
Every change in the service list sits as a 'draft' until you save with the save bar (top-right button). Before saving you can add several services in a row without losing your work.
The three pricing types (and when to use each)
This is the field that confuses most people at first. BookHero supports three because reality varies: not every service is charged the same, not every service is predictable up front.
| Fixed | From | Variable | |
|---|---|---|---|
| How it shows on the public page | €15 | From €15 | On request |
| When to use | The service always costs the same. | There's a clear floor; the final depends on the work. | Pricing really depends on the case and is best closed in person. |
| Typical example | Men's haircut, basic manicure, blow-dry. | Hair colour, massage (more minutes = more), tattoo per session. | Bridal quote, tattoo design, treatment plan. |
| Where the final price is set | Already set: flows into checkout pre-filled. | At checkout, you edit the line to the real charged value. | At checkout, you type the value (line comes in with no price). |
| Risk | None if your price list is stable. | Client may expect to pay the floor and be surprised at the final. | Client lands without a price anchor: some bounce before booking. |
Duration: the field people skip and regret
Duration isn't just how long the work takes. It's how much calendar time the booking holds between this client walking in and the next one being able to. Cut it to the bone and you'll be 5-10 minutes behind from mid-morning onwards.
- Include setup: greeting, opening chat, wash (when relevant).
- Include cleanup: payment at checkout, clearing the station, next client walking in.
- For new services, measure 3-4 real clients before locking the number (don't trust the theoretical 'right time').
- For services that swing a lot by client (long vs short hair), set the average on the high side and edit per booking when needed.
- Duration is editable per booking in the manual create panel, but the template stays put.
Description, photo and hide: three optionals that pay off
How many services is too many?
A long catalogue feels like full-service depth, but in practice it hurts. A client looking at 32 lines with subtle differences either gives up or books the wrong one.
- Between 8 and 15 visible services is the sweet spot for most businesses. Clients read the whole list without fatigue.
- Above 20 already slows decision-making and lifts wrong-service bookings.
- If you genuinely have 30+ variants (a large salon with detailed chemistry), use groups to split visually (Cut, Colour, Treatments).
- Before adding one more service, ask if a similar existing one couldn't absorb it with a note.
Edit, hide and delete (and what changes in each)
After services are live, you can tweak them at any time. The three common actions land differently:
| Edit | Hide | Delete | |
|---|---|---|---|
| How to do it | Click the service, modal opens, adjust and save. | Eye toggle on the row (line gets struck through). | Bin button, native confirmation dialog. |
| Public page | Reflects the change after save. | Service stops appearing. | Service stops appearing. |
| Future bookings | Use the new values. | You can still book internally. | Can't book anymore. |
| Old history | Untouched. | Untouched. | Untouched (existing bookings keep a snapshot of values at the time). |
| When to use | Price, duration or description changed. | Seasonal, under review, or stopping new bookings. | Created by mistake or service genuinely retired for good. |
Where the service shows up across the app
Worth knowing where else your service appears after you create it. It's not just the public page.
- Public page (storefront): first impression. Name, duration, price, description, photo.
- Manual booking panel: the operator picks from the same list, with duration and price pre-filled.
- Checkout: every cart line cites the service name and price. Editable per sale for one-off cases.
- Service report: how many bookings, what revenue, who performed (in Reports › Services).
- Employees · Services matrix: who is qualified to perform each service.
Frequently asked questions
Can the same service have a different price per employee?
Not today. A service is unique and the price is set in the catalogue. For that case, the recommendation is to create two separate service lines (e.g. 'Cut with Junior · €15' and 'Cut with Senior · €25') and use the Employees · Services matrix to assign each one to the right person.
I changed a service's price. Does that affect bookings already on the calendar?
No. Each booking stores the price at the moment it was created. Bookings already in the calendar keep the old value until they're charged. Only bookings created after the edit pick up the new price. Same logic for duration.
I deleted a service by mistake. Can I get it back?
No automatic undo. But old bookings using that service stay intact (they snapshot the name and price). To make it available again on the public page, just create it again with the same name. The lesson: prefer hide over delete when in doubt.
I have seasonal services (summer, Christmas). Do I create and delete every year?
Create once and use the hide toggle to pull them off and back onto the page. The history stays linked to the same service (the report can compare this summer vs last summer) and you save the effort of rebuilding them every season.
Can I attach more than one photo per service?
Today, one photo per service. For services with many outcome variants (hair colour, nail art), the workaround is to split into multiple services, each with its own representative photo. Multiple photos per service is on the roadmap.
Do addons and store products count as services?
No. Services, addons and products live in different tabs of Storefront. A service is work with a duration on the calendar. An addon is an optional service added at checkout (no calendar time of its own). A product is a physical item sold alongside. More on this in customize the public booking page.
Day-to-day best practices
- Review the catalogue once a quarter: tweak prices, hide what stopped, add variants clients asked for.
- Before adding a new service, check if an existing one could cover the request with a note or an addon.
- Keep names stylistically consistent: either all gendered ('Men's cut', 'Women's cut') or none.
- For services where the price varies by length, create 2-3 clear variants instead of always reaching for 'Variable'.
- When you hide, leave a mental note or a calendar reminder to reactivate (e.g. 'reactivate summer highlights in May').
Next up in the help centre
- Customize the public booking page (storefront): colour, logo, cover, groups, products.
- Create a manual booking on the calendar: how the service enters the create panel.
- How to checkout in BookHero: where the cycle ends, especially for variable pricing.
- Add employees and individual schedules: the matrix that ties employees to services.