Booking & appointment SaaS script: 9 things to check before you launch
Last updated

Booking and appointment scripts all show the same demo: pick a service, pick a time, done. The differences appear once real businesses use them. A stylist's lunch break shows up as a free slot, two customers grab the same 10:30, a client in another time zone turns up an hour early after the clocks change, a late cancellation walks away with the deposit refunded, or the widget on a salon's website answers every click with an error. And if you plan to sell bookings as a service to many businesses, tenancy and billing matter as much as the calendar. This guide covers nine things worth testing before you choose a self-hosted booking SaaS script, and how Slotwise, built on Laravel 12 and Filament 4, handles each one.

1. Does availability follow how people really work?
Most teams don't work one block from nine to five. People take lunch, work late on Thursdays, take leave, and need time to clean up between appointments. If the script only knows opening hours, the booking page will offer times nobody can take.
In Slotwise each staff member has weekly hours in the business time zone, and a split shift is just a second row for the same day. Approved time off blocks the booking page; requests from staff wait as pending until a manager approves them. Every service has buffers before and after, and they are applied in both directions: an existing colour appointment blocks its own clean-up time, and a new slot needs room for the requested service's buffers too. Services can also need a room or a piece of equipment, such as a colour chair, and a time is offered only while one of them is free.

2. Can two customers book the same slot?
Test this one deliberately: open the same booking page in two browsers and confirm the same time in both. A script that checks availability only when the page loads will accept both bookings.
Slotwise re-checks the slot at the moment of booking, inside a database transaction that locks the candidate staff rows and then the rooms or equipment the service needs, and only then writes the booking. The second request gets a clear "that time was just taken" message instead of a double booking, and two bookings with different staff can't both take the last free treatment room. When the customer picks "anyone available", every qualified person is pooled and the booking goes to whoever has the fewest appointments that day, so work is shared fairly.

3. Are time zones and daylight saving handled?
A business in London takes bookings from customers in Toronto and Dubai, and twice a year the clocks change. Ask how the script stores times and what a customer sees.
Slotwise builds each day's working hours in the business's local time and stores every booking in UTC, so a 09:00 opening stays at 09:00 across a daylight-saving change. The booking page reads the customer's time zone from the browser and groups times by morning, afternoon and evening in their own day. Emails show the time with its zone, and the minimum notice (2 hours by default), the booking window (60 days) and the start-time interval (15 minutes) are set per business.

4. What happens to the deposit when a booking is cancelled?
Deposits are the best protection against no-shows, but only if the rules are automatic. Check who gets refunded, when, and whether the customer knows before they cancel.
In Slotwise a service can take no deposit, a fixed amount or a percentage of the price. The booking holds its slot as pending while the customer pays, and unpaid holds are released after 30 minutes by default. A customer who cancels before the cut-off (24 hours by default) is refunded automatically through the original payment; a later cancellation or a no-show keeps the deposit; and a cancellation by the business always refunds. The cancel dialog states which applies before the customer confirms. Payments run through Stripe, PayPal, Razorpay or a built-in simulated gateway for testing. The real gateways have not been tested against live accounts yet, so start with sandbox keys.

5. Do reminders go out once, and again after a reschedule?
Reminders cut no-shows, but a script that sends them twice annoys customers, and one that forgets rescheduled bookings defeats the point. Ask to see the message log, too: when a client says they never got a reminder, the business needs proof.
Slotwise lets each business add any number of reminder rules by email or SMS, at a chosen time before the appointment and with its own wording. Each reminder is sent once per start time, so a rescheduled booking is reminded again. SMS goes through a driver: Log (records the text and sends nothing) or Twilio. Every email and SMS is kept in a searchable Messages log and on the booking's timeline. Confirmation emails carry a calendar invite, and staff can subscribe to a private ICS feed on their phones. The feeds are one-way: events added in a phone calendar don't block time in Slotwise.

6. Will the widget work on the business's own website?
Most businesses want the booking form on their own site, not just a link. Embedding is harder than it looks: inside a frame on another site, browsers drop ordinary session cookies, and many embedded booking forms fail with an expired-session error on the first click.
Slotwise's widget is one script tag that adds a floating "Book now" button in the business's colour, or an inline form. The frame sizes itself, and payments open in the top window because card forms and 3-D Secure don't run inside third-party frames. Over HTTPS the embed page issues its session cookie as SameSite=None; Secure automatically. That's also the requirement to plan for: your Slotwise platform must run on HTTPS for the widget to work on other websites.
Two more things to check in any widget: whether it respects the plan, and whether customers can be asked to sign in. In Slotwise the widget is a plan feature enforced on the server, so on plans without it the embed page shows a link instead and the booking page refuses to be framed by other sites. A business can also switch off guest bookings, and then the customer signs in or registers inline, right inside the widget, without leaving the business's website.

7. Is it really multi-tenant, with plans and billing?
A booking script for one salon and a booking platform for many businesses are different products. If you want to charge businesses monthly, check how their data is separated, how plans limit them and what happens when a payment fails.
Slotwise keeps every business in one database, with each row scoped to its business automatically; a write into another tenant is refused. Businesses resolve by path, subdomain or their own domain. Four editable plans (Starter free, then $29, $79 and $199 a month) set limits for staff, locations and bookings per month, and switch features such as deposits, SMS, rooms and API access. A new plan starts only when its payment succeeds, downgrades that don't fit current usage are blocked, and a daily job renews subscriptions, ends trials and gives past-due accounts a short grace period. When a trial ends unpaid or a subscription lapses, the business stops taking new online bookings: the booking page, the widget and the API show a polite "not accepting online bookings" notice, while existing bookings keep working. Invoices are numbered PDFs, and the super-admin dashboard shows MRR, ARR, trials and churn. Your support team gets a read-only seat in the same panel, and businesses on plans with API access create their own API tokens, each limited to that business. Plan changes are not prorated: an upgrade starts a new full period.

8. How fast can a new business go live?
Every business that signs up and never finishes setup is a lost subscription. Look for a guided first run rather than a blank dashboard.
A Slotwise business signs up from the pricing page, picks its name, URL, time zone and industry, and starts a trial. A five-step wizard then collects the business details, opening hours, the first service and the team, and finishes with the booking link and widget code ready to copy. New businesses also get a 24-hour email reminder and a 2-hour SMS reminder to start with. Owners invite their managers, front desk and staff by email, and each person lands in the right panel.

9. Can you install it without being a Laravel developer?
A script you can't install is a project you have to hire for. Check whether it ships with vendor/ and built assets, whether there is a web installer, and what the server really needs.
Slotwise's download includes vendor/ and the compiled assets, so you need PHP 8.2+ and MySQL, MariaDB or SQLite, but not Composer or Node.js. Visit /install and a five-step wizard checks the requirements, tests the database, loads demo or empty data, creates your super-admin and locks itself; php artisan dev3:install does the same over SSH. One cron entry runs the reminders, the hold expiry and the daily renewals.

See it in action
The video tour starts on the 3D site, books a balayage with a deposit and reschedules it from the email link. It then follows the salon's dashboard, calendar and booking timeline, the stylist's day, the customer's account and the platform owner's MRR and tenants, and ends in Arabic.
What else to compare
- Dashboards: today's bookings, revenue, no-show rate and utilisation rings that show booked time against working hours for each person, plus reports with CSV export.
- Staff and customers: a staff app for each person's day with check-out and no-show buttons, and a customer account with bookings at every business on the platform.
- Security: two-factor sign-in with an authenticator app (8 recovery codes) or email codes, a setting that requires it for the platform team, super-admin resets, an audit log and one-click backups that include private files.
- Languages: English and Arabic with a full right-to-left layout on the site, booking pages, emails and every panel.
- What's not included: group classes with several places, prepaid packages, proration and two-way calendar sync are not in version 1.0.2, and the REST API is read-only.
- Quality: Slotwise 1.0.2 shipped with 149 Pest tests covering the slot engine, the booking lifecycle and the SaaS billing, Larastan level 6 with no errors and 166 pages plus 8 happy paths checked in a headless browser with no console errors.
Slotwise costs $29 on DEV3. Instead of a live demo, the listing has 118 grouped screenshots and two video tours, and the "How it's built" section explains the architecture in more detail.
How customers book — Stacking cards walk visitors through service, staff, time and confirmation, each with a live mini preview.


