GemBooking turns any WordPress site into a booking platform. One plugin covers slot-based appointments, multi-day hotel stays, restaurant table reservations, and fixed-date event ticketing with assigned seating.
gembooking text domain.Switch a service into ticket mode to sell time-bounded tickets:
GemBooking Pro adds recurring bookings, post-booking redirect rules, group bookings, attendee cancel/reschedule locks, and addon packs for hotels (room inventory + nightly pricing), restaurants (floor plan + table picker), and seat-map venues (assigned seating with multi-stop journey support for buses / trains).
GemBooking stores guest-supplied data (name, email, phone, any custom booking-question answers) in custom database tables ({prefix}_gembk_bookings, {prefix}_gembk_booking_meta). This data is used solely to fulfil and contact the customer about their booking, plus internal admin reports.
No data is sent to third-party services by the core plugin. Optional addons (Zoom, Google Calendar, SMS, payment gateways) only contact their respective vendors when explicitly enabled and configured.
Deleting the plugin does not automatically erase your booking data — the custom tables ({prefix}_gembk_bookings, {prefix}_gembk_booking_meta, and related availability/account tables) are intentionally preserved so an accidental delete never wipes your records. To remove all stored booking data, drop those {prefix}_gembk_* tables and delete the plugin’s gembooking_* options using your database or hosting tools.
GemBooking’s core booking, ticketing, and QR-code features run entirely on your own server. QR codes for event tickets are rendered locally by the plugin — no third-party image or QR service is contacted — and no booking data leaves your site by default.
The plugin only sends data to an external destination through a feature you explicitly set up:
Outgoing webhooks (optional).
If you create a webhook in GemBooking, the plugin sends a signed HTTPS POST request to the destination URL that you enter, each time the booking event you selected occurs (for example, when a booking is created, cancelled, or rescheduled). The request body contains the details of that booking (such as booking id, status, service/event, times, and the customer name/email/phone as provided). No request is sent unless you add a destination URL, and nothing is sent to GemBooking or Kodezen. Because the destination is a URL you choose, the applicable terms and privacy policy are those of the service you point the webhook at (e.g. your own endpoint, Zapier, Make, or your CRM).
Optional integrations (via the separate GemBooking Pro plugin).
Online-meeting, calendar, and SMS integrations (Zoom, Google Meet, Google Calendar, Microsoft Teams, Twilio) are provided by the separate GemBooking Pro add-on and only contact those providers after you connect an account and enable the integration. Each provider’s data handling is governed by its own terms of service and privacy policy:
All of GemBooking is human-readable and open. Nothing in this plugin is obfuscated, and the source for every compiled or minified file ships inside the plugin alongside the build output.
Compiled assets and their source
assets/build/ (for example backend.<version>.js, frontend.<version>.js, and the .css files) are compiled from the React source in the dev_gembooking/ directory and the SCSS source in assets/scss/.package.json, webpack.config.js, postcss.config.js, tailwind.config.js), is included in the plugin so the compiled output can be reviewed and regenerated.Build tools
Build steps
npm installnpm run build (writes to assets/build/). Use npm start for a watched development build.composer install --no-dev --optimize-autoloaderThird-party libraries
chillerlan/php-qrcode (v5) — MIT license — https://github.com/chillerlan/php-qrcode — used to render event-ticket QR codes locally (bundled under vendor/).package.json (React, Redux Toolkit, Formik, and others) and are fetched via npm during the build.