Slotly
Appointment booking that refuses a double booking, holds slots for deposits and offers canceled places to a waitlist.
For businesses that take appointments or class bookings. Often replaces Calendly, Square Appointments or Setmore.
Single license $99 · Extended license $229 · paid once, yours for good
What it does
Double booking is refused at the database level. That holds even when two customers take the same slot at once.
An online booking holds its slot until you record the deposit. Customers pay through your own Stripe or PayPal link; unpaid holds are released after the hours you set.
After the number of no-shows you choose, a customer is asked for a deposit first. A no-show's page emails the fee and your payment link.
Automatic email reminders, and texts on your own SMS account through Twilio, Vonage, ClickSend or any HTTPS gateway. No credits to buy.
On a full day customers join the waitlist. A cancellation offers the place to the first person waiting, by email and text.
A private link in the confirmation lets them cancel or reschedule, up to a cutoff you set.
Book a regular once and repeat it, with or without an end date. Clashes are skipped, never double-booked.
Token-guarded .ics feeds go to Google, Outlook or Apple Calendar. Your own calendar's private .ics address blocks busy time on your booking page.
Set the most appointments that can run at once, for two chairs or one room. A time already that full is not offered.
Several people can book the same slot until it is full. A group class counts once toward your business-wide limit.
Customers tick to accept your cancellation policy. Each booking keeps the exact text and when it was accepted.
Prep and clean-up buffers, blackout dates, minimum notice, booking windows and per-weekday hours. Time zones and clock changes are handled.
Also: booking questions, a video room, customer categories, coupons, admin reports and an installable phone app.
What Slotly deliberately doesn’t do.
- Slotly never touches a card. With card payments switched on, a deposit or the full price is paid at booking on Stripe's own page through your own Stripe account; without them, deposits are quoted and tracked and your own payment link (a Stripe or PayPal page) is shown beside the amount due.
- Calendar sync is by .ics, both ways: Slotly's token-guarded feeds go to your calendar, and your own calendar's private .ics address blocks your booking page. No account connection, and your calendar is never written to.
- On the autumn DST change the repeated wall-clock hour is offered once, not twice — only relevant if you take bookings between 2 and 3 a.m.
- Not built for a multi-vendor marketplace.
- Single business per install.
What renting costs instead
4 months of Calendly costs what Slotly costs once.
Read Sep 26, 2026 · source3 months of Square Appointments costs what Slotly costs once.
Read Jul 22, 2026 · source7 months of Setmore costs what Slotly costs once.
Read Sep 3, 2026 · sourceThe full comparison: every rival, what each does better, and who should stay with them →
Replacing one of these? Calendly alternative · Square Appointments alternative · Setmore alternative · Acuity Scheduling alternative · Booksy alternative · SimplyBook.me alternative · Fresha alternative · Vagaro alternative · Singenuity alternative
Release history
For Slotly, 4.1 adds card deposits and prepayment at booking, through your own Stripe account. What’s new in 4.1 →
For Slotly, 4.0 means updates from inside the app: the Updates page checks for a new release with your license key, verifies Ownware's signature, takes a backup and… What’s new in 4.0 →
For Slotly, 3.3 meant a limit on how many appointments run at once across the business, so a time that is already full is not offered whoever is free, and customer… What’s new in 3.3 →
For Slotly, 3.2 meant a deposit that holds the slot, a no-show rule with the fee asked for by email, text reminders on your own SMS account and a waitlist that offers…
The 3.1 wave gave the catalog a way to reach the other side of the transaction: counterparty email through your own SMTP server, calendar feeds your own calendar…
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…
Slotly ships the whole Own It 2.0 owner layer.
What’s in the zip
The tree as the zip ships it — the working leftovers the packager deletes are not listed
- .htaccess
- API.md
- Dockerfile
- QUICKSTART.txt
- assets/
- bin/
- config.sample.php
- controllers/
- cron/
- deploy/
- import-maps/
- index.php
- install/
- manifest.json
- offline.html
- router.php
- seed.php
- src/
- sw.js
- tests/
- views/
src/Pay.php: a real module, the first 24 of 416 lines
Chosen as the largest module in src/ that is not one of the shared cores — this product's own logic, not a file every product carries.
<?php /** * Pay.php — card deposits and prepayment at booking, through the owner's OWN Stripe account. * * What Slotly does and does not do here: * * · Off by default. The owner switches it on in Settings with their own Stripe secret key, the * signing secret of a webhook endpoint pointed at this install, and a currency. Test-mode keys * (sk_test_…) work the same way. Each service then says "No online payment", "Deposit by card" * (the service's own deposit, a fixed amount or a percentage) or "Full prepayment by card". * · A booking for such a service is written as PENDING with a hold (hold_until): the slot is * reserved and nobody else can take it. The customer is sent to a Stripe Checkout page made with * the owner's key for exactly what is due. The page's expires_at is set explicitly (30 to 60 * minutes, Settings; plus one minute, because Stripe refuses a page that would close sooner * than 30 minutes after it makes it) and the hold ends at that same moment. The card is typed * into Stripe's page, never Slotly's; the money goes from Stripe to the owner's bank. No cut. * · Only a SIGNED webhook marks anything paid. The browser coming back from Stripe proves * nothing and changes nothing; the booking page just says it is waiting for Stripe. The event * id is claimed in pay_events (UNIQUE) before anything is written, and each Checkout session is * recorded at most once (card_payments.session_id UNIQUE), so Stripe's retries, or both of a * session's events, pay a booking once. The payment goes into the same payments table as any * other, and Hold::onPayment() confirms the booking the way a recorded deposit always has. * · An unpaid card hold is released when Stripe says the page expired (checkout.session.expired) * and, in case that event never comes, by Hold::releaseExpired() five minutes after hold_until
Runs on: 2-minute web installer, plain PHP 8.1+ with MySQL (or SQLite for a trial), no Composer or build step — Docker image included. Tested on PHP 8.3. Or run it in Docker: the Dockerfile is in the zip.
Technical owners can install it with one line and their license key: curl -fsSL https://ownware.io/install.sh | sh -s -- slotly <your license key>
Nothing is obfuscated or encoded; what you read is what runs. Manual · API · the test run
Which license do I need?
It comes down to how many installations you need. Running your own business on one site is the Single license. A second domain of your own, or sites you build or run for other people, is the Extended license.
- Install it on one domain or subdomain you own or operate
- Change the source however you like for that installation
- Run your own business on it commercially, client work included
- Re-download the current build any time from your buyer portal
- A second site, or an installation you hand to a client as theirs, needs the Extended license
- No reselling, redistributing or sublicensing the source
- Not for offering it to other people as a hosted service
- Everything the Single license grants
- Install it on as many domains as you own or operate — no cap on the number
- Up to ten client installations, one per client project, handed over or hosted for each client; for more, buy another Extended license
- White-label: remove or replace the product name and logo in the screens of client installations
- Still no reselling or redistributing the source itself
- Running it as a multi-tenant service others sign up for needs a SaaS agreement
Every download carries the full terms as LICENSE.txt. The complete wording is on the terms page.
After you buy
The app’s Updates page installs a new release with your license key, with the release’s signature checked and a backup taken first. Your download link always serves the current build. Download again any time from your order page or the buyer portal; there is no renewal fee.
Email support for installation and for defects in the code as delivered: a person reads and answers every message. It does not cover custom development or server administration. What support covers
Refunds are handled by Lemon Squeezy as merchant of record, case by case. EU consumers keep the statutory 14-day right until delivery starts. Refund terms
It keeps running: your server, the full PHP source, no license check that can fail. If no stable release is published for 365 days, the domain limit lifts; after three such years your copy becomes MIT-licensed. The terms have the exact wording: continuity.
Questions
Does it take payment online?
What do automatic reminders need?
Can I run group classes?
MySQL or SQLite?
What do I need to run it?
Can my calendar see Slotly bookings?
Is Slotly a subscription?
Booking services charge per seat or take a fee per booking. What changes?
What exactly do I get for the money?
Can I get the bookings out?
Covered in these guides
- What's new in Own It 4.1
- What's new in Own It 4.0
- What's new in Own It 3.3
- What's new in Own It 3.2
- Leaving HoneyBook? What changes when you own invoicing
- Leaving Vagaro? What owners report about the fees
Also covered in: Leaving Mindbody? What owners report, and what changes · Self-hosted CRM: what it costs to run · EU-hosted scheduling: the questions to ask · MIT license and perpetual license: the difference · PWA-installable booking on your own server · Self-hosted software 2026: what the report measures, and 30 more in the guides.
More about Slotly
Self-hosted appointment booking that refuses a second booking for a slot already taken, even when two people try at the same moment.
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 places where a simple booking script goes wrong. Hosted booking services charge monthly for paid plans and keep your client list on their servers.
- 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
Every feature
- Deposit payment link on the booking page. Paste your own payment page once and every booking that carries a due deposit shows the customer a pay link right where the amount is quoted. HTTPS-only, no card ever touches your server.
- Calendar feeds your calendar subscribes to. Token-guarded read-only .ics feeds — team-wide or per staff member — that Google Calendar, Outlook or Apple Calendar poll themselves. Revoke a token and that feed goes dark.
- Conflict-free booking engine. Double-booking is prevented at the database level, even when two customers hit the same slot at the same instant.
- Time zones and clock changes handled. Customers see their own timezone while you work in yours, and times that do not exist during a clock change are not 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 several people can book the same slot, and the slot closes when it is full.
- Deposits, coupons & reminders. Per-service deposits, coupon codes, tax, and automatic email reminders via one cron line.
- Admin calendar & reports. Color-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 not stored offline on the device; what you see is read live.
- Customers manage their own booking. A private link in the confirmation lets them cancel or reschedule up to a cutoff you set.
- Deposit to confirm. Mark a service and an online booking holds its slot until you record the deposit from your own Stripe or PayPal link. Unpaid holds are released after the hours you set, and the time goes back on sale.
- No-show rule. After the number of no-shows you choose, that customer is asked for the deposit first. Everyone else books as before.
- A no-show fee, asked for by email. Set the fee once; a no-show's page emails that customer the amount (less any deposit), the policy they accepted and your own payment link. Slotly never charges a card.
- Cancellation policy, accepted and kept. Customers tick to accept your policy, and each booking keeps the exact text and when.
- Text reminders on your own SMS account. Connect Twilio, Vonage, ClickSend or any gateway with an HTTPS API. Customers who ask get a text 24 hours and 2 hours before. No credits to buy: your carrier bills you at its own rate.
- Waitlist. On a full day customers join the waitlist. A cancellation offers the place to the first person waiting, by email and text, with a link to book it.
- Same time every week. Book a regular once and repeat every 1–4 weeks, with or without an end date; clashes are skipped, never double-booked.
- Your own calendar blocks your booking page. Paste the private .ics address of your Google, Outlook or Apple calendar; your appointments there become busy time. No account connection.
- Booking questions and a video room. Questions per service, each optional or required, and a video room link for online sessions.
- A limit on appointments at the same time. Two chairs, one treatment room: set the most appointments that can run at once across the whole business, and a time that is already that full is not offered, whoever is free. A group class counts once.
- Customer categories. Give a customer a category, filter the customer list by it, and see it beside their name on every appointment.
- Updates from inside the app. The Updates page installs a new release with your license key: Ownware's signature is checked, a backup is taken first, and the app puts the previous version back by itself if the update is interrupted or the database step or start-up check of the new version fails. It never checks by itself.
- Backups by themselves. Automatic backups, an optional copy to S3-compatible storage you own, and a weekly check that the latest backup reads back. The Health page names anything that needs attention.
- Switch from Calendly. Upload Calendly's events export and the people who booked come across as customers. A switch report checks every row with Slotly's own rules first, and importing the same file again adds nothing.
- Deposits and prepayment by card. Switch on card payments with your own Stripe account and a service can take its deposit, or the full price, by card while the customer books. The time is held while they pay on Stripe's page, and the booking is confirmed when Stripe confirms the payment. Slotly never sees the card and takes no cut.
- Own It 4.0.1 — fixes and an up-to-date manual. For Slotly, 4.0.1 fixes an installer that had lost its styling, a rollback that a page opened during an update could stop, scheduled tasks that a browser could start and a command-line update that ended in an error after putting the previous version back. Its manual, FAQ and QUICKSTART now cover everything 4.0 added, including two Nginx rules that keep the data folder private. Your license covers it: press Check for updates on the Updates page, or download it from your order page.
- Own It 4.0.2 — the installer opens on every host. For Slotly, 4.0.2 fixes a fresh install on an Apache host: the one-page setup at /install/ looped back to itself and never opened, and now it opens. Your license covers it: press Check for updates on the Updates page, or download it from your order page.
Release notes in full
- Own It 4.1: deposits by card at booking. For Slotly, 4.1 adds card deposits and prepayment at booking, through your own Stripe account. An Extended license bought from October 4, 2026 covers up to ten client installations, one per client project: hand each one over to the client or host it for them, with the client's logo and colors from the app's branding settings. The API reference now shows how to connect Slotly to Zapier, Make or n8n, using its own webhooks and API key. Your license covers the update: press Check for updates on the Updates page, or download it from your order page.
- Own It 4.0: it updates and backs itself up. For Slotly, 4.0 means updates from inside the app: the Updates page checks for a new release with your license key, verifies Ownware's signature, takes a backup and puts the previous version back by itself if the update is interrupted or the database step or start-up check of the new version fails. A new install can start with a sample business and remove it in one click; backups run by themselves, with an optional offsite copy and a weekly check that the latest one reads back; and the Health page says whether the install is looking after itself. It also switches you over from Calendly: the people who booked come across as customers.
- Own It 3.3: capacity for the whole business. For Slotly, 3.3 meant a limit on how many appointments run at once across the business, so a time that is already full is not offered whoever is free, and customer categories you can filter by and see on every appointment. Both are cards above.
- Own It 3.2: the slot is held, and a gap gets filled. For Slotly, 3.2 meant a deposit that holds the slot, a no-show rule with the fee asked for by email, text reminders on your own SMS account and a waitlist that offers a canceled place, plus repeat bookings, your own calendar blocking busy time, and booking questions with a video room. Staff keys now reach only their own appointments. Each change is a card above.
- Own It 3.1: it writes to the people you serve. The 3.1 wave gave the catalog a way to reach the other side of the transaction: counterparty email through your own SMTP server, calendar feeds your own calendar subscribes to, attachments filed where the paperwork belongs, and export presets other people's software imports. Each outbound feature ships switched off and runs on your own credentials; a failed send is recorded, and the action that triggered it stands. What this app gained is listed at the top of this section.
- 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.
- 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.
Browse self-hosted: Front-office software · Gym & studio software · Salon & clinic software · School & training-provider software · Event & venue software · Coworking & workspace software · Hotel & hospitality software · Photography & creative-studio software · Driving-school software