Booking tool: buy or build?¶
Researched 2026-10-16. Prices change often: check each vendor's site before signing up.
Situation¶
- At launch the salon has one master, who is also a partner.
- The salon offers beauty / wellness only, with no medical massage. Health-insurance tools (ASCA/EMR receipts, OneDoc) are not needed.
- The owner is a backend developer and could build a custom booking system.
Decision 2026-10-24: Cal.com (see Decisions). Dikidi was tested in the prototype and dropped. The research below is kept for reference.
Recommendation¶
Use a ready-made booking tool at launch. Build only the salon website, and embed the tool's "Book now" widget in it. Review the choice after 6–12 months, or once there are 3 or more masters.
After the language check below, only Fresha and Cal.com remain: they are the only ones whose booking pages cover DE, EN, FR and IT. Fresha is the main candidate, because it also brings some new clients. Cal.com is the backup if we want more control.
Ready-made tools (one master)¶
| Tool | Approx. price | Good | Less good |
|---|---|---|---|
| Fresha (Independent plan) | ~USD 19.95/month (~CHF 16), ~CHF 190/year. A cheaper EU price list (~EUR 12.95) is also reported [verify]. Card fees, plus a 20% fee on new clients who come through the Fresha marketplace |
Polished, multilingual, Reserve with Google, marketplace brings new clients | Marketplace fee on new clients |
| Dikidi | Core features free. Paid add-ons are optional, and prices are shown only in the app [verify] |
Cheapest, simple, good mobile apps. Known among Ukrainian/Russian-speaking clients | No German, French or Italian (see language check). Little known among Swiss clients |
| Cal.com | Free for one person. Open source, so it can be self-hosted later | Developer-friendly, has an API, easy path to a custom system later | Generic scheduling tool, not salon-specific (no vouchers, stock, etc.) |
| SimplyBook.me | Free tier with limits; paid plans above that [verify] |
Many add-ons (vouchers, payments) | Interface feels dated |
| Altegio (international version of YCLIENTS) | Smallest plan is for 2 employees, at a much higher price | Very feature-rich, scales to chains | No German (see language check). Too much and too expensive for one master |
Before choosing, check each tool for: - DE / EN / FR / IT booking pages - CHF prices, and TWINT or card payments - Reserve with Google, plus the Instagram and Facebook "Book" buttons - Gift vouchers (useful for tourists in Gstaad) - A data processing agreement and data hosting compatible with the Swiss data protection law (revFADP / nDSG) - An API, needed for Phase 2 (see Phase 2: Booking everywhere)
Language check (DE / EN / FR / IT)¶
Checked 2026-10-16. The booking page must be fully available in our four website languages.
| Tool | DE | EN | FR | IT | How it was checked |
|---|---|---|---|---|---|
| Fresha | ✅ | ✅ | ✅ | ✅ | The client app lists all four (App Store, Switzerland). fresha.com has real DE/FR/IT pages |
| Cal.com | ✅ | ✅ | ✅ | ✅ | Open-source code has DE/FR/IT translations (~97% of the English text). The page follows the visitor's browser language |
| SimplyBook.me | ⚠️ | ✅ | ⚠️ | ⚠️ | One booking-page language at a time. Several languages only through an automatic Google Translate add-on (machine translation) |
| Dikidi | ❌ | ✅ | ❌ | ❌ | App only in EN, KK (Kazakh), PT, RU; website only in EN, KK, RU |
| Altegio | ❌ | ✅ | ✅ | ✅ | Official list of 23 widget languages (updated 2026-09-01) has no German |
German is the local language in Gstaad (Canton of Bern), so Dikidi and Altegio are ruled out.
Our own texts
The tools translate their own interface (buttons, calendar, emails). Texts we write ourselves (service names, descriptions, cancellation rules) are usually stored in one language only. During the trial, check:
- Can each service name and description be entered in all four languages?
- Are confirmations and reminders sent in the client's language?
If not, use short bilingual service names, e.g. "Klassische Massage / Classic massage 60 min".
Cal.com test (2026-10-16)¶
- The floating "Book" button embed works on a plain test page: a button in the corner opens the calendar in a popup.
- The popup can show or hide the service details (name, duration, description) next to the calendar.
- The button text is fixed in the embed code (default: "Book my Cal"). It does not change with the visitor's language. On our multilingual site, each language version must set its own text, e.g. "Termin buchen" / "Book now" / "Réserver" / "Prenota".
Booking tool vs. finding clients¶
A booking tool such as Cal.com only handles scheduling: the calendar, free slots, the booking form, confirmations and reminders. It does not bring clients. Everything that makes people find us stays our work, whichever tool we choose:
- SEO: our own
.chwebsite in DE/EN/FR/IT (see Website). A booking page oncal.comdoes not help our search ranking, because it is not on our domain. - Google Business Profile: add the booking link as the "Appointment URL" (see Local search presence). As far as we know, Cal.com is not a "Reserve with Google" partner
[verify], so clients click through to our link instead of booking inside Google. - Instagram / Facebook: booking link in the bio and on the "Book now" button.
- Ads (Google, Meta): point to our website, not to the booking tool (see Marketing).
- Reviews, local directories (local.ch, search.ch), hotel/concierge partnerships.
Difference with Fresha: Fresha also helps with finding clients, through its marketplace (people searching for a massage nearby) and Reserve with Google. The price is a 20% fee on new marketplace clients.
- Cal.com: free and full control, but all new clients come from our own site and marketing.
- Fresha: small subscription plus a fee on new marketplace clients, but some extra visibility from day one.
Building our own system¶
What a minimal version needs: services with durations and prices, the master's working hours, free-slot calculation, a booking form, email confirmations and reminders, cancel/reschedule links, a simple admin page, and calendar sync.
| Item | Estimate |
|---|---|
| Development | 60–120 hours |
| Hosting (small server + database) | CHF 5–15/month |
| SMS reminders (optional) | ~CHF 0.07–0.10 per SMS |
| Email delivery | Usually free at this volume |
| Online payments (TWINT/card) | Same transaction fees as with a ready-made tool |
| Ongoing support: updates, security, backups, bugs | 2–5 hours/month |
| Data protection | The salon alone is responsible for storing client data safely |
What we would not get from a self-built system on day one: - New clients from the platform: marketplace listings (Fresha, Dikidi catalog). A custom system only gets visitors through our own website and SEO. - Booking from other apps: Reserve with Google and the Instagram/Facebook "Book" buttons need partner approval or extra integration work. - A mobile app for the master with notifications for new bookings. - Extra features: gift vouchers, reviews, deposits and no-show protection.
Conclusion¶
With one master, a ready-made tool costs about CHF 0–200 per year. Building our own costs months of the owner's time, plus ongoing maintenance, and it would take many years to pay back.
Building our own makes sense only if one of these becomes true: - There are 3 or more masters or several locations, so per-person subscriptions grow. - We have needs no tool covers (for example, hotel/chalet partnerships with home visits, or unusual packages). - We decide to make a booking product for other salons. That would be a separate business.
A good middle step is Cal.com: free now, and it can later be self-hosted behind our own website.
Sources¶
- Altegio pricing
- Altegio – new subscription plans
- Fresha pricing – CostBench
- Fresha pricing – Pabau
- Fresha pricing – Toolradar
- DIKIDI – how much does it cost
- Altegio – online booking in several languages
- Fresha – launch in nine languages (2023)
- SimplyBook.me – Google Translate custom feature
- Cal.com translations (GitHub)
- App language lists: Apple App Store (Switzerland), "Fresha für Kunden" and "DIKIDI Business"