A spa and salon site with a real booking system, on your own server.

Salon SPA Script is a complete website and admin panel for massage studios, spas, beauty salons and wellness retreats. Services with prices and durations, therapists with photo galleries, a booking flow, retreats, a news section and a product page — plus an admin panel to run all of it.

Plain PHP 8. No framework, no build step, no npm, no license key. Upload the folder, open the installer, and it runs.

Install it in one pass, with or without MySQL

The browser installer checks the server, sets up the database, loads the demo content and creates your administrator account. No SSH, no editing PHP files.

You pick at install time; the rest of the script does not care which you chose. Both schemas ship separately and are maintained in step, so you get the same 19 tables either way.

Once installed, the installer locks itself. Re-running it against a live site would destroy data, so it refuses until you deliberately remove the config file.

Public site

Admin panel

Take payment online

Stripe and PayPal are both built in, in test mode or live, and switched on per gateway. After a guest books, they are offered the gateways you enabled; every attempt is recorded whether or not they finish.

Whether the money arrived is decided on your server, never in the guest's browser. Stripe is believed only through a webhook whose signature is verified against your signing secret, with a five-minute freshness window; PayPal only after your server has called capture and been told the order is complete. A guest who reloads the "thank you" page cannot mark anything as paid.

Chat widget, with an optional AI assistant

A chat bubble with your greeting, phone, email and a booking link — no third-party account needed. Prefer Tawk.to, Crisp or Intercom? Paste their embed code instead and the built-in widget stands aside.

Switch on the assistant and the widget answers questions too. Choose OpenAI, Anthropic or xAI, enter your own API key, and requests go from your server straight to that provider on your account. The assistant is given your salon's real services, durations and prices so it does not invent treatments, and the endpoint is rate limited per address so nobody can run up your bill. Off until you turn it on.

Every key lives in the admin panel

Nothing secret sits in a PHP file. API keys, SEO fields, notification targets and feature switches are all stored in the database and edited in Settings, across tabbed sections: Site, SEO, Payments, Chat, AI assistant, Notifications and Security.

Saved secrets are never printed back into the page. The field shows that a key is stored and stays blank — so a screenshot, a shared screen or a page source never reveals it.

Security, on by default

Four languages

English, Lithuanian, Russian and Ukrainian on the public site, each with its own URL prefix and hreflang. Page content is translated per language in the database; interface strings are plain PHP arrays in lang/ — copy one file to add your own. A string you have not translated yet falls back to your main language rather than showing a raw key. The admin panel itself is in Russian.

SEO

Tech

What you get

Requirements

PHP 8.0 or newer with PDO and mbstring. SQLite needs nothing else. For MySQL you need pdo_mysql and a database. Apache with mod_rewrite, or the nginx equivalent. Writable config/, database/ and uploads/. Online payment and the AI assistant need outbound HTTPS from your server.

Third-party services

The script contacts nothing on its own. Every integration — Stripe, PayPal, the AI assistant, reCAPTCHA, Telegram notifications, a pasted chat widget — stays off until you enter your own credentials and switch it on, and then requests go straight from your server to that provider using your account. You pay those providers directly; nothing is routed through us.

Trademarks

Any product names or brands mentioned are property of their respective owners and are used for identification only. This script is independent and not affiliated with, sponsored by, or endorsed by any of them.