🧭 Overview

XC Simple Booking is a lightweight standalone booking plugin for WordPress. It is designed for businesses that need a clean appointment request flow without the overhead of eCommerce or checkout plugins.

The plugin provides:

  • a 3-step front-end booking form
  • AJAX-based slot loading and submission
  • a dedicated admin dashboard for managing bookings
  • customer and admin email notifications
  • configurable booking rules, including available days and booking window
  • a theme-friendly front end that adapts well to modern WordPress sites

It does not require WooCommerce.


✅ Server Requirements

To run XC Simple Booking reliably, your environment should meet the following requirements:

Minimum requirements

  • WordPress 5.6 or newer
  • PHP 8.2 or newer
  • MySQL 5.7+ or a compatible MariaDB version
  • standard WordPress ability to install and activate plugins
  • a working WordPress admin area
  • WordPress AJAX functionality enabled on the site

Recommended environment

For best stability in production, the following is recommended:

  • the latest stable WordPress version
  • HTTPS enabled across the site
  • a properly configured mail delivery method
  • an SMTP plugin for reliable email sending
  • correct WordPress timezone settings
  • a caching setup that excludes the booking page from aggressive full-page caching

Practical hosting notes

XC Simple Booking stores bookings in its own database tables and uses WordPress-native functionality for:

  • admin screens
  • AJAX requests
  • database writes
  • email delivery through wp_mail()

This means it works on standard WordPress hosting, but reliability improves significantly when the site has:

  • stable database access
  • non-blocked AJAX requests
  • dependable outgoing mail configuration

📦 Installation

Install from the WordPress dashboard

  1. Log in to your WordPress admin panel.
  2. Go to Plugins → Add New → Upload Plugin.
  3. Upload the XC Simple Booking ZIP package.
  4. Click Install Now.
  5. Click Activate Plugin.
  6. After activation, open the plugin menu in the admin sidebar.

Install via FTP or SFTP

  1. Extract the plugin ZIP file on your computer.
  2. Upload the plugin folder to /wp-content/plugins/.
  3. Go to Plugins in WordPress admin.
  4. Activate XC Simple Booking.

What happens on activation

On activation, the plugin automatically performs its initial setup. In the current verified package, this includes:

  • creating the internal booking storage tables
  • creating the internal rate-tracking storage used for anti-abuse protection
  • saving default plugin settings if none exist yet
  • registering the admin menu pages
  • preparing the shortcode and front-end assets

No manual database setup is required.


🛠️ First-Time Setup

After activation, open:

XC Simple Booking → Settings

Then configure the plugin in this order.

1. General settings

Set the business basics:

  • Service / Business Name
    Used as the main booking identity and also reused in email output.
  • Admin Notification Email
    The address that receives new booking notifications.
  • Notification toggles
    Choose whether the plugin sends:
    • admin notifications
    • customer confirmations

2. Date and booking window

Define when bookings are allowed:

  • Min Days Ahead
    Controls how soon the first available booking date can be selected.
  • Max Days Ahead
    Controls how far into the future visitors can book.
  • Disabled Days
    Lets you block specific weekdays entirely.

This is useful for businesses that do not operate every day.

3. Time slots

Enter one time slot per line, for example:

  • 09:00 AM
  • 09:30 AM
  • 10:00 AM

Important behavior in the current package:

  • the plugin uses the exact slot values you define
  • it does not auto-generate intervals
  • all pages using the shortcode share the same slot pool
  • a slot is hidden from the front end once it is no longer available

4. Optional form fields

You can enable or disable these additional fields:

  • Phone
  • Notes
  • Service

In the verified build, name and email are always required, while optional fields depend on your settings.

5. Confirmation message

You can customize the success message shown after a booking is submitted.

Supported placeholders:

  • {name}
  • {ref}
  • {date}
  • {time}
  • {email}

This lets you keep the confirmation text personalized without editing plugin code.

6. Save and test

After saving:

  1. create a WordPress page
  2. insert the shortcode
  3. publish the page
  4. test the booking flow on desktop and mobile

🏷️ Shortcode Usage

Default shortcode

[simple_booking]

This renders the full booking form using the plugin’s saved settings.

Shortcode with a custom title

[simple_booking title="Book an Appointment"]

This is the verified shortcode customization supported in the current package.

Important implementation note

The current package clearly supports the title override.
Do not rely on undocumented shortcode behavior unless it has been explicitly added and tested in your build.


👤 Front-End Usage

1️⃣ Step 1 — Select Date & Time

The visitor starts by choosing a date.

The plugin then:

  • checks whether the date is within the allowed booking window
  • blocks disabled weekdays
  • loads available time slots asynchronously
  • prevents the visitor from continuing until a valid slot is selected

This creates a faster experience because the page does not need to reload.

2️⃣ Step 2 — Enter Personal Details

The visitor then enters their details.

Required fields

  • Full name
  • Email address

Optional fields

Depending on your settings, the form may also show:

  • phone number
  • service
  • additional notes

3️⃣ Step 3 — Review & Confirm

Before submission, the visitor sees a review screen containing:

  • selected date
  • selected time
  • entered contact information
  • optional values such as phone, service, and notes

After confirmation, the booking is submitted through AJAX and the visitor receives a success message with a booking reference.


🧩 Booking Logic

The plugin follows a straightforward availability model.

How slot availability works

  • the plugin checks the selected date against your booking rules
  • it loads all configured slots for that date
  • it removes slots that are already occupied
  • it performs another availability check before saving the booking

This double-check helps prevent accidental double-booking during real-time use.

Status behavior

The plugin uses three statuses:

  • Pending
  • Confirmed
  • Cancelled

In the current build:

  • Pending bookings occupy the slot
  • Confirmed bookings occupy the slot
  • Cancelled bookings no longer block the slot

That means cancelling a booking effectively makes the slot available again.


🗂️ Admin Usage

All Bookings screen

Open:

XC Simple Booking → All Bookings

From there, administrators can:

  • view bookings in a paginated table
  • filter by status
  • search by:
    • customer name
    • email address
    • booking reference

Single booking view

When opening an individual booking, the admin can review:

  • customer name
  • customer email
  • optional phone
  • booking date
  • time slot
  • optional service
  • current status
  • creation timestamp
  • notes, if included

Admin actions

From the booking detail view, authorized admins can:

  • change the booking status
  • delete the booking permanently

Important operational note

The current version is primarily a review-and-manage workflow, not a full rescheduling suite.

That means:

  • there is no built-in edit screen for changing booking details directly
  • there is no built-in customer self-service portal
  • there is no built-in reschedule flow
  • there is no built-in export tool
  • there is no built-in calendar sync

📧 Email Notifications

XC Simple Booking can send two types of email.

Customer confirmation email

When customer notifications are enabled, the plugin sends a styled HTML email after a successful booking.

In the current verified package, the customer email includes core booking information such as:

  • booking reference
  • name
  • date
  • time slot

Admin notification email

When admin notifications are enabled, the plugin sends a styled HTML email to the configured admin address.

In the current verified package, the admin email includes:

  • booking reference
  • customer name
  • customer email
  • booking date
  • time slot
  • optional phone
  • optional notes
  • a direct dashboard link to view the booking

Delivery recommendation

The plugin uses WordPress mail handling.
For production use, an SMTP setup is strongly recommended.

Without SMTP, common issues include:

  • mail landing in spam
  • messages not being sent by the server
  • inconsistent delivery across different hosts

🎨 Styling and Theme Compatibility

The front end is built to work with a wide range of WordPress themes.

Verified front-end behavior

In the current package, the form is:

  • responsive
  • AJAX-driven
  • theme-friendly
  • mobile-usable
  • based on plugin-specific CSS classes
  • built with progressive visual feedback between steps

Styling approach

The plugin uses a dedicated class namespace beginning with:

.sbp-

This makes it easier to target the booking UI with custom CSS.

Practical customization guidance

You can restyle the plugin safely through:

  • Appearance → Customize → Additional CSS
  • your child theme stylesheet
  • your site’s custom CSS pipeline

Good customization candidates

Common front-end customizations include:

  • button colors
  • spacing
  • border radius
  • typography
  • card backgrounds
  • success message styling

Because the plugin keeps its own class prefix, front-end restyling is relatively straightforward.


🔒 Security and Reliability

This documentation intentionally summarizes protection features at a high level.

The current package includes protection for:

  • request validation
  • anti-spam handling
  • abusive repeated submissions
  • input sanitization
  • input validation
  • slot collision prevention
  • admin-only management actions

Important note

These protections are built into the booking flow, but site-level security still matters.

For best results, keep the following in place:

  • updated WordPress core
  • updated PHP
  • a reputable firewall or security layer
  • regular backups
  • limited admin accounts
  • strong passwords and 2FA where possible

🧪 Recommended Launch Checklist

Before going live, verify the following:

  • plugin is installed and active
  • business name is correct
  • admin notification email is correct
  • allowed booking window is correct
  • disabled weekdays are correct
  • time slots are entered line by line
  • optional fields reflect your process
  • shortcode is placed on the correct page
  • booking page is excluded from aggressive caching
  • test bookings work from the front end
  • admin receives notifications
  • customer confirmations are delivered as expected
  • mobile layout looks correct
  • timezone is correctly configured in WordPress

🧰 Troubleshooting

Booking page loads, but no time slots appear

Check the following:

  • time slots are actually defined in settings
  • the selected day is not disabled
  • the selected date is within the allowed booking window
  • those slots have not already been occupied
  • JavaScript is not being blocked by optimization plugins
  • AJAX requests are not being blocked by a firewall, security plugin, or server rule

Also test in an incognito window to rule out stale cache or front-end script conflicts.


Booking form does not submit

Possible causes include:

  • missing required fields
  • invalid email format
  • the selected slot becoming unavailable during submission
  • cached or outdated front-end assets
  • a blocked AJAX endpoint
  • a plugin conflict affecting JavaScript execution

Recommended checks:

  • open browser developer tools and inspect console errors
  • test with theme and plugin conflicts reduced
  • clear cache and minification layers
  • verify the site can process normal WordPress AJAX requests

Visitors say the form is broken on mobile

In the verified package, the form is responsive, so the most likely causes are environmental:

  • theme CSS overrides
  • custom page-builder CSS
  • forced fixed-width containers
  • conflicting mobile optimization tools

Start by testing the page with custom CSS disabled.


Emails are not arriving

Check the following in order:

  1. confirm notifications are enabled in plugin settings
  2. confirm the admin email address is correct
  3. test with SMTP enabled
  4. inspect spam or junk folders
  5. review mail logs if available on the host

This is one of the most common production issues on standard WordPress hosting.


The booking page behaves inconsistently after changes

This usually points to caching.

Common fixes:

  • clear site cache
  • clear CDN cache
  • clear browser cache
  • exclude the booking page from full-page caching
  • temporarily disable JS/CSS aggregation to test

Because the plugin depends on real-time slot checks and AJAX, overly aggressive caching can interfere with expected behavior.


Bookings cannot be edited the way the client wants

That is expected in the current version.

The verified package allows admins to:

  • review bookings
  • change status
  • delete bookings

It does not provide a built-in admin form for editing all booking fields after creation.


Different services need different schedules

That is not included in the current version.

The current package uses one shared availability model based on:

  • the global date window
  • the global disabled weekdays
  • the global time slot list

If you need service-specific or day-specific scheduling logic, that would require a custom enhancement.


❓ FAQ

Does XC Simple Booking require WooCommerce?

No. It is a standalone booking plugin.

Can I place the form on more than one page?

Yes. You can place the shortcode on multiple pages.
However, all instances use the same underlying settings and availability rules.

Can visitors book the same slot twice?

The plugin is designed to prevent this. It checks availability when displaying slots and checks again before saving the booking.

What statuses are available?

The current package uses:

  • Pending
  • Confirmed
  • Cancelled

Does cancelling a booking reopen the slot?

Yes. In the verified package, cancelled bookings no longer block availability.

Can I customize the confirmation message?

Yes. The confirmation message supports placeholders for name, reference, date, time, and email.

Can I disable some form fields?

Yes. Optional fields such as phone, notes, and service can be enabled or disabled in settings.

Can I fully edit a booking after it is submitted?

Not in the current version. Admins can review it, change status, or delete it.

Can I set different time slots for different weekdays?

Not in the current version.

Does the plugin support calendar sync?

Not in the current version.

Does the plugin support export to CSV or Excel?

Not in the current version.

Is the front end mobile-friendly?

Yes. The verified package includes responsive front-end behavior.

What should I customize first after installation?

Start with:

  • business name
  • admin email
  • booking window
  • disabled weekdays
  • time slots
  • notification preferences
  • booking page shortcode

📌 Best Practices

For the best production experience:

  • use SMTP
  • keep WordPress and PHP updated
  • exclude the booking page from aggressive caching
  • test with real devices
  • keep time slots clean and consistent
  • review bookings regularly
  • back up the site before major updates
  • avoid editing plugin core files directly

📝 Current Version Notes

This guide reflects the currently verified package behavior and is intentionally aligned to what is actually implemented.

A few important practical notes for this release:

  • the plugin is centered on a simple booking workflow, not a large booking platform
  • availability is global, not service-specific
  • admin management is clean and minimal
  • front-end behavior is AJAX-based
  • the plugin is suitable for businesses that want a compact, easy-to-understand booking flow