The Booking Page block is one page for one service. Three more blocks build everything around it: a catalogue of what you offer, an open-hours display you can put anywhere, and a page where a customer finds their own appointments.
Booking Types: the catalogue
Insert Booking Types on any page, and it lists every published booking type as a card. Each card links to that service’s own page, so this block plus that page is the whole visitor journey: see the services, pick one, book it.
Three settings:
- Columns: 2 by default.
- Show duration: on by default. Prints the length of the appointment on the card.
- Show description: on by default. Prints the booking type’s excerpt.
The price behaves differently from those two: it is not a toggle. When a booking type carries a price above zero, the card shows it, because an operator who set a price wants the visitor to see it before clicking. A price of 0 is what hides the price.
The block is rendered on the server with no JavaScript at all. A catalogue is content: it belongs in the HTML for search engines and for anyone browsing without scripts.
The service page
Every booking type has its own page on your site, and on a block theme HappenBoard ships the template for it. Single Booking Type lays out the title, whatever you wrote in the content area, and then the Booking Page block, so a visitor arriving from the catalogue lands on something they can actually book rather than a bare title.
It is a registered block template like the event ones, so it needs a block theme and WordPress 6.7 or later. Edit it under Appearance → Editor → Templates and your version takes precedence, exactly as described in patterns and Site Editor templates.
Booking Availability: when you are free
Availability is worth publishing on its own, not only inside a booking funnel. The Booking Page answers “book me in”; this block answers “when are you free?”, on a landing page, in a sidebar, on your homepage. Each open time links straight into the booking page with that slot already selected.
- Booking type: which service to show. Required, like on the Booking Page block.
- Layout: a month calendar (the default) or a schedule list.
- Days ahead: 30 by default, and capped at 180. The booking type’s own maximum advance trims it further, so the shorter of the two wins.
- Show header: on by default. The line naming the service, its length, and its price when it has one.
PHP renders the shell and the header, then a small script fills in the times from the public slots endpoint, so the page ships no framework. The times a visitor is offered are the same ones the booking page would offer, worked out by the rules in setting your availability.
My Bookings: the customer’s own list
Give this block a page of its own, called something like “My appointments”. It lists the signed-in visitor’s bookings, upcoming first and then past, with a cancel action on the ones still ahead.
- Show past bookings: on by default. Turn it off for a page that only looks forward.
It requires a login, and that is deliberate rather than an oversight. A booking is identified publicly by the long token in its confirmation email, and that token addresses one appointment. Authorising a whole list with it would turn a single-booking secret into an account-history key, so one forwarded email would hand over every past and future appointment, name and answer for that person. Seeing a history and cancelling one appointment are different things, so the list asks for the one thing that actually establishes who someone is.
The consequence is stated in the block rather than hidden: bookings made without signing in do not appear, and the empty state says so and points at the confirmation email. A signed-out visitor gets a sign-in prompt rather than a blank panel.
Which one to use
- A page listing everything you offer: Booking Types.
- One service, ready to book: the Booking Page block, or just link to the service page.
- Your open hours on a homepage or in a sidebar: Booking Availability.
- A place customers manage what they booked: My Bookings.
All four accept the standard color, spacing and typography controls, and the first three take wide and full width alignment.