Easy!Appointments: Self-Hosted Appointment Scheduler
Easy!Appointments is a self-hosted PHP scheduling system you run on your own server with MySQL, and its core booking workflow works fully without a paid add-on. Reach for it if you want appointment data on infrastructure you control and don't mind maintaining a PHP stack; skip it if server upkeep sounds like a chore, since the maker also sells a hosted premium option for that.
What is Easy!Appointments?
Easy!Appointments is a self-hosted, open-source appointment scheduling system written in PHP with a MySQL database backend. A business runs its own booking page where customers pick a service, a provider, and an open time slot, while staff manage working hours, booking rules, and calendar sync from an admin panel. The GPL-3.0 license means the code is free to install, modify, and run for personal or business use.
Why Choose Self-Hosted Scheduling?
- โFull data control: appointment, customer, and provider records live in your own MySQL database instead of a third-party SaaS.
- โNo forced subscription for core booking โ the self-hosted edition is free to run for personal or commercial use, per the README.
- โGoogle Calendar sync ships in the base project rather than sitting behind an integration marketplace.
- โGPL-3.0 licensing means you can read, modify, and redeploy the PHP source instead of trusting a closed system.
- โA Docker Compose setup is provided for local development, so you don't have to hand-configure PHP and MySQL just to try it.
Understanding Open Source Limitations
- โณThe free self-hosted edition doesn't include everything: the README points to a separate paid premium tier at easyappointments.org/premium for advanced capabilities and professional services, without listing which features are premium-only.
- โณProduction install is manual โ no one-command deploy script is documented; you upload files, edit a config, and step through a setup wizard yourself.
- โณPHP 8.2+ and a MySQL database are hard requirements, so it isn't a fit if your infrastructure doesn't support PHP.
- โณThe README doesn't state a version number, release cadence, or changelog, so there's no way to gauge patch frequency from the facts here.
- โณSupport runs through a GitHub issue tracker, a Google Groups list, and Discord rather than a formal SLA โ fine for a side project, less so if you need guaranteed response times.
Core Scheduling Features
- โAppointment and customer management tracked together in one system, per the README's feature list.
- โService and provider organization โ configure which providers offer which services.
- โWorking plans and booking rules control staff availability and which slots can be booked.
- โGoogle Calendar synchronization keeps provider calendars aligned with bookings made through the app.
- โA built-in email notification system alerts customers and providers about appointment activity.
- โMulti-language interface for the admin and customer-facing pages.
- โRuns entirely self-hosted on your own Apache or Nginx server rather than a vendor's cloud.
- โBuilt on PHP with the CodeIgniter framework and tagged rest-api on GitHub, though the README doesn't spell out the API endpoints in detail.
Setting Up Easy!Appointments
For local development, the README has you clone the repo, run `docker compose up`, then open a second terminal into the app container to run `npm install && composer install`, `npm start` for a dev asset watcher, or `npm run build` for production assets โ this works on Linux, macOS, and Windows with WSL recommended. For a production server, you'll need Apache or Nginx as the web server, PHP 8.2 or newer, and a MySQL database: set up the database, move the easyappointments folder onto your host, grant write access to the storage directory, then rename the config-sample.php file to config.php, fill in your configuration values, and finish through the setup wizard in your browser.
Other Appointment Schedulers
Common Questions
Easy!Appointments is free to use personally or for business purposes under the GPL-3.0 license in its self-hosted form; the vendor separately sells a premium tier with advanced capabilities and professional services.
Running Easy!Appointments in production requires Apache or Nginx as the web server, PHP 8.2 or newer, and a MySQL database, per the README's installation section; local development instead uses a Docker Compose environment.
Google Calendar synchronization is listed as a built-in feature of Easy!Appointments in the README, keeping provider calendars aligned with bookings made through the app.
Production deployment of Easy!Appointments is manual, per the README: create a MySQL database, upload the application folder to your server, make the storage directory writable, rename the sample config file to config.php, fill in your settings, then finish through the browser-based setup wizard.
Easy!Appointments lists a GitHub issue tracker, a Google Groups support forum, and a Discord server as its community channels, alongside what the README calls an active open-source community around the project.
The problem it solves
A business that wants online appointment booking usually has to hand customer contact details and calendar data to a hosted SaaS scheduler, or build booking logic from scratch. Easy!Appointments' README frames its reason for existing around that gap: an open-source system a business runs on its own server and database, so booking records stay on infrastructure it controls, while still getting the working-hours rules, provider assignment, and Google Calendar sync a scheduler needs.
Best use cases
- โขA small clinic, salon, or consultancy that wants an online booking page tied to specific providers and services without sending client data to a third-party SaaS.
- โขA developer comfortable running a PHP and MySQL stack who wants to customize booking rules or the admin UI instead of working within a SaaS scheduler's fixed feature set.
- โขA business already syncing staff schedules to Google Calendar that wants new bookings to show up there automatically.
- โขA team that wants to try the app locally first โ the Docker Compose dev setup lets you spin it up without touching a production server.
Who should try it โ and who should skip
Try Easy!Appointments if you run a small business or team that needs online appointment booking and would rather host the database yourself than trust a SaaS vendor with client contact details, and if someone on your team can maintain a PHP 8.2+/MySQL server. Skip it if you don't want server upkeep at all โ the same company's premium tier, or a hosted product like Calendly, removes that burden but moves your data off your own infrastructure.
Related repositories
Want a second opinion on easyappointments?
Ask an AI that can read this page โ one click and you get its take on easyappointments.
