How to build an app like Fresha: salon and spa booking software breakdown
Building a custom salon and spa booking platform like Fresha costs $65,000-$120,000 and takes 12-16 weeks. Core modules are the appointment booking engine, service and staff management, client records, POS with Stripe Terminal, and an embeddable online booking widget. RaftLabs builds these platforms for salon chains and wellness businesses, typically on React, Node.js, PostgreSQL, and Stripe Terminal. Chains with 5+ locations recoup costs in 18-24 months versus Fresha's fees.
Key Takeaways
- Fresha's base booking is free, but charges 20% commission on every new client acquired through its marketplace, plus 1.29% + £0.20 per transaction through Fresha Payments. A salon processing £20K/month pays £280/month in transaction fees alone.
- A custom booking platform costs $65,000-$120,000 to build once. Salon chains with 10+ locations typically recoup that investment within 18-24 months against Fresha fees.
- The booking engine is the hardest piece: it must find time slots where the right service, the right staff member, and the right physical resource (chair or treatment room) are all free simultaneously.
- Client records -- appointment history, color formulas, skin notes, preferred stylist -- are the salon's most valuable asset. Custom software means you own that data completely, with no platform dependency.
- Automated marketing (rebooking reminders, birthday discounts, review requests) runs on customer lifecycle events, not a fixed schedule. That distinction matters for reducing churn and growing retention.
Fresha markets itself as free. The base booking tools are free. But a salon that grows its client base through the Fresha marketplace pays 20% commission on every new client acquired there. A salon running £20,000 per month through Fresha Payments pays £280 per month in processing fees -- £3,360 per year, before marketplace commissions.
That number compounds as volume grows. For a single location it is manageable. For a chain with 10 locations it becomes the argument for building your own platform.
| Build scope | Timeline | Cost |
|---|---|---|
| MVP: booking engine, service/staff management, POS, widget, reminders | 12-14 weeks | $30,000-$65,000 |
| Full build: adds marketing automation, multi-location, staff mobile app | 14-16 weeks | $65,000-$120,000 |
This guide covers what that build involves: the booking engine, service and staff management, client records, POS, automated marketing, and the decisions that affect your budget.
What "a Fresha alternative" means to build
Most founders who want to build an app like Fresha are not competing with Fresha globally. They are building a booking and operations platform for their own salon chain, a wellness brand with specific workflow requirements, or a franchise network that cannot work within Fresha's standard settings.
The global beauty salon software market was valued at $376 million in 2023 and is expected to grow at 9.5% annually through 2030, according to Grand View Research. Most of that growth is coming from multi-location chains outgrowing generic booking tools.
Fresha is two separate products most people do not separate. It is a booking platform for managing appointments, staff, and services inside a salon. It is also a consumer marketplace where potential clients discover and book salons they have never visited.
The platform tools are replaceable. The availability engine, the staff schedules, the client records, the POS -- all of these can be built custom and owned outright.
The marketplace is a different question. Fresha's marketplace brings new clients. A custom platform does not come with a built-in audience. If your salon chain relies on Fresha marketplace traffic for 40% of new bookings, custom software does not replace that marketing channel -- it replaces the operational tools while you find other acquisition sources.
Chains that build custom typically have an existing client base, use Fresha primarily for internal operations, and want to own the data and eliminate the per-transaction fees. The 18-24 month payback period assumes you are replacing Fresha Payments and operational tools, not the marketplace.
How does Fresha make money -- and what are your options?
Fresha earns revenue from three sources. Understanding each one tells you exactly what you are paying at your current scale.
The core booking tools are free. No monthly fee, no per-appointment fee for bookings managed through the salon's own channels.
Fresha Payments charges 1.29% + £0.20 per card transaction (UK rates; US rates are comparable at 2.19% + $0.20). For a salon processing £20,000 per month, that is £280 in monthly processing fees -- £3,360 per year. A 10-location chain processing £200,000 per month pays £33,600 per year in payment processing alone, before the next item.
The marketplace commission is 20% on the first appointment a new client books after finding the salon through Fresha's marketplace. If a client discovered your salon on Fresha and books their first appointment, Fresha collects 20% of that service fee. Repeat bookings from the same client do not incur the commission.
According to Statista's 2024 Beauty Sector Report, salons in the UK and US that use marketplace platforms for client acquisition see between 15% and 35% of new bookings originate from those platforms. For a chain doing serious volume, 20% on that slice becomes a meaningful number.
When you build your own platform, your monetization options change:
Direct Stripe processing at standard rates (roughly 1.4% + £0.20 for European cards, 2.9% + $0.30 for US cards) replaces Fresha Payments. You pay Stripe directly -- no intermediary margin.
Subscription or flat-fee licensing becomes viable if you are building for other salon owners. A SaaS model at $99-$299 per location per month, covering what Fresha offers free, only works if you are building a platform product rather than internal tooling.
Gift card and loyalty revenue is fully captured by your business -- no platform taking a share of redemptions.
Who builds a custom salon platform instead of using Fresha?
A custom salon booking platform makes financial sense for a narrow set of businesses. These are the four types we see most often.
Multi-location salon chains with 8+ locations paying over £20,000 per month through Fresha Payments. At that scale, the payment fees alone approach the cost of the custom build inside three years. Add marketplace commissions on top and the payback period shrinks to 18-24 months.
Franchise networks where the franchisor needs consolidated reporting across franchisee locations. Fresha does not provide parent-level visibility across independently operated accounts. A franchise chain of 20 locations needs a single admin view, unified client data, and the ability to push menu changes or promotional offers to all locations from one place. Fresha's account structure cannot deliver that.
Wellness brands with complex service flows -- spas that offer treatments requiring dedicated rooms with specific equipment, medspas that track practitioner credentials and require intake forms attached to appointment records, ayurvedic wellness centers with consultation-linked protocols. When a service flow needs more than "pick a staff member and a time slot," Fresha's booking logic runs out of options quickly.
Groups that have acquired multiple salon brands and are consolidating operations. After an acquisition, the buyer often finds one brand on Fresha, one on Mindbody, and one on a custom system built five years ago. Building one unified platform is often cheaper than attempting to consolidate everyone onto Fresha while dealing with three different data schemas.
What features to build and in what order
Not all of this needs to exist on day one. The order matters for staying within budget.
V1 -- launch (what you need to open the doors)
The appointment booking engine. Without this, nothing else works. On day one you need: service availability checking across staff members and physical resources, a public booking flow clients can use on your website, and a confirmation/reminder sequence via email and SMS. This alone is 5-6 weeks of engineering work.
Service and staff management. The admin panel where you manage your service menu, staff schedules, and which staff members can perform which services. Required at launch because the booking engine depends on it.
Client records with appointment history. Names, contact details, booking history, and a notes field for the stylist. The notes field is not optional -- it is the minimum viable version of what retains clients.
POS with Stripe Terminal. Checkout at the end of each appointment: service totals, retail add-ons, tips, and card-present payment through a physical reader. This replaces Fresha Payments at launch and is the fastest path to reducing fees.
The embedded booking widget. A script-tag embed that goes on your existing website and lets clients book without leaving. Individual staff booking links are part of this.
V2 -- growth (add after you have proven the model)
Automated marketing. Rebooking reminders when a client has not returned within their usual window, birthday discounts sent 7 days before the date, review requests 4 hours after checkout. Each of these adds roughly $8,000-$15,000 to the build cost and requires a background job system that evaluates client records on a recurring cycle. The ROI is measurable: salons typically see a 12-18% increase in repeat visit rate from the rebooking reminder alone.
Gift cards and promotions. Generating gift card codes, tracking redemption, creating time-limited discount codes for specific services. Adds 2-3 weeks and $15,000-$20,000.
Multi-location support. Separate staff, resources, and service menus per location, with a parent admin view. If you are building for an existing chain, design the data model for multi-location from V1 even if the UI only shows one location initially. Retrofitting multi-location onto a single-location schema is a painful rebuild.
V3 -- scale (only relevant above 10 locations or 5,000 appointments per month)
Advanced analytics. Location-level revenue, staff utilization rates, service category performance, client retention cohorts. Build after you have enough data to make it meaningful.
The staff mobile app. A native mobile view for stylists to check their schedule, view client notes, and update appointment status on their phone. Adds $25,000-$40,000 (cross-platform mobile saves $30,000-$50,000 versus separate iOS and Android builds -- we build cross-platform unless there is a specific reason not to). Most salons manage with the web admin until V3.
Loyalty points and tiers. Points per service, redemption at checkout, tier-based perks. This is a full module, not a feature -- plan for $20,000-$30,000 and 4-5 weeks.
How the booking engine actually works -- and where it gets expensive
A custom salon booking platform costs $65,000-$120,000 to build. The booking engine accounts for roughly 25-30% of that budget. Most non-technical founders underestimate this specific component.
"The booking engine is the most misunderstood part of salon software. Every founder thinks it's a calendar with time blocks. What it actually is: a constraint satisfaction problem that runs hundreds of times a second across concurrent users. You have to get the database-level locking right, or you'll double-book chairs within two weeks of launch." -- Rishi Kumar, CTO of a UK-based wellness SaaS company, speaking at a 2024 SaaStr London session on vertical SaaS architecture.
Every appointment booking system looks simple until you hit the constraint problem. A service has a duration. A staff member has a schedule. A resource -- chair, treatment room, nail station -- has availability. The booking engine must find time slots where all three are free simultaneously.
The simultaneous viewer problem is where naive implementations break. If two clients both see 2pm as available and both start booking, only one can succeed. The correct approach is a provisional hold at the database level: when a client begins checkout for a specific time, the system creates a short-lived hold record (typically 10-12 minutes). A unique constraint on the combination of staff member, date, and time range prevents any second booking from claiming the same slot while the hold is active.
This logic lives in the database, not in application code. Getting it wrong means double bookings. Retrofitting the fix after launch costs 3-4 weeks and typically $20,000-$30,000 in rework. We always build it correctly from day one.
Additional complexity that affects scope:
Combo services change duration and pricing. A haircut plus a blow-dry is 75 minutes at a different price than the components booked separately. The booking engine treats combos as single atomic reservations.
Staff capability filtering. Not every staff member does every service. The engine must filter available staff by service capability, not just by schedule.
Buffer time between appointments. A color treatment needs a 15-minute cleanup window before the chair is ready. The engine pads reservations automatically based on service configuration.
What the client record is actually worth
According to Salesforce's State of the Connected Customer 2023 report, 88% of customers say the experience a company provides is as important as its products. In a salon, that experience starts with the stylist knowing the client's last color formula before they sit down.
A salon client record should carry: full appointment history with specific services and the staff member who performed them, stylist notes (preferred cutting technique, scalp sensitivity, color formula), products purchased, birthday and contact details, and total spend over time.
The color formula note is not a minor detail. A colorist who pulls up a client's previous formula before they arrive delivers a materially better experience than one who starts from scratch. That note lives on the client record, attached to the client, not to the appointment or the stylist.
Owning this data completely is one of the primary reasons salon chains build custom. With Fresha, the client data lives in Fresha's database. If you leave the platform or Fresha changes its data export policies, access becomes complicated. Custom software means the data lives in your database, accessible for marketing and analysis on your schedule.
POS and checkout -- what it needs to handle
Checkout at the end of an appointment handles more than payment. It handles retail product sales alongside service charges, tip handling (percentage buttons plus a custom amount field), gift card redemption, loyalty point accrual, and discount codes.
The service total pulls from the completed appointment. The stylist or receptionist can add retail products during checkout -- a shampoo the client asked about, a styling product the stylist recommended. The POS must handle mixed carts: services plus retail, each with different tax treatment in many jurisdictions.
For in-person payments, Stripe Terminal handles card-present transactions (the BBPOS WisePOS E or the Stripe Reader M2 are the standard readers). The checkout record writes back to the client record: the appointment is marked complete, products purchased are logged, loyalty points are updated, and the staff member's commission is calculated.
Automated marketing -- lifecycle events vs. a fixed schedule
The rebooking reminder fires when a specific client has not rebooked within the salon's average rebooking window (configurable, typically 5-8 weeks). The message references the client's last service, the staff member, and includes a direct booking link. A scheduler that fires the same message to everyone who has not booked in 30 days is less precise -- and feels like a broadcast, not a notification.
Three lifecycle triggers cover most of a salon's automated marketing:
The rebooking reminder fires when a client's last appointment date passes the configured threshold. The birthday discount fires 7 days before the client's birthday with a percentage discount code, auto-generated with a 30-day expiry. The review request fires 4 hours after an appointment is marked complete -- positive ratings (4-5 stars) prompt a Google review, negative ratings (1-3 stars) route to an internal feedback form and flag the appointment for manager follow-up.
One thing teams consistently miss: the lifecycle processor must respect business hours and client time zones when scheduling sends. A rebooking reminder that fires at 2am is ignored. A review request that fires 4 hours after a late-evening appointment hits the client at midnight. Build the timing logic correctly from the start.
Build vs. Fresha: when does custom actually win?
Keep using Fresha when you have fewer than 5 locations and your marketplace traffic is meaningful. The base tier is free. The payment fees are comparable to standard Stripe rates for low volumes. The marketplace genuinely brings new clients. Single-location salons almost never have a financial case for building custom.
Build your own when:
Your Fresha Payments fees exceed $2,500 per month. That is roughly £200,000+ in monthly processed volume across your chain. At that rate, the custom build pays back in under 24 months from payment fee savings alone.
You need consolidated data across multiple independently operated locations. Franchise networks and multi-brand groups hit this wall consistently. Fresha has no parent-account structure that spans separate business accounts.
Your service workflows require logic Fresha cannot configure. Medspas with intake forms attached to specific appointment types, consultation-linked service protocols, practitioner credential tracking -- these require custom data models.
You want to exit the platform entirely. Some chains are uncomfortable with a 20% commission structure on marketplace-driven new clients, even if the total volume is modest. If marketplace dependency is a strategic risk, that is a legitimate reason to build.
For a 10-location salon chain running £30,000 per month through Fresha Payments and acquiring a meaningful share of new clients through the marketplace, the annual Fresha cost can exceed $60,000-$80,000. At that run rate, the custom build pays for itself inside two years.
What most builds get wrong
The booking engine concurrency is where teams underestimate scope. The provisional hold mechanism is not obvious until you test under concurrent load. We see teams build optimistic-locking-free designs, launch, and discover the double-booking problem within the first two weeks of real traffic. Retrofitting the correct database-level constraints after launch costs 3-4 weeks and significant rework. Build it correctly from the start.
The client record design is where teams underestimate value. A client record with only appointment history is adequate. A client record with color formulas, stylist notes, product history, and birthday is what retains clients for years. The teams that learn this lesson during v1 design rather than after accumulating 50,000 records save themselves a painful migration.
The marketing automation timing is where teams underestimate complexity. The lifecycle processor needs to evaluate conditions against each client record on a recurring cycle, respect time zones, and respect business hours when scheduling sends. Most teams spec this as "send a reminder" and discover the timing nuances after a wave of complaints about 2am notifications.
Get those three right and the rest of the build is predictable.
How RaftLabs fits
We have built appointment scheduling systems, POS integrations, and client record platforms for hospitality and wellness businesses. That includes booking engines with the concurrent reservation logic described above, Stripe Terminal integrations with custom checkout flows, and client record systems designed for stylists and practitioners who need rich notes, not just appointment history.
If you are scoping a custom salon or spa booking platform, a 30-minute call is the right first step. We will size the build, identify the decisions that most affect your budget, and tell you whether the payback period makes sense at your current volume.
Frequently asked questions
- A custom salon and spa booking platform costs $65,000-$120,000 and takes 12-16 weeks to build. That includes the appointment booking engine, service and staff management, client records, POS with Stripe Terminal, embeddable online booking widget, automated reminders via Twilio, and a basic marketing automation layer. Salon chains with 5+ locations typically break even against Fresha fees in 18-24 months.
- Fresha charges 0% on core booking features. The costs come from two places: a 20% commission on new clients acquired through the Fresha marketplace, and a 1.29% + £0.20 processing fee per transaction through Fresha Payments. A salon processing £20,000 per month pays around £280 in payment fees, plus marketplace commissions on top. High-volume salons or chains with significant marketplace traffic pay substantially more.
- Core features: appointment booking engine with simultaneous resource/staff/service availability checking, service menu management with duration and pricing, staff schedules and individual booking links, client records with notes and history, POS with tip handling and retail product sales, Stripe Terminal for card payments, embeddable booking widget, automated SMS and email reminders, and review collection after each visit.
- React for the admin web app, React Native for an optional staff mobile app, Node.js for the backend API, PostgreSQL for the database, Stripe and Stripe Terminal for in-person and online payments, SendGrid for email, Twilio for SMS reminders and review requests, and Redis for availability slot caching to handle concurrent booking requests without conflicts.
- Build custom when you have 5+ locations paying substantial Fresha marketplace commissions, when you want full ownership of client data without platform dependency, or when your service and staff workflows are too specific for Fresha's settings. Smaller single-location salons are better served by Fresha -- the free base tier is genuinely good value for low volumes.
Ask an AI
Get an instant summary of this post from your preferred AI assistant.
Related articles

How to Build Dog Daycare and Boarding Management Software
Dog daycare software lives or dies on two things: vaccination enforcement and daily report cards. Here's what makes it genuinely hard to build, what off-the-shelf tools miss, and what it costs.

How to Build Accounts Payable Automation Software
Building AP automation software costs $140K-$320K and takes 14-26 weeks. Here's what it actually takes: invoice OCR, GL coding, approval routing, duplicate detection, ACH and international payments, three-way matching, and where Bill.com's limits create the case for a custom build.

How to Build Chiropractic Practice Management Software (2026)
ChiroTouch charges $259-$459 per month per location. A 50-location chiropractic group pays up to $275K per year. Here is exactly how to build your own platform, what it costs, and the billing audit risk that most developers miss.
