HarborBook

HarborBook

Details
View on WordPress

HarborBook is a WordPress booking plugin built for tour operators, activity providers, boat charters, watersports centres, guides, courses, and other experience-based businesses.

Create timed activities, day trips, multi-day experiences, and recurring courses. Configure capacity, schedules, pricing, passenger rules, optional extras, and pickup locations, then publish a mobile-friendly booking form with a shortcode or Gutenberg block.

Activity types and booking modes

  • Timed activities — departures with a defined duration, such as boat tours, classes, or equipment sessions.
  • Day trips — full-day experiences with one or more scheduled departures.
  • Multi-day activities — experiences spanning several days and nights.
  • Recurring courses — multi-session activities with a configurable gap between sessions.
  • Group bookings — customers reserve seats from shared departure capacity.
  • Private charters — one booking reserves the departure at a flat private rate.
  • Group or private — let the customer choose either booking mode while the departure is still available.
  • Catalog organization — classify activities with Activity Type, Category, and Location taxonomies.

Scheduling and availability

  • Weekly operating schedules with multiple departure times and per-slot capacity.
  • Date-specific schedule overrides and blackout dates.
  • Booking lead time, same-day cutoff, customer booking window, and slot-generation window.
  • Activity-level minimum and maximum group sizes.
  • Capacity locking while checkout is in progress and automatic overbooking prevention.
  • Calendar and availability screens for reviewing departures across activities.

Pricing, passengers, extras, and pickups

  • Adult, child, and infant passenger rates with editable labels and age bands.
  • Flat private-charter pricing.
  • Per-activity tax (global default or custom rate).
  • Optional extras priced as a flat amount, per person, or per day, with quantity and stock limits.
  • Pickup locations with addresses, instructions, pickup-time offsets, surcharges, and manual coordinates.
  • Activity safety rules for minimum/maximum age, maximum weight, and additional guest details.

Customer booking widget

The responsive booking widget guides a customer through activity selection, date and departure, pickup, guests, extras, contact details, review, payment, and confirmation. Steps that are not relevant to the selected activity are skipped automatically.

Use [harborbook] to show every published activity, [harborbook activity_id="123"] to show one activity, or insert the native HarborBook Booking Widget block.

Customers receive a booking reference, trip summary, receipt, meeting information, and Google/Apple/Outlook calendar links after booking. Optional Google Maps and QR-code features are described under External services below.

Booking operations

  • Searchable booking list with date, activity, source, payment, and status filters.
  • Manual bookings for telephone, walk-in, or agent reservations.
  • Pending, confirmed, completed, cancelled, and no-show workflows.
  • Printable booking vouchers and optional check-in QR codes.
  • Payment records for cash, card terminal, bank transfer, or another offline method.
  • Customer profiles with booking history, lifetime value, and internal notes.
  • Month, week, day, and list calendar views.
  • Dashboard totals, revenue, received and outstanding balances, activity mix, and upcoming departures.
  • Booking, revenue, top-activity, pickup-manifest, and operational reports.

Payments and notifications

The core plugin includes manual / pay-on-arrival booking. It is off on a fresh installation; enable it under HarborBook Settings Payments before accepting widget bookings. Customers then reserve online and you collect or record payment using your own offline process. The core plugin does not collect card details or include an online card gateway.

Customisable notification templates cover pending bookings, confirmations, 72-hour/24-hour/2-hour reminder toggles, operator and weather cancellations, review requests, and refund approval. Scheduled reminders and review requests rely on WordPress cron. Email delivery relies on your WordPress mail configuration or SMTP/mail plugin.

Demo data and catalog export

Under HarborBook Settings Demo Data, administrators can install an optional sample catalog containing six activities across all four activity types, plus extras, pickup locations, schedules, pricing rules, and locally generated cover images.

Sample bookings are a separate option and are off by default. Importing again replaces only the previous HarborBook demo import; it does not overwrite activities or catalog records you created yourself. The same screen can remove imported demo records and download either the bundled demo catalog or the current site catalog as JSON.

Designed for tour and activity businesses

  • Boat charter and sailing trip operators
  • Watersports centres (surfing, kayaking, scuba diving, snorkelling)
  • Guided tours and sightseeing experiences
  • Outdoor adventure companies (hiking, rock climbing, zip-lining)
  • Food and cultural tours
  • Training providers running recurring classes or courses
  • Any experience business taking scheduled reservations

Privacy and data ownership

HarborBook stores booking and customer information in your WordPress database. It does not include marketing analytics, advertising tracking, or phone-home telemetry. External QR and Google Maps functionality is optional and documented below.

Plugin data is preserved when HarborBook is deactivated or deleted by default. To permanently remove HarborBook activities, bookings, custom tables, settings, and related data during deletion, first enable Remove All Data on Uninstall under HarborBook Settings Appearance Advanced. Back up your site before enabling that option.

Built to extend

HarborBook exposes WordPress actions and filters for developers. The canonical inline hook reference is included at includes/class-hb-hooks.php. The complete human-readable source and build configuration for the compiled booking widget are also included in the plugin.

External services

This plugin may connect to external services when specific features are used.

goQR.me QR Code Generator API (api.qrserver.com)

  • What it is used for: HarborBook renders a QR code that encodes a booking’s reference code. The QR code is shown on the printable booking voucher, on the admin booking detail screen, and inside booking confirmation emails so staff can quickly look up a booking by scanning it.
  • Opt-in: This is disabled by default. No request is made to api.qrserver.com unless an administrator enables Booking QR Codes (goQR.me) under HarborBook Settings General and acknowledges the goQR.me privacy disclosure in the confirmation dialog. While it is off, vouchers, booking screens, and emails simply render without a QR code.
  • What data is sent and when: Once enabled, the booking reference string (for example, HB-A1B2C3) is sent by your WordPress server to the API when HarborBook generates a voucher, booking detail view, confirmation payload, or notification containing the QR code. No customer name, email, phone number, passenger detail, or payment information is sent.
  • Failure behaviour: QR requests use a short timeout. A failed request never blocks the booking; the QR image is simply omitted.
  • Service provider & policies: The service is provided by goQR.me. See the goQR.me API documentation and the goQR.me privacy policy.

Google Maps (maps.googleapis.com / Google Maps embeds)

  • What it is used for: Optional Google Places address search and map picking while an administrator edits pickup locations, plus optional meeting-point embeds and Google Maps links when an administrator saves a Google Maps iframe on an activity.
  • Activation: HarborBook works without Google Maps. Admin address search requires a Google Maps browser API key under HarborBook Settings General Integrations with Maps JavaScript API and Places API enabled. Activity map embeds can be added from Google Maps Share Embed a map without entering that API key.
  • What data is sent and when:
    • Admin map picker: the administrator’s browser loads the Google Maps JavaScript API using the configured key. Address searches, browser/network information, and map interactions are handled by Google.
    • Public embeds: when a saved map is displayed, the visitor’s browser connects to Google and may disclose standard request information such as IP address and browser headers. Following a Google Maps link also sends the visitor to Google. HarborBook does not add customer names, contact details, or payment data to the map URL.
  • Service provider & policies: Provided by Google. See Google Maps Platform Terms and the Google Privacy Policy. Maps features are optional — leave the API key empty and omit map embeds if you do not want to use Google Maps.

Online card checkout via Stripe is provided by a separate HarborBook Stripe companion add-on. That add-on documents Stripe.js under its own External services section; the core plugin alone does not load Stripe.js or process card payments.

All other UI libraries used by HarborBook (calendar, date picker, dropdown, chart libraries) are bundled locally and served from your own site.

Source code and build process

HarborBook ships one compiled asset: the front-end booking widget
(public/js/booking-widget.min.js and public/css/booking-widget.min.css).

The complete, human-readable source for that bundle is included in this plugin
under src/booking-widget/ (React components, hooks, store, and stylesheet),
together with the build configuration (package.json, package-lock.json, and
vite.config.js). To rebuild the widget from source:

  1. Install Node.js 18 or newer.
  2. From the plugin directory, run npm install.
  3. Run npm run build.

The build writes the compiled files back to public/js/ and public/css/.

Third-party libraries in admin/vendor/ are unmodified upstream releases and
each ships alongside its original, non-minified source file:

  • Select2 4.1.0 — select2.js / select2.css (MIT)
  • flatpickr 4.6.13 — flatpickr.js / flatpickr.css (MIT)
  • FullCalendar 6.1.10 — index.global.js (MIT)
  • Chart.js 4.5.1 — chart.umd.js (MIT)

Details

Plugin code:
harborbook
Plugin version:
1.0.0
Outdated:
No
WP version:
6.2 or higher
PHP version:
8.1 or higher
Test up to WP version:
7.1
Total installations:
0
Last updated:
2026-09-07
Rating:
Times rated:
0
activities
booking
reservations
scheduling
tours