Slotnest adds booking forms to Bookly. A guided setup takes a new site from “just activated” to a live booking page in about two minutes: it adds your first service and staff member to Bookly, publishes a form and creates a “Book now” page. Design more forms visually, then place them with the Slotne
PricingFree downloadThe WordPress.org download is free. Pro versions, add-ons or external services may cost extra.
CompatibilityRequires WordPress 6.5 and PHP 7.4.
SourceWordPress plugins · Nov 11, 2026
01 / Source details
Aboutthistool.
Slotnest adds booking forms to Bookly. A guided setup takes a new site from “just activated” to a live booking page in about two minutes: it adds your first service and staff member to Bookly, publishes a form and creates a “Book now” page. Design more forms visually, then place them with the Slotnest booking form block or the [slotnest_booking id="123"] shortcode. Bookings land in Bookly like any other appointment.
Slotnest is an independent add-on. It is not made by or affiliated with the authors of Bookly. The free Bookly plugin must be installed and active. Slotnest is tested with the free Bookly plugin (Bookly 28.5); it has not been tested with Bookly Pro or Bookly’s paid add-ons.
What you get
Guided first-run setup that works on an empty Bookly install: service (name, length, price), staff member (working days and hours), a published form and a booking page.
A “Slotnest booking form” block: pick a published form from a dropdown and see a live preview in the editor.
Saved forms with draft and publish, listed on a familiar WordPress list screen.
Templates to start from: classic four-step, compact two-step, salon and clinic.
Visual design: colours, typography, spacing, wizard or single-page layout, button and field labels.
A live preview that can never create appointments.
Public booking that rechecks availability and capacity on the server before it saves.
Unpaid bookings or “pay locally” reservations. Staff collect the payment in Bookly.
Customer and staff confirmation emails through Bookly’s mail settings and templates, with automatic delivery retries.
Safe retries: a visitor who loses the connection and submits again does not create a second appointment.
When Slotnest and Bookly’s own appointment editor save for the same staff member at the same moment, one waits for the other, and the editor’s overlap warning also sees Slotnest bookings. This uses Bookly internals (see “Which parts of Bookly does Slotnest rely on?” below).
Optional authenticated REST API ( slotnest/v1 ) for integrations, with per-endpoint read, write and delete switches under Tools → Slotnest API.
Privacy and security
Public forms never receive administrator credentials and cannot read customer lists.
Public endpoints accept only the fields a published form uses.
Rate limits per visitor address (IPv6 addresses are grouped by their /64 network): 600 read units a minute per form (a month of availability counts as 10), 10 bookings and 30 rejected attempts per 10 minutes. Per customer email address: 5 bookings a day from one visitor address and 15 a day from all addresses together (filters slotnest_public_email_ip_limit and slotnest_public_email_limit ). Limits use fixed time windows (a “day” is a UTC calendar day, so around a window boundary up to twice a limit can get through) and are counted atomically in the database, so parallel requests cannot exceed them.
Spam protection: a hidden honeypot field; length limits on names (60 characters), email (100), phone (32) and notes (1,000); names cannot contain links, domain names (anything like “name.tld”, also with spaces or look-alike dots), email addresses, markup or four or more digits, and notes cannot contain links or domain names. This makes it hard to use the form to email advertising text, but notes are still free text. A CAPTCHA can be added through the slotnest_public_book_allowed filter; none is built in, and the plugin makes no external calls.
Booking receipts are deleted after 48 hours; sent and failed email queue rows after 30 days. Queued emails contain the customer’s name and email address until then.
What Slotnest writes to Bookly
A public booking adds rows to Bookly’s own tables, the same rows Bookly’s booking form adds: a customer ( bookly_customers ), an order ( bookly_orders ), an appointment ( bookly_appointments ), the customer’s booking ( bookly_customer_appointments ) and, on “pay locally” forms, an unpaid payment ( bookly_payments ). The guided setup adds a service, a staff member, the link between them and the staff member’s working hours. The optional integration API can create, change and delete Bookly appointments, customers, services and staff when an administrator switches those operations on. Slotnest keeps its own data (booking receipts, the email queue and rate-limit counters) in three tables of its own.
Not included
Online card or wallet payments.
Carts, recurring series, waitlists, coupons and gift cards on public forms. Authenticated API routes for these exist and stay off until an administrator enables them.
SMS and reminder campaigns.
Requirements
The free Bookly plugin (tested with 28.5). Public booking needs InnoDB tables and MySQL 5.7.5+ or MariaDB 10.0.2+ (tested with MariaDB 11.4).
Source code and build
The admin form designer and the public booking form are a React application written in TypeScript. Its full source ships with the plugin in source/ . The built file, assets/suite.js , is not minified.
To rebuild it you need Node.js 20 or newer:
01cd source
02npm ci
03npm run build:wordpress
The build writes assets/suite.js and assets/suite.css into the plugin folder.
The block is built with @wordpress/scripts (not minified):
04cd source/block
05npm ci
06npm run build
The build writes build/booking-form/ (block.json, index.js, index.css, render.php).
See it in action
Screenshots & previews.
Guided setup: name the service and type its length in minutes, or pick a preset (15, 25, 30, 40, 45, 60 or 90).Guided setup: opening hours for each day of the week and an optional lunch break.Guided setup: choose the booking page layout. The default is three short steps with no staff step.The booking form for visitors: Service, then Date & time, then Your details, with "Step 1 of 3" and a progress bar.Picking a time: slots follow the service length (a 40-minute service on a 9 to 5 day offers 12 times).Your details: contact fields and an optional note.The Slotnest booking form block with a live preview in the editor.The visual form editor with a live preview.Settings: public booking switch, booking email health and Bookly environment check.
02 / Source details
Gettingstarted.
01Install Slotnest from Plugins → Add New, or upload the ZIP. WordPress asks you to install and activate the free Bookly plugin first.
02Activate Slotnest. The guided setup opens (you can re-open it any time from Slotnest → Get started).
03Add your service and the person who provides it, or pick the ones you already have in Bookly.
04Click “Create booking page”. Open the page in a private window and make a test booking.
05To use the form elsewhere, add the “Slotnest booking form” block to any page, or paste the shortcode from Slotnest → All Forms.
Upgrading from Buklio Booking Forms for Bookly (3.x, the plugin’s previous name) or the older “Bookly API CRUD” plugin: activate Slotnest and it deactivates the older plugin for you. Forms (with the same IDs), settings, the API capability and queued emails carry over, and existing [buklio_booking] shortcodes and Buklio booking form blocks keep working; the block editor offers to convert old blocks to the Slotnest block. You can then delete the older plugin; your forms and booking data stay. If you reactivate Buklio afterwards it will not see the converted forms.
03 / Source details
Frequently asked questions.
How do I add a booking form to a page?
In the block editor, add the “Slotnest booking form” block and choose a published form from the dropdown. The editor shows a live preview. In the classic editor or a page builder, paste the shortcode shown next to the form in Slotnest → All Forms. Pasting a [slotnest_booking] shortcode into the block editor converts it to the block.
I skipped the setup. How do I get it back?
Open Slotnest → Get started. You can run it again at any time; it reuses the service, staff member, form and page it created instead of adding duplicates.
Does the setup change my Bookly settings?
It adds the service and staff member you enter (through Bookly’s own data classes, with Bookly’s free-plan limits of five services and one staff member) and links them. A fresh Bookly starts in its own first-run wizard, which hides its Services, Staff and Calendar screens; once Slotnest has added a service and a staff member it ends that wizard the same way Bookly does when it finishes. Nothing else in Bookly changes.
Does it work without Bookly?
No. Slotnest reads and writes Bookly’s appointments, services and staff. WordPress asks you to install Bookly first, and without Bookly’s tables forms and API calls return a clear error instead of booking.
Does it work with Bookly Pro and its add-ons?
It has not been tested with Bookly Pro or any paid Bookly add-on, so treat that combination as unsupported for now. Known gaps: Slotnest’s availability check does not see busy times from Google, Outlook or Apple calendars, special days, compound or collaborative services, or other Pro scheduling rules. It does use Bookly’s own minimum-notice setting, including Pro’s per-service value, and after a booking it runs Bookly’s calendar and online-meeting sync the same way Bookly’s form does. Features that depend on an add-on (extras, locations, custom fields) only appear when Bookly reports that add-on’s tables.
Which parts of Bookly does Slotnest rely on?
Bookly’s database tables (read, and written as described above), and these Bookly classes, each checked before use with a safe fallback: the Service, Staff, StaffService, StaffScheduleItem, Order, Appointment and CustomerAppointment entities; Lib\Proxy\Pro::getMinimumTimePriorBooking (minimum notice); Lib\Utils\Common::syncWithCalendars and Lib\Proxy\Shared::syncOnlineMeeting (sync after a booking); Lib\Notifications\Booking\Sender with Backend\Components\Dialogs\Queue\NotificationList and Lib\Utils\Mail (emails; a plain receipt is sent if they are missing); Lib\Utils\Appointment::checkTime (overlap warning in Bookly’s editor); Lib\Utils\Common::isCurrentUserAdmin / isCurrentUserStaff ; Lib\Config (plan limits and setup wizard state); and Lib\Plugin (detection). A Bookly update that changes these can turn a fallback on: for example plain-text emails instead of Bookly’s templates.
Is there spam protection?
Yes, without any external service: a honeypot field, per-address and per-email booking limits, and limits on what visitors can type into fields that end up in emails. To add a CAPTCHA, hook slotnest_public_book_allowed and return a WP_Error to reject a booking.
Can someone block a customer by using their email address?
Only partly. A per-email cap stops one person from sending many booking emails to someone else’s address, but anyone who knows an address can also use up its cap. Slotnest limits that: one visitor address can use at most 5 of an email’s bookings a day, and an email address is only blocked for everyone after 15 bookings a day from at least three different addresses (or networks), each of which also takes a real slot in your calendar and sends you a booking email. A blocked customer sees a message asking them to contact you. You can raise or lower both numbers with the slotnest_public_email_ip_limit and slotnest_public_email_limit filters, or turn a cap off by returning 0.
Can visitors pay online?
Not with this plugin. Each form chooses between unpaid bookings and “pay locally”, which records an unpaid payment that stays pending until staff collect it in Bookly.
Will a public booking send email?
Yes. Customer and staff emails go out through Bookly’s mail settings, using a matching Bookly template when one exists or a plain receipt otherwise. Failed deliveries are retried.
Are the REST endpoints public?
The slotnest/v1 integration API requires a logged-in user with the slotnest_api_access capability (administrators have it). Published forms use a small public catalog and booking endpoint that never exposes customer data.
How do I translate the plugin?
All text is in English and translatable with the text domain slotnest . A template is included at languages/slotnest.pot .
Where is the source code of the JavaScript?
assets/suite.js is built from the TypeScript/React source in source/ , and the block in build/booking-form/ from the source in source/block/ . See “Source code and build” below.
FinderPress Media Auditor helps site administrators scan for broken images, missing Media Library files, unreachable media URLs, and other media issues across WordPress content. Use it to audit images, video, audio, PDFs, featured images, and attachment files without sending scan data to an external
The Accepted Payment Methods plugin is a straightforward, lightweight solution that enhances your website by displaying visually appealing icons of the payment methods you accept. This plugin is ideal for a variety of websites, including e-commerce platforms, service-oriented websites, and informati