Every booking, one engine.

Appointments, classes, reservations, and rentals run on one booking engine — with deposits, reminders, waitlists, and policies built in. Because it lives on sparx, every booking writes to the customer you already have: the deposit, the reminder, the no-show, the re-book all land in one system, not five disconnected tools.

  • appointments
  • classes
  • reservations
  • rentals
Balayage + cut
Dana Ruiz · Maple & Vine Studio
confirmed
Thu, Jun 26 · 1:00 PM
slot
Nora P.
stylist
2h 15m
duration
$50 deposit takenreminders 24h + 2h · email + SMSdeposit
BK-2048 · customer picked their stylist

Four booking shapes, one engine.

An appointment, a class, a reservation, and a rental aren't four products — they're one booking engine with a type discriminator. The same availability math, the same deposits and reminders, the same reports. Switch on the shapes a business needs; nothing is a separate tool to learn or pay for.

appointment

One slot of one service with one or more resources.

capacity 1salon · clinic · tutor · mechanic · law
class

A scheduled session with a capped roster and a waitlist.

capacity N + waitlistfitness · workshops · cohorts
reservation

A time-block on a finite resource matched to party size.

by resourcerestaurants · venues · tours
rental

A time-block allocation of an asset to one renter.

1 per assetrooms · bays · courts · equipment

Double-booking is impossible, not unlikely.

Most tools check for conflicts in code, then hope the check ran before someone else booked. sparx enforces it in the database itself: a resource cannot hold two overlapping bookings at the same time, full stop. A racing second request fails cleanly and is offered the next open slot — even if your calendar sync lags.

resource lane · one exclusive booking
12:00open
1:00 Balayage + cut · Nora P.
2:00buffer · held by service settings
3:00open
a second booking races for 1:00 PM
INSERT booking_resources
  resource = Nora P.
  range    = [1:00 PM, 3:15 PM)
rejected · no_overlap constraint

The overlap never commits. The customer is shown the next open time instead of a double-booked staff member — no apology email, no awkward call.

Enforced by a Postgres exclusion constraint on every exclusive resource — staff, tables, rooms, bays, equipment. Pooled capacity (intentional overbooking) is a separate, deliberate setting, never an accident.

Deposits stop no-shows — pick the policy per service.

No-show protection is the single highest-ROI feature in booking. Choose it per service and mix it across your catalog: a free slot here, a deposit there, a card hold for the ones that hurt. When a fee fires, the policy the customer accepted, the reminders sent, and the booking timeline are all on record — the evidence you need, captured automatically.

Free

no payment

Book with nothing held — for low-stakes slots where a no-show costs little.

Card hold

authorize, capture only on no-show

Authorize a card at booking; capture a no-show or late-cancel fee only if the policy fires, then auto-void the hold.

Deposit

partial now, applied to the bill

Capture a fixed amount or a percentage up front and apply it to the final total.

Prepay

full price now

Take the full service price at booking — the strongest commitment, ideal for classes and rentals.

Deposits need only a connected payment gateway — Stripe, sparx Pay, PayPal, or Square at your own rates. Not the Commerce module, not a locked-in processor. Scheduling stays standalone.

Reminders that fill the gaps a no-show leaves.

Deposits and reminders are the highest-ROI things a booking tool does. sparx sends confirmations, reminders, and follow-ups by email and SMS on the cadence you set — and when someone cancels, the waitlist auto-promotes the next person before the slot ever sits empty.

Balayage + cutBK-2048 · Dana Ruiz
Booking confirmedemail + .ics · sent
Reminder24h + 2h · email + SMS
2h reminderSMS · queued
Post-visit follow-upre-book / review ask
Waitlist · Balayage + cutThu, Jun 26 · 1:00 PM
Dana Ruizcancelled
next in lineoffered → promoted
holds their placewaiting
auto-promote · offer held for a window, then rolls on

Works with the calendar you already keep.

No spreadsheet, no copy-paste. Subscribe to your sparx schedule in any calendar, and import the busy time from the calendars you already keep so external commitments block your slots. And whatever a synced feed says, the double-booking guarantee holds at the database — degraded sync never degrades the core promise.

outbound

Subscribe to your schedule, anywhere

Every resource gets a private, signed iCal feed. Add it once to Google, Apple, or Outlook and your sparx bookings appear in the calendar you already live in.

  • One subscribe URL per staff member or resource.
  • A per-booking .ics rides on every confirmation and reminder.
  • Read-only and one-way — your bookings flow out to their calendar.
inbound

Import the busy time you already keep

Point sparx at the calendars where your outside commitments live — by secret iCal URL or a CalDAV connection — and that busy time blocks your sparx availability so nothing books over it.

  • Pull external busy blocks from an iCal URL or CalDAV.
  • All connected calendars are checked, never just a primary.
  • A failing feed raises an alert and falls back to sparx-only data.

One booking, one loop — not five disconnected tools.

Every scheduling SaaS is an island: the booking is in a booking app, the customer in a CRM, the deposit in a payment tool, the reminder in an SMS tool, and the no-show never updates lifetime value. On sparx it's one loop, because sparx already owns the customer, the money, the messaging, and the site.

01 · book

A slot is booked

From your branded site, the customer portal, the phone, or an AI assistant — every channel hits one engine.

lives in Scheduling
02 · remind

Confirmations & reminders go out

Email and SMS on your cadence, deduped and logged — the same pipeline your other sends already use.

lives in Email + SMS
03 · deposit

A deposit or hold is taken

Through your own connected gateway at your own rates — held, captured, or refunded by policy.

lives in Payments
04 · fulfill

The visit happens

Check in, complete, no-show, or reschedule — every state captured on the booking timeline.

lives in Scheduling
05 · record

It writes to the customer

Every booking and no-show is tied to the customer record or B2B account it belongs to.

lives in CRM
06 · follow up

The win-back fires

A re-book nudge or review ask runs on its own — turning one visit into the next.

lives in Automation

Complete on its own, better with the rest.

Scheduling is never bundled and never required by another module — it stands fully on its own. But it lives on the same platform as your customers, your money, and your messaging, so connecting them turns booking into a loop instead of an island.

on its own

Standalone from day one

Scheduling is a complete product by itself. Activate only this module, connect a gateway if you want deposits, and run your entire booking operation — no other module required.

  • Unlimited staff, resources, locations, and bookings on one flat fee.
  • Every feature included — waitlists, recurring, policies, reports.
  • Embed the booking widget on any site, on your brand, no “Powered by.”
better together

Richer with the modules you run

Because it shares the platform, Scheduling gets stronger the more of sparx you use — but it never depends on any of it. Each connection is a bonus, not a requirement.

  • CRM — bookings and no-shows write to the customer record.
  • Payments — deposits, holds, and refunds at your own rates.
  • B2B + Inventory — link a booking to an account, asset, parts, work order.

The same engine, configured for your business.

A salon, a restaurant, a studio, a clinic, a makerspace, and a fleet shop all run on this one engine. They differ only in which booking shapes and capabilities they switch on — never in which product they had to buy.

Salons & studios

appointment

Customer picks the stylist, leaves a deposit, and books in seconds.

Restaurants

reservation

Tables matched to party size, reservations by the slot — and no per-cover fee, ever.

Fitness & classes

class

Capped rosters, waitlist auto-promote, and auto-generated recurring class schedules.

Clinics & practitioners

appointment

Recurring series, reminders on the cadence you set, and bookings on the patient’s record.

Rentals & spaces

rental

Rooms, bays, courts, and equipment booked by the block — one renter per asset.

Field & fleet service

appointment

Bookings linked to a B2B account and a fleet vehicle, with the visit on the account’s history.

One flat fee, unlimited everything.

The two things people hate most about booking software — features yanked into higher tiers and per-seat pricing that punishes growth — are impossible here by policy. Add the staff, add the rooms, add the locations. The price doesn’t move.

$0
per seat — unlimited staff, resources, and locations on one flat fee
1.
engine — appointments, classes, reservations, and rentals on one record
DB
guaranteed — overlapping bookings of a resource can’t commit, ever
all
features included — waitlists, deposits, reminders, reports, sync
$29/mo

A flat $29/mo — unlimited staff, resources, locations, and bookings, with every feature included and nothing ever tier-gated. No per-seat, per-staff, or per-cover fee. Requires nothing else; always standalone. The only metered cost is SMS send volume. Start free for 14 days; no card to begin.

Scheduling questions.

Pricing, deposits, calendars, no-shows, and how it fits the rest of sparx — answered straight. Still deciding? Read the scheduling docs or start the 14-day trial.

How much does sparx Scheduling cost?

A flat $29/mo for unlimited staff, resources, locations, and bookings. No per-seat, no per-staff, and no per-cover fee — the one flat fee beats every per-seat competitor the moment you have more than one person taking bookings. Every feature is included; nothing is ever gated into a higher tier. The only metered cost is SMS send volume, billed as a physical cost like email. Start on a 14-day free trial; no card required to begin.

Take your first booking today.

Add a service, set your hours, embed the widget — and take a booking that reminds the customer, holds a deposit, and writes to their record automatically. No per-seat math, no migration weekend. Turn Scheduling off the day you stop, and your bookings stay yours.