WP Manifestindependent plugin directory
manifest / events / saas-booking-system

SaaS Booking

A modern, production-ready WordPress booking plugin with a multi-step frontend flow, SaaS-style dashboards, smart notifications, and Stripe-ready payments.

★ 0stars

Install

Download source zip No release zip yet

This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/wajihshaikh/saas-booking-system/archive/refs/heads/main.zip
No built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.

A modern, production-ready booking plugin with a multi-step frontend flow, SaaS-style admin UI, notifications, and Stripe-ready payments.

Installation

  1. Copy the plugin folder to wp-content/plugins/saas-booking.
  2. Activate SaaS Booking in WordPress Admin -> Plugins.
  3. Create a Host Dashboard page and add [sb_dashboard].
  4. Create a Public Booking page and add [sb_public_calendar].
  5. In SaaS Booking -> Settings, set timezone, currency, booking defaults, and the Public booking page URL.
  6. Configure Notifications (email + WhatsApp) and Payments (optional).

Usage

  • Host dashboard: [sb_dashboard] provides login/signup and a full calendar workspace.
  • Public booking flow: [sb_public_calendar] loads a calendar when the URL includes ?sb_token=CALENDAR_TOKEN.
  • Combined mode: [saas_booking mode="dashboard"] or [saas_booking mode="public" token="CALENDAR_TOKEN"].
  • Admin dashboard: manage users, categories, calendars, bookings, notifications, and payments from SaaS Booking.
  • Embed mode: add &sb_embed=1 to the public booking link to render without theme header/footer.

How To Use (Role-Based)

Admin:

  • Configure global settings, email templates, WhatsApp keys, booking defaults, and timezone.
  • View all users and open a user detail page.
  • Review user categories, calendars, and bookings.
  • Suspend or delete users if needed.
  • Export bookings from the bookings page or a user detail page.

User (calendar owner):

  • Sign up and log in via the host dashboard page.
  • Create a category (e.g., "Yoga Classes").
  • Create a calendar under the category (e.g., "Morning Batch").
  • Set availability rules and blackout dates.
  • Copy the share link or iframe code from the Share tab.
  • Receive booking notifications via email and WhatsApp.

Guest (booking person):

  • Open the shared booking link.
  • Select a date and time slot.
  • Submit name, email, WhatsApp/phone, and notes.
  • Confirm the booking and receive notifications.

Plugin Structure

  • saas-booking.php: Bootstrap, constants, and class loading.
  • includes/class-sb-plugin.php: Hooks registration and plugin lifecycle.
  • includes/class-sb-db.php: Custom table schema and upgrades.
  • includes/class-sb-rest.php: REST API routes, permissions, validation.
  • includes/class-sb-categories.php: Category CRUD and defaults.
  • includes/class-sb-calendars.php: Calendar CRUD and embed tokens.
  • includes/class-sb-availability.php: Rules, blackouts, slot generation.
  • includes/class-sb-bookings.php: Booking creation, status updates, reminders.
  • includes/class-sb-notifications.php: Email + WhatsApp notifications and logs.
  • includes/class-sb-payments.php: Stripe intent and payment handling.
  • admin/class-sb-admin.php: Admin menus and asset loading.
  • admin/partials/*.php: Admin dashboard pages (users, bookings, settings, etc).
  • public/class-sb-public.php: Shortcodes and frontend asset loading.
  • public/partials/booking-shortcode.php: Guest booking UI.
  • public/partials/dashboard-shortcode.php: Host dashboard UI.
  • assets/js/public.js: Frontend dashboard + public booking logic.
  • assets/js/admin.js: Admin dashboard logic.
  • assets/css/public.css and assets/css/admin.css: UI styling.

Developer Flow (How It Works Internally)

  1. User creates categories and calendars via REST (/categories, /calendars).
  2. Each calendar gets a unique embed_token.
  3. Public booking page loads calendar data via GET public/calendar?token=....
  4. Availability is generated from rules + blackouts via GET availability.
  5. Guest submits booking via POST bookings.
  6. Notifications trigger for guest, host, and admin.
  7. Optional payment flow creates a Stripe intent and confirms booking after payment.

REST API

Base: /wp-json/saas-booking/v1/

Public:

  • GET public/calendar?token=CALENDAR_TOKEN
  • GET availability?calendar_token=CALENDAR_TOKEN&date=YYYY-MM-DD
  • POST bookings
  • POST payments/intent
  • POST bookings/{id}/payment-complete
  • POST auth/login
  • POST auth/signup

User (requires login or token):

  • GET/POST categories
  • GET/POST calendars
  • GET/POST calendars/{id}/rules
  • POST calendars/{id}/blackouts
  • DELETE calendars/blackouts/{id}
  • POST calendars/{id}/token
  • GET/POST profile
  • GET bookings
  • GET stats/me

Admin (requires manage_options):

  • GET admin/users
  • GET admin/users/{id}
  • POST admin/users/{id}
  • DELETE admin/users/{id}
  • GET bookings
  • POST bookings/{id}
  • GET categories?all=1
  • GET calendars?all=1
  • GET/POST settings
  • GET stats

Stripe Webhook

Webhook endpoint: /wp-json/saas-booking/v1/webhook/stripe

Configure the webhook secret in Payments settings. Events handled:

  • payment_intent.succeeded
  • payment_intent.payment_failed

Twilio WhatsApp

Add your Twilio Account SID, Auth Token, and WhatsApp sender number in Notifications.

Testing

See TESTING.md for manual test cases and checklists.

Future Improvements

  • Add two-way calendar sync (Google/Outlook/iCal).
  • Add advanced pricing rules and deposits.
  • Add custom form fields per category.
  • Add analytics dashboards and exports.
  • Add WYSIWYG notification templates.