A booking system that sells out your calendar.
Online reservations for tours, tastings, classes, and events. Live availability, ticket types, capacity rules, and payment, built into your own WordPress site.
Or call or text (502) 387-1142
10:02Tasting 3:30 · party of 4 paid
10:15Tour Sat 11:00 · party of 2 paid
10:31Private event · 18 guests deposit
10:48Cocktail class · party of 6 paid
11:05Tour Sun 1:00 · party of 3 paid
11:20Gift card used for 2 seats
11:42Tasting Fri 5:00 · party of 2 paid


booking
class-slots.php
rest-slots.php
class-roster.php
emails.php
assets
calendar.js
tests
1<?php
2/**
3 * Open seats for a tour on a given day.
4 */
5function swd_open_slots( $tour_id, $day ) {
6 $times = get_post_meta( $tour_id, 'start_times', true );
7 $cap = (int) get_post_meta( $tour_id, 'capacity', true );
8 $out = array();
9 foreach ( $times as $time ) {
10 if ( swd_is_blackout( $day, $time ) ) {
11 continue;
12 }
13 $booked = swd_count_guests( $tour_id, $day, $time );
14 $left = max( 0, $cap - $booked );
15 $out[] = array(
16 'time' => $time,
17 'left' => $left,
18 'full' => 0 === $left,
19 );
20 }
21 return $out;
22}
23
24add_action( 'rest_api_init', function () {
25 register_rest_route( 'booking/v1', '/slots', array(
26 'methods' => 'GET',
27 'callback' => 'swd_rest_slots',
28 'permission_callback' => '__return_true',
29 ) );
30} );
Everything between “can we come?” and “paid”
Live availability
Guests see real seats on a real calendar. Full slots close themselves; partially booked days show what is left.
Ticket types that fit
Adults, seniors, veterans, under 21, comped guests. Each with its own price, each counted against slot capacity.
Payment at booking
Reservations are orders. The card is charged when the seat is taken, and refunds run through the same system. Prefer a deposit to the full price? See taking deposits on online bookings.
Capacity that holds
Per-slot limits your team controls, so a fourteen-seat tasting never seats fifteen.
A calendar your team lives by
Staff see every booking by day and slot in the admin, with the detail a front desk actually needs.
Exports for the back office
CSV exports by date range and calendar feeds, built to match how your office actually reconciles.
Kentucky Peerless books every tour seat through this system.
Distillery tours and tastings in downtown Louisville sell through the Peerless website: a live calendar, per-slot seat counts, five ticket types, and payment at booking. Around that engine I built what the operation actually needed: custom export tooling for the back office, slot-visibility rules so open times stay findable, and staff-side booking tools for the phone calls that never stop. Every reservation is made online, and tour days sell out.
It is built as a custom WordPress plugin on WooCommerce Bookings, the same stack behind the stores I run.
Kentucky Peerless · rebuilt 10-26-2026
A booking journey that continues after payment
The Peerless booking work connects guest selection, dates and times with visit confirmations and the staff check-in process. Approved staff can handle authorized exceptions without changing the ordinary public booking rules for everyone.
Explore Peerless bookings and guest operations →The complete Peerless project →
Ticket types live at Kentucky Peerless
Of your bookings taken as commission
CSV
Exports by date range for the back office
Calendar your staff live by
THE GUEST SIDE
Simple enough that nobody calls for help
A booking flow earns its keep when guests finish it without phoning the front desk. Clear ticket choices, a calendar that shows what is actually open, time slots with seats remaining, and a confirmation that answers the questions people ask. The screens above are live at kentuckypeerless.com today.
Your calendar should not pay rent
No per-booking fees
Booking platforms take a cut of every reservation, forever. Your own system takes nothing. Here is FareHarbor vs Peek vs a custom booking system, fees included.
Your brand, start to finish
Guests never bounce to a third-party page that looks nothing like the website they trusted.
Your data stays yours
Every reservation lives in your own database, exportable any day you like, and it can feed tools like my guest check-in board directly.
How it gets built here.
Map the experience
Tours, tastings, classes, private events: I chart what you sell, when it runs, and what each seat costs. It fits attraction websites and wedding venues that book tours as well as distilleries.
Quote it straight
A clear number before work starts. No hourly meter running while you wonder.
Build on staging
Developed and tested against real scenarios before it ever touches your live site.
Ship and support
Deployed carefully, refined with your staff, and supported by the person who wrote it.
What owners want to know first.
I already take bookings by phone. Why change?
Keep taking them. Staff can enter phone bookings in the admin; the website simply takes the rest of the reservations while your team works.
Can it charge different prices per person?
Yes. Adult, senior, veteran, child, comped: each ticket type carries its own price and counts against capacity.
What happens on busy days?
Capacity rules hold automatically, and the same bookings can feed my guest check-in board so arrival day stays calm.
What does it cost?
Scoped flat once I know your products and rules. No percentage of your bookings, ever.
Systems that already work together.
Guest check-in systems
The front-desk board that turns booking-day chaos into a calm list of names.
POS integration
Register and website inventory kept in step, so nothing oversells.
Digital guest books
A branded kiosk that saves every signup to a ledger you own.
RECENT WEB PROJECTS
Systems with users, not demos.
Stop trading reservations over the phone.
Show me what you sell and I will map the booking flow that sells it while your team works.
Connect with me
Tell me about the project.
What happens next
- 01I reply, usually the same day. Every message comes straight to me, not a ticket queue.
- 02A short call. What the site needs to do, who it is for, and what has not worked before.
- 03A written scope and flat quote. Before any work starts, with hosting and ongoing care listed separately.
5.0 on Google · 29 reviews · I usually reply the same day