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
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.zipReadme
SaaS Booking
A modern, production-ready booking plugin with a multi-step frontend flow, SaaS-style admin UI, notifications, and Stripe-ready payments.
Installation
- Copy the plugin folder to
wp-content/plugins/saas-booking. - Activate SaaS Booking in WordPress Admin -> Plugins.
- Create a Host Dashboard page and add
[sb_dashboard]. - Create a Public Booking page and add
[sb_public_calendar]. - In SaaS Booking -> Settings, set timezone, currency, booking defaults, and the Public booking page URL.
- 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=1to 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.cssandassets/css/admin.css: UI styling.
Developer Flow (How It Works Internally)
- User creates categories and calendars via REST (
/categories,/calendars). - Each calendar gets a unique
embed_token. - Public booking page loads calendar data via
GET public/calendar?token=.... - Availability is generated from rules + blackouts via
GET availability. - Guest submits booking via
POST bookings. - Notifications trigger for guest, host, and admin.
- 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_TOKENGET availability?calendar_token=CALENDAR_TOKEN&date=YYYY-MM-DDPOST bookingsPOST payments/intentPOST bookings/{id}/payment-completePOST auth/loginPOST auth/signup
User (requires login or token):
GET/POST categoriesGET/POST calendarsGET/POST calendars/{id}/rulesPOST calendars/{id}/blackoutsDELETE calendars/blackouts/{id}POST calendars/{id}/tokenGET/POST profileGET bookingsGET stats/me
Admin (requires manage_options):
GET admin/usersGET admin/users/{id}POST admin/users/{id}DELETE admin/users/{id}GET bookingsPOST bookings/{id}GET categories?all=1GET calendars?all=1GET/POST settingsGET stats
Stripe Webhook
Webhook endpoint: /wp-json/saas-booking/v1/webhook/stripe
Configure the webhook secret in Payments settings. Events handled:
payment_intent.succeededpayment_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.