Oryx Bookings
Oryx Bookings is a powerful, feature-rich appointment and service booking plugin designed for businesses that require a reliable, scalable, and secure booking infrastructure. Built from the ground up with custom database tables, clean architecture, and modern PHP 7.4+ practices, Oryx Bookings delivers exceptional performance even at scale.
Whether you run a salon, clinic, consulting firm, spa, fitness studio, or any service-based business, Oryx Bookings provides everything you need to manage appointments, staff schedules, and customer bookings seamlessly.
Why Choose Oryx Bookings?
- Custom Database Architecture – Optimized InnoDB tables with proper indexing for lightning-fast queries
- Enterprise-Grade Security – Rate limiting, spam protection, booking locks, and GDPR compliance built-in
- Clean Architecture – Repository pattern, Use Cases, and proper separation of concerns
- Real-Time Availability – Intelligent slot calculation with double-booking prevention
- Elementor Integration – Native Elementor widget with 6 beautiful templates
- Developer-Friendly – Action hooks, well-documented code, and extensible design
Core Features
Service Management
- Create unlimited services with custom pricing and duration
- Rich text content editor with media support for detailed service descriptions
- Featured images for visual service presentation
- Service categories with hierarchical support for organized navigation
- Active/Inactive status control for seasonal or temporary services
- Two availability modes: Staff-based (requires staff selection) or Service-only (company schedule)
- Assign multiple staff members to each service
Staff Management
- Complete staff profiles with name, job description, and photo
- Link staff to WordPress users (optional)
- Flexible Availability Modes:
- Use company default working hours
- Custom weekly schedule per staff member
- Individual staff days off management
- Active/Inactive status for staff availability control
Booking System
- Real-time available slot calculation
- Automatic slot generation based on service duration
- Smart conflict detection prevents double-bookings
- Support for multiple booking statuses: Pending, Confirmed, Cancelled, Completed
- Customer information capture (name, email)
- UTC timestamp storage for timezone accuracy
- Action hooks for integration with email notifications and CRM systems
Company Schedule & Holidays
- Working Hours Configuration:
- Set opening and closing times for each day of the week
- Mark specific days as closed (e.g., weekends)
- Visual time picker interface
- Company Days Off / Holidays:
- Add unlimited holiday dates with optional reasons
- Automatic booking prevention on closed dates
- Easy management with add/delete functionality
Security & Protection
- Rate Limiting:
- Configurable request limits per action (slots lookup, booking creation)
- Adjustable time windows
- IP + User-Agent tracking for accurate limiting
- Spam Protection:
- Honeypot fields to catch bots
- Time-based tokens prevent instant form submissions
- Minimum form fill time requirement
- Slot Security:
- Cryptographically signed slot tokens
- Token expiration (TTL) prevents replay attacks
- Server-side validation of all booking requests
- Booking Lock:
- Transient-based locking prevents race conditions
- Configurable lock duration (5-60 seconds)
- Ensures only one booking per slot
- Security Logging:
- Track rate limit hits, token failures, booking conflicts
- Privacy-conscious logging with IP masking and email hashing
- Option storage or error_log output
GDPR Compliance
- Personal Data Export: Integrated with WordPress privacy tools for data export requests
- Personal Data Erasure: Anonymizes booking records while preserving business data
- Privacy-First Design: Minimal data collection, secure storage practices
3 Ways to Display the Booking Form
Oryx Bookings supports Elementor, Gutenberg, and Shortcode — all three share the same 6 templates, settings, and booking engine.
- 6 Beautiful Templates: Grid, Stepper, Accordion, Card Flow, Flat Split, Focus Input
- AJAX-Powered: Smooth, no-reload experience for date/slot selection
- Responsive Design: Works perfectly on desktop, tablet, and mobile
- Customizable Colors: Primary color picker to match your brand
- Display Toggles: Show/hide service image, description, price, duration, staff image
- Custom Labels: Fully customizable step titles, button text, and success message
- Multiple Instances: Add multiple booking forms per page, each with independent settings
Elementor Widget
- Native Elementor Widget – Drag-and-drop under the “Oryx Bookings” category
- 6 Template Styles with live preview in the editor
- Content Controls: Template selection, service/category filtering, display toggles, custom labels
- Style Controls: Primary color, card styles, button styles, typography
- Advanced Controls: Time format (12h/24h), redirect URL, custom CSS class
Gutenberg Block
- Native Block – Search “Oryx – Booking Form” in the block inserter
- Server-Side Preview – See the live form directly in the editor
- Sidebar Controls: Template selection, service filtering, display options, labels, colors, time format, redirect URL
Shortcode
[oryx_bookings]– Works with any theme and any page builder- 18 Attributes – Override any global setting per instance
- Global Settings – Configure defaults at Oryx Bookings > Settings > Design
- Shortcode Generator – Built-in generator with copy button in the Design settings tab
[oryx_bookings_my_bookings]– Let logged-in customers view their booking history
Admin Dashboard
- Quick Overview: Pending bookings count, active services, active staff at a glance
- Modern UI: Clean, card-based design with Tailwind CSS
- Easy Navigation: Quick links to all management areas
- Real-Time Stats: Database-driven statistics
Internationalization
- Fully translation-ready with complete text domain support
- All strings wrapped in translation functions
- POT file generation ready
- RTL-compatible design
Developer Features
- Action Hooks:
oryx_bookings_booking_created– Fires when a new booking is created
- Repository Pattern: Clean data access layer for all entities
- Use Cases: Business logic encapsulated in dedicated classes
- PSR-4 Autoloading: Modern PHP class loading
- Type Declarations: Strict typing with PHP 7.4+ features
- WordPress Coding Standards: Fully compliant with WPCS
Usage
Quick Start Guide
Step 1: Configure Working Hours Go to Oryx Bookings > Settings > Working Hours and set your business operating hours for each day of the week.
Step 2: Add Holidays (Optional) Navigate to Settings > Holidays to add any dates when your business will be closed.
Step 3: Create Staff Members Go to Staff > Add New Staff and create profiles for your team members. Choose whether they follow company hours or have custom schedules.
Step 4: Create Services Navigate to Services > Add New Service. Set the name, duration, price, and assign staff members who can provide this service.
Step 5: Display the Booking Form You have three options to display the booking form:
Option A: Elementor Widget
- Open any page with the Elementor Editor
- Search for “Booking Form” in the widget panel (under the Oryx Bookings category)
- Drag the widget onto your page
- Configure template, colors, labels, and display options in the left panel
- All changes preview live in the editor
Option B: Gutenberg Block
- Open any page or post in the Block Editor
- Click “+” to add a new block
- Search for “Oryx – Booking Form”
- Insert the block and configure using the right sidebar
- The block renders a live server-side preview in the editor
Option C: Shortcode
Basic usage (uses global settings from Design tab): [oryx_bookings]
With custom attributes: [oryx_bookings template=”stepper” primary_color=”#EF4444″ show_price=”no”]
Available attributes:
template– Template style:grid(default),stepper,accordion,card-flow,flat-split,focus-inputprimary_color– Hex color code, e.g.#3B82F6show_image– Show service image:yes(default) ornoshow_description– Show service description:yes(default) ornoshow_price– Show service price:yes(default) ornoshow_duration– Show service duration:yes(default) ornoshow_staff_image– Show staff photo:yes(default) ornocurrency– Currency symbol, e.g.$,€,ر.سcurrency_position– Symbol position:beforeorafter(default)time_format– Time display:12h(default) or24hlabel_services– Services step title (default: “Select Service”)label_staff– Staff step title (default: “Select Staff”)label_date– Date step title (default: “Select Date”)label_time– Time step title (default: “Select Time”)label_info– Info step title (default: “Your Information”)label_submit– Submit button text (default: “Confirm Booking”)success_message– Message after booking (supports{booking_id}placeholder)redirect_url– URL to redirect after successful bookingclass– Custom CSS class for the wrapper
Examples:
[oryx_bookings template="stepper" primary_color="#DC2626"]
[oryx_bookings template="accordion" show_price="no" time_format="24h"]
[oryx_bookings template="card-flow" label_services="Select Service" label_staff="Select Staff" label_submit="Confirm Booking"]
[oryx_bookings redirect_url="https://example.com/thank-you"]
Default values for all attributes can be configured at Oryx Bookings > Settings > Design. The shortcode generator on that page builds the shortcode automatically with a copy button.
Customer Bookings: [oryx_bookings_my_bookings] Allows logged-in customers to view their booking history.
For Developers
Hook into new bookings: add_action(‘oryx_bookings_booking_created’, function($booking_id, $booking_data) { // Send email notification // Update CRM // Trigger automation }, 10, 2);
Third-Party Libraries
This plugin bundles the following third-party libraries:
Flatpickr v4.6.13 A lightweight, powerful datetime picker Source: https://flatpickr.js.org/ Copyright (c) 2017 Gregory Petrosyan License: MIT License (https://opensource.org/licenses/MIT)
Support
For support, feature requests, or bug reports, please visit the plugin support forum or contact the developer.
Credits
Developed by Rabie Eltegani with a focus on performance, security, and user experience.
