Slotly — Appointment & Booking System (PHP + MySQL, Self-Hosted)
Self-hosted appointment booking engineered so it can't double-book.
The problem it solves
Salons, spas, trainers, and clinics-of-one need staff and services booked without double-bookings, timezone bugs, or ignored buffers — the exact places cheap booking scripts fall apart. Hosted booking SaaS also charges a monthly fee forever and keeps the client list on someone else's server.
- Double-bookings and timezone/DST bugs in cheap scripts
- Buffers, blackout dates, and split shifts that aren't enforced
- Recurring SaaS fees for a booking widget you could own outright
What you get
Conflict-free booking engine
Double-booking is prevented at the database level, even when two customers hit the same slot at the same instant.
Timezone & DST correct
Customers see their own timezone while you work in yours, and impossible DST-gap times are never offered.
Buffers, blackouts & split shifts
Prep/cleanup buffers, blackout dates, minimum notice, booking windows, and per-weekday hours including split shifts.
Group classes with capacity
Set a capacity so multiple people can book the same slot, never one more.
Deposits, coupons & reminders
Per-service deposits, coupon codes, tax, and automatic email reminders via one cron line.
Admin calendar & reports
Colour-coded week calendar, appointment statuses, walk-in bookings, and reports by service and staff.
Installable mobile app (PWA)
Add it to a phone or tablet home screen straight from the browser — a full-screen app served from your own server, with no app store involved. Business data is never cached offline, so what you see is always live.
Own It 2.0 — API, 2FA, backups, dark mode
Slotly ships the whole Own It 2.0 owner layer. The public booking endpoints stay exactly as they were — they are your storefront.
- Owner REST API with an OpenAPI spec and revocable bearer keys
- Signed webhooks on booking events
- Two-factor sign-in (TOTP)
- CSV customer import with a mandatory dry run
- One-click backups — JSON with secrets redacted, or the raw SQLite file
- Login rate limiting and a /healthz endpoint for your uptime monitor
- Dark mode
Own It 3.0 — works for your AI, not just for you
Point Claude, an n8n agent or your own script at POST /mcp and it can check availability, book and reschedule — through the same conflict-free engine the public form uses (a serialized transaction plus a unique slot key), so a taken slot is refused, never double-booked. Deliberately, an agent can fill your calendar but never empty it: there is no cancel tool, no delete tool and no payment tool. Upgrade from any 1.x by replacing the files — the database migrates itself.
- Roles with email invitations and a last-admin guard
- Append-only audit trail across browser, API and agent
- Front-desk day sheet and booking confirmations as printable PDFs
- iCal calendar feed of upcoming appointments (tokenized, revocable)
- Scheduled backups with a guided dry-run restore
- Optional single sign-on (OIDC)
Pricing — one-time, yours forever
- ✔ Full source included — PHP you can read and change
- ✔ No subscription. One payment, yours forever
- ✔ It never phones home
- ✔ Your data stays on your server
No reviews yet — so here is what we offer instead. Every competitor price on our comparison pages is source-linked and dated, and when a vendor’s price won’t load we say so rather than guess. See the sources for yourself →
Screenshots
Honest limitations
- No online payment collection at booking — deposits are quoted and tracked in admin, not processed as cards
- No calendar sync (Google/Outlook/.ics) — Slotly only knows about bookings made inside Slotly
- On the autumn DST change the repeated wall-clock hour (e.g. 02:00–03:00 happening twice) is offered once, not twice — only relevant to businesses taking bookings in that overnight hour
- Not built for a multi-vendor marketplace
- Single business per install
2-minute web installer, plain PHP 8 + MySQL (or SQLite for a trial), no Composer or build step — Docker image included.
Covered in these guides
The honest walkthrough: what self-hosting actually requires, what the 2-minute web installer does, and what you are (and are not) signing up to maintain.
Spreadsheets are genuinely fine — until specific failure modes appear. The honest thresholds for moving to a real tool, and which category to look at when you cross one.
Qminder now starts near $800 a month, Waitwhile bills per location — and there is no free self-hosted queue display. Here is the buy-once alternative for a waiting-room number board.
An honest field guide to self-hosted appointment booking: the open-source options reviewed on their real strengths, and where a paid, owned tool fits.
An honest field guide to waiting-room queue software: what the hosted tools cost, why there is no strong open-source option, and where a buy-once queue display fits.
Frequently asked questions
Does it take payment online?
No — deposits are quoted and tracked in admin; online payment gateways are roadmap.
What do automatic reminders need?
One cron line enables them; email goes through SMTP or PHP mail().
Can I run group classes?
Yes — set a capacity and multiple people can book the same slot.
MySQL or SQLite?
Either — MySQL for shared hosting, SQLite for a local trial.
What do I need to run it?
PHP 8.0+ with PDO and MySQL/MariaDB or SQLite, on any Apache/LiteSpeed shared host (mod_rewrite) or Nginx/VPS.



