
Unified Booking, Membership and POS Platform with Loyalty Rewards for a Multi-Location Spa & Wellness Chain
Let's Connect
Overview
What we built
A spa and wellness chain with 14 locations ran every site on its own mix of phone lines, card terminals and spreadsheets. We replaced all of it with one platform for booking, membership and payment across the chain.
In plain terms: the chain had grown to 14 locations across the US Pacific Northwest, but its systems had not grown with it. Guests booked by phone, payments went through standalone card terminals, and membership records lived in spreadsheets that differed from site to site. A member of one spa was a stranger at the next: they could not book a class or redeem a session outside their home location. Front desks spent hours every day reconciling takings, and head office could not see occupancy, revenue or membership churn across the chain.
We built one platform that covers the whole guest relationship: online booking against live therapist and room availability, memberships that renew automatically through a self-service portal, and a point-of-sale that handles services and retail with a chain-wide loyalty programme earning and redeeming at any location. Within 5 months, 62% of appointments were booked online by guests themselves. The no-show rate dropped from 16% to 7%, monthly membership churn fell from 8.5% to 5.4%, and loyalty members visited 1.6x more often while driving 31% of retail sales at checkout.
The Problem
Fragmented systems across 14 locations
The chain's growth had outpaced its plumbing. Each of the 14 spas ran on whatever mix of tools it had started with: phone lines for bookings, a standalone card terminal for payments, and a local spreadsheet for membership records. Nothing connected the sites, so the chain operated less like one brand and more like fourteen small businesses that happened to share a name.
Members felt the seams most. A membership bought at one location could not be used at another: no class bookings outside the home spa, no session redemptions elsewhere, nothing that treated the chain as one brand. For a business built on routine and convenience, telling loyal members that their membership stopped at the door of their own chain's next spa was a daily contradiction.
Operations carried the rest of the weight. Front desks closed each day with hours of manual reconciliation, matching card-terminal totals against booking records and spreadsheets by hand. Head office, meanwhile, had no consolidated view of occupancy, revenue or membership churn: every question about how the chain was trading meant chasing each of the 14 sites for its own version of the numbers.
Fragmented booking
Appointments were taken by phone, site by site, with no online option and no shared calendar, so availability lived in the heads and books of each front desk.
Spreadsheet memberships
Membership records sat in per-site spreadsheets, so members could not book classes or redeem sessions outside their home location, and every plan change meant manual work.
Manual reconciliation
Standalone card terminals had no link to bookings or memberships, so front desks spent hours reconciling daily takings by hand at every location.
Head office blind
With no consolidated reporting, leadership could not see occupancy, revenue or membership churn across the chain, or compare one location's performance with another's.
What it was costing them
The fragmentation charged the chain every day. Front-desk hours went into reconciliation instead of guests, phone-only booking kept appointments dependent on staffed lines and opening hours, and no-shows went unchallenged with nothing on file to hold a booking. Members who could not use their membership across the chain had less reason to stay, and head office made decisions about occupancy, pricing and churn without a single trustworthy number.
The Solution
One booking, membership and POS platform
We built the chain one platform with three jobs: take the booking, run the membership, and handle the payment. Guests book treatments and classes online against live therapist and room availability, so an appointment made late in the evening is as reliable as one made over the front desk, and the diary stops depending on whoever answers the phone.
Membership moved out of spreadsheets and into the platform. Memberships now renew automatically, failed payments enter retry flows instead of quietly lapsing, and a self-service portal lets members manage their own plans, bookings and details. Because every location reads from the same records, a membership finally works across the whole chain: classes, session redemptions and recognition at any of the 14 sites.
The integrated point-of-sale closed the loop. Services and retail are sold through the same system that holds the booking and the membership, so takings reconcile against what was actually booked and sold rather than being matched by hand. On top sits the chain-wide loyalty programme: points earned on any visit or purchase, redeemable at any location, giving members a reason to treat all 14 spas as their own.
Key decisions
One record across every site
Bookings, memberships and payments share a single source of truth, so a member is recognised, billed and rewarded identically at all 14 locations.
Book against live availability
Online booking works from real therapist and room availability rather than a request queue, so guests self-serve with confidence and front desks stop brokering the diary by phone.
Make renewals automatic
Membership billing renews without manual chasing, and failed payments enter retry flows rather than silently cancelling, so churn became something the chain manages instead of discovers.
Deposits against no-shows
Card-on-file booking deposits and automated reminders attached a commitment to every appointment, tackling no-shows at the moment of booking rather than after the empty slot.
Loyalty that spans the chain
The points-based programme earns and redeems at any location, deliberately rewarding members for treating the whole chain, not just their home spa, as theirs.
Measurable Impact
What changed after launch
Guests took to self-service quickly: within 5 months of launch, 62% of all appointments were booked online. The no-show rate dropped from 16% to 7% once automated reminders and card-on-file deposits attached a commitment to every booking, and front desks handed their reconciliation hours back to guests because the point-of-sale, bookings and memberships finally agreed with each other.
The membership economics moved just as clearly. Monthly churn fell from 8.5% to 5.4% with automatic renewals and failed-payment retry flows, and the loyalty programme changed behaviour across the chain: loyalty members visited 1.6x more often and drove 31% of retail sales at checkout. Head office now reads occupancy, revenue and churn for all 14 locations from one live view.
Booking experience
Phone-only bookings tied to front-desk hours
62% of appointments booked online within 5 months
Membership reach
Memberships in spreadsheets, valid at one location only
Automatic renewals and redemption at any of the 14 sites
No-show rate
16% of appointments lost to no-shows
7% after reminders and card-on-file deposits
Chain oversight
Hours of manual reconciliation, no consolidated view
One live view of occupancy, revenue and churn
Headline results
Online self-service bookings grew to 62% of all appointments within 5 months of launch
No-show rate dropped from 16% to 7% after automated reminders and card-on-file booking deposits
Monthly membership churn fell from 8.5% to 5.4% with automatic renewals and failed-payment retry flows
Loyalty members visited 1.6x more often and drove 31% of retail sales at checkout
Tech & Tools Used
What powered the build
Every tool below earned its place in this engagement. Here is the part each one played.
Next.js
Delivers the guest-facing web experience: online booking, the membership self-service portal and the loyalty views, presented as one consistent front door for every location in the chain.
Node.js (NestJS)
Runs the platform's backend services: booking logic, membership state, loyalty points and point-of-sale transactions all pass through one structured NestJS application shared by every location.
PostgreSQL
The single system of record for guests, memberships, appointments and sales, replacing the per-site spreadsheets with one database that every location reads and writes.
Redis
Keeps live therapist and room availability fast to query and holds short-lived booking state, so guests see an accurate calendar without every lookup hitting the main database.
Stripe Billing
Handles recurring membership billing: automatic renewals, failed-payment retries and plan changes made through the self-service portal all run on its subscription engine.
Stripe Terminal
Powers card payments at every front desk, tying in-person point-of-sale transactions for services and retail to the same customer record as bookings and memberships.
Twilio SMS
Sends the automated appointment reminders that helped bring down no-shows, along with the booking confirmations guests receive on their phones.
SendGrid
Delivers transactional email across the platform: booking confirmations, membership renewal notices, failed-payment alerts and loyalty updates, sent from one place with one template set.
AWS (ECS + RDS)
Hosts the platform: the NestJS services run as containers on ECS while RDS operates the PostgreSQL database, giving the chain managed infrastructure without running its own servers.
Ready to Build your Spa & Wellness Business with custom-application-development
Ask Byte
Ask Byte
Typically replies instantly
just Now
Hi! I'm OrganByte's assistant. How can I help you today?
AI-generated content may be incorrect

