Getting Started
FluentBooking is a WordPress appointment scheduling plugin built on the WPFluent framework. This documentation site is generated directly from the checked-out FluentBooking core and Pro plugin source, so the route inventory, hook names, and model references stay aligned with the installed code.
What This Site Covers
- Database layer: ORM models mapped to the
fcal_*tables (calendars, events, bookings, availability, metadata, plus Pro tables for orders, transactions, and webhooks). - Hooks: Action and filter hooks emitted across the booking lifecycle, calendars, availability, payments, and third-party integrations.
- REST API: Every route registered under the
fluent-booking/v2namespace, grouped by module with per-operation reference pages. - MCP server: The typed abilities the
fluent-booking/mcpnamespace exposes to AI agents, with input schemas and the permission each one needs. - Platform: The WordPress-level surface — shortcodes, AJAX endpoints, Gutenberg blocks, email smartcodes, permission sets, scheduled tasks, and the event-configuration vocabularies.
- Guides: Practical recipes for common customizations — code snippets, theme compatibility, custom booking fields, and webhooks.
Quick Links
REST API OverviewAuthentication, errors, base URL, and module index.Database SchemaAll
fcal_* tables with columns and indexes.Action HooksEvent hooks for booking, calendar, and payment lifecycle.Filter HooksData-shaping filters for fields, slots, and rendering.Code SnippetsDrop-in examples for common customizations.Models ReferenceEloquent-style ORM models with relationships and scopes.MCP ServerAgent abilities, toolsets, and the gates that guard them.SmartcodesTemplate placeholders for emails and landing pages.Source of Truth
| Concern | Source |
|---|---|
| Core routes | fluent-booking/app/Http/Routes/api.php |
| Pro routes | fluent-booking-pro/app/Http/Routes/api.php, fluent-booking-pro/app/Http/Routes/routes.php |
| Controllers | fluent-booking/app/Http/Controllers/, plus the matching Pro controllers |
| Models | fluent-booking/app/Models/, fluent-booking-pro/app/Models/ |
| Migrations | fluent-booking/database/Migrations/ |
| Hooks | do_action(...) / apply_filters(...) calls across the core and Pro source trees |
| MCP abilities | fluent-booking/app/Modules/MCP/ (each tool class's definitions()), plus fluent-booking-pro/app/Modules/MCP/ |
| Shortcodes, blocks, AJAX | add_shortcode(), register_block_type(), and wp_ajax_* registrations in the hook handlers |
| Smartcodes | Helper::getEditorShortCodes() |
| Permissions | fluent-booking/app/Services/PermissionManager.php, app/Http/Policies/, MCP PermissionGate |
Editions
FluentBooking Core (Free)
The core plugin provides the scheduling foundation:
- Unlimited calendars and event types
- Booking lifecycle (creation, confirmation, cancellation, reschedule)
- Availability schedules (recurring + date overrides)
- Email notifications
- Core REST API (
fluent-booking/v2)
FluentBooking Pro PRO
The Pro add-on extends Core with:
- Payments (Stripe, PayPal, WooCommerce)
- Coupons and discounts
- Advanced integrations (Zoom, Google Meet, Outlook, Apple Calendar)
- Outbound webhooks and SMS notifications
- Multi-host / team / round-robin event types
- Reports and exports
Pro endpoints, hooks, and models are flagged with PRO badges throughout this reference.
Architecture at a Glance
- REST namespaces:
fluent-booking/v2(admin) andfluent-booking/mcp(the MCP server, deliberately outside the v2 policy stack) - Custom tables: all prefixed
fcal_(e.g.,fcal_bookings,fcal_calendars,fcal_calendar_events,fcal_booking_meta,fcal_meta) - Request flow: Route → Policy → Controller → Service → Model
- MCP flow: Ability callback →
PermissionGate→ Service/Model — no route and no Policy; see Permissions - Frontend conventions: The admin app uses
X-HTTP-Method-Overridefor PUT/PATCH/DELETE; browser clients rely on cookie auth + nonce. Server-to-server calls use WordPress Application Passwords.
Development Commands
bash
npm install
npm run docs:dev # local dev server
npm run docs:build # production build
npm run generate:docs # regenerate model/hook/route docs from PHP source
npm run generate:og # regenerate OG images
npm run verify:docs # fail if the generated docs no longer match the PHP source