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.

by SaaS Booking Team · github.com/wajihshaikh/saas-booking-system

0stars
0forks

Install

No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:

wp plugin install https://github.com/wajihshaikh/saas-booking-system/archive/refs/heads/main.zip

Readme

SaaS Booking

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.

Read the full README on GitHub →