Your public page is BookHero's acquisition engine: the link you share on Instagram, on Google Business, on the QR code in the shop window. The customer opens it, picks a service, picks a time, drops name and phone, gets the confirmation email. You, on the other side, watch the booking show up on the calendar without lifting a finger.
This guide shows you behind the scenes: what happens between the customer's click and the confirmed booking on your end, which notifications fire, what to do when you get your first online booking, and where the subtle differences sit between a booking you create by hand and one coming from the public page.
The customer flow: 5 steps from click to confirmation
When the customer opens your link, they see a storefront with your brand colour, logo, and the service list grouped the way you set it. From there to a confirmed booking, it's 5 short steps:
Pick a service (or several)
The customer taps a service. They can stack more than one in the same booking (cut + beard in one sitting). The total duration and price sum live.
Pick an employee (or 'No preference')
List of employees eligible for that service (the Employees · Services matrix decides who shows up). 'No preference' triggers auto-assign on our side: random, round-robin, or least-loaded day, whichever you picked in Settings.
Pick a date and time
Strip of free slots on the calendar, within 60 days ahead. The customer only sees slots that respect business hours, employee hours, time blocks, time-off, conflicts, and the minimum-advance window (booking_min_hours).
Drop details
Name, phone in international format (+351...) and email are all required. Free-text note optional. The phone number is the key that identifies the client in your database.
Confirm
Final button. The booking is confirmed on the spot (no approval flow) and three effects fire: email to the customer, notifications to the owner, and the booking appears in your calendar in real-time.
What you get when someone books online
On your side, the booking isn't hidden and doesn't need approval. Three things happen in parallel the moment the customer clicks 'Confirm':
How the booking appears on the calendar
A booking from the public page is identical to one you create by hand: same status ('Confirmed'), same colour (the employee's), same edit options. There's no special tag marking it as 'online'. When you open the detail panel, you see exactly what you'd see for a manual booking.
Tap the booking and the detail panel slides in from the right. Everything's there: client info, service list, total, note the customer left. From here, the actions are the same: reschedule, cancel, jump straight to checkout.
When you get your first online booking: what to do
The first few days after publishing your public page tend to be noisy. You don't need to do anything special: the booking is confirmed and the customer already got the confirmation. But it pays to run through this checklist to avoid friction:
Confirm the email landed
Look for the 'New booking' email in your inbox. If it didn't come, go to Settings · Notifications and check that 'Internal booking confirmation by email' is on. Emails can take up to a minute to arrive.
Open the calendar and double-check the slot
Make sure the booking is on the right employee, at the right time, with the expected duration. If the customer chose 'No preference', the system assigned for you.
Read the customer note
If the customer left a note (allergy, preference, first visit), it's on the 'Notes' tab of the panel. Worth reading before they show up so you avoid surprises.
Check the client record
Go to Clients and search by phone. If it's a new client, BookHero created the record automatically. If they existed already (phone matches), it reused the record and added to their history.
Decide whether to reach out
Public-page bookings don't need extra confirmation (the email already confirms). But for a new client, a short WhatsApp saying 'we got your booking' works wonders as the first touchpoint of the relationship.
If it's a wrong fit, cancel with notification
Customer booked a service you don't do for them? A time you can't honour? Tap the booking, 'Cancel appointment', and BookHero sends an automatic email to the customer explaining.
Public booking vs manual booking: the differences
Functionally and technically, they're the same entity (same table, same status, same panel). But there are subtle differences in the creation flow and what each side is allowed to do:
| Public page (customer) | Manual (you, in the calendar) | |
|---|---|---|
| Who creates it | The customer, alone, via the public link. | You (or manager/employee with permission). |
| Allowed window | Respects booking_min_hours (min lead) and the 60-day horizon. | No limit: you can even book in the past to log past services. |
| Outside employee hours | Slot doesn't show. Customer can't book. | Warns but you can proceed with confirmation. Internal override. |
| New client | Auto-created with name + phone + email, all required. | Can create with just name + phone, or leave anonymous walk-in. |
| Customer notification | Automatic confirmation email with cancel/reschedule link. | Email only if the client has email on file and the setting is on. |
| Owner notification | Internal email + WhatsApp (on Pro+). | None (you just created it). |
| Initial status | 'Confirmed' immediately. No approval. | 'Confirmed' immediately. No approval. |
| Free plan cap | Blocks at the 31st: public page shows 'Fully booked'. | Blocks at the 31st: booking sits as 'Pending' until upgrade. |
New or existing client: how the phone decides
Phone is the unique key for clients in BookHero. When someone books from the public page, before creating the booking the system asks the database: 'is there anyone with this +351 912 345 678?'. If yes, it reuses that record; if no, it creates a fresh one.
- New client: BookHero creates a row in 'clients' with the name, phone, and email the customer typed. They show up in your client list immediately.
- Existing client (phone matches): the booking links to the existing record. The name isn't always overwritten, but the latest email is kept so the confirmation reaches them.
- History always accumulates: visit count, total billed, and 'last visit' refresh on the client panel after each booking.
Auto-assign: how the system picks an employee for 'No preference'
When the customer picks 'No preference', BookHero has to decide which employee gets the booking. The rule is configurable in Settings · Bookings · Auto-assign, and you have three options:
- Random: picks one of the eligible employees at random. More balanced long-term, less predictable day-to-day.
- Round-robin: cycles sequentially through the eligible employees. Keeps a pointer that advances on every booking. More predictable, fairer distribution.
- Least loaded day: assigns to the employee with the fewest booked minutes on that day. Useful for balancing workloads.
Booking window: what the customer can (and can't) book
The public page respects three configurable windows on your business. These rules only apply to the public flow; when you create a booking yourself from the calendar, you can ignore them.
| Setting | What it does | Default |
|---|---|---|
| Minimum advance (booking_min_hours) | How many hours before start is the cut-off. Slots inside that window aren't shown. | 0 (customer can book for right-after-now, if a slot is free) |
| Reschedule minimum advance (reschedule_min_hours) | Same logic, applied to reschedules via the email link. | 1 hour |
| Cancellation minimum advance (cancel_min_hours) | Window for the customer to cancel via the email link. Below it, they have to contact you. | 1 hour |
| Horizon (not configurable) | How far ahead the customer can book. | 60 days |
Free plan: a shared monthly cap
BookHero's Free plan gives you 30 confirmed bookings per month. That limit is shared between public-page bookings and manual bookings you create in the calendar. Both count toward the same bucket.
- Under 30: everything works normally on both paths.
- Exactly 30: the 30th booking still goes through. You get an email warning that you've hit the cap.
- From the 31st (public page): the public page shows 'Fully booked'. The customer is invited to contact you directly.
- From the 31st (manual): the booking is created but sits as 'Pending' until you upgrade. No data is lost.
- Rescheduling (via the customer's email link) doesn't count as a new booking: the original slot is returned and the new one replaces it.
Frequently asked questions
I got a booking email but I don't see it on the calendar. What now?
You're probably looking at the wrong day. Check the toolbar's current date. If it's still missing, refresh the calendar (most of the time it's a real-time glitch). If it persists, open /dashboard/calendar?date=<date> to force a reload.
Can I block new clients (only accept existing ones)?
Not today. The public page accepts any client. What you can do is set a high minimum advance (e.g. 48 hours) to give yourself time to vet new bookings, or disable the public page in settings and go back to bookings-by-contact-only.
The customer booked a time I can't honour. Can I reschedule for them?
Yes. Open the booking on the calendar, tap 'Book again' and pick the new date/time. You have the option to notify the customer automatically by email (and WhatsApp on Pro+). There's no silent reschedule: the system always pushes you to notify.
The customer cancelled via the email link. How do I know?
The booking changes colour on the calendar (greyed with a strikethrough) and the status becomes 'Cancelled'. It's still visible in the List view, and the slot is freed up for other bookings. If you want to be notified, go to Settings · Notifications and enable 'Cancellation by email'.
I have two employees doing the same service. How do I control who gets the customer when they pick 'No preference'?
In Settings · Bookings · Auto-assign, you pick between random, round-robin (cycles sequentially), and least loaded day. For a fair short-term distribution, round-robin is what 80% of businesses pick. If you want to balance workload (e.g. João already has 6 bookings today, Rita only 2), 'Least loaded day' favours Rita automatically.
Can I see where the booking came from (direct link vs Instagram)?
BookHero doesn't track traffic source today. The booking doesn't distinguish whether the customer came from your Instagram, Google, or the direct link. For that level of analysis, add UTM tags to the link you share and read them in Google Analytics or equivalent.
Next steps
Public-page bookings are the heart of BookHero, and the better the page, the better the bookings. These guides cover the logical next steps:
- Set up the public page: if you haven't published the link yet, start here.
- Customize the public booking page: brand colour, logo, cover, service order.
- Create a manual booking in the calendar: for the scenarios where you're the one creating.
- Reschedule and cancel bookings: the full owner-side flow.