# How to build a booking website in 2026: 3 approaches compared

> SaaS booking platform, Shopify plugin, or custom-built on an API — three ways to build a booking website in 2026, with the tradeoffs, timelines, and when each one is right.

URL: https://opencals.com/blog/build-a-booking-website
Author: Stanislav Tyshchenko
Published: 2026-06-13
Updated: 2026-09-05
Categories: engineering, tutorial

You need a booking website. A page — or a full site — where customers can pick a service, choose a time, and pay. The gap between that description and a working booking website is where the decisions live.

There are three fundamentally different ways to build one in 2026:

1. **A dedicated booking platform** — an all-in-one SaaS that includes the booking site, availability engine, and payments
2. **A Shopify store with a booking app** — for businesses that already sell on Shopify or want Shopify's e-commerce capabilities
3. **A custom site built on a headless booking API** — for developers who want full UI control or need to integrate booking into an existing product

Each has a different time-to-launch, cost structure, and ceiling. Here's how to pick.

## Approach 1: Dedicated booking platform

A booking platform bundles everything — service catalog, staff scheduling, availability, customer notifications, and payment processing — into one product. You configure your services, set your hours, and get a hosted booking page at `{yourbusiness}.platform.com` or connected to your own domain.

**Time to launch:** Hours to one day\
**Technical skill needed:** None — configuration only\
**Design control:** Limited — you're working within the platform's templates

Popular examples: Acuity Scheduling, Fresha, Vagaro, Booksy (vertical-specific), Opencals (both platform and API).

**Pros**

- Fastest path from zero to accepting real bookings
- No developers needed — configuration UI for everything
- Availability engine, notifications, and payments are pre-built and maintained
- Ongoing product updates — new features without new development work

**Cons**

- Your booking page looks like the platform's booking page
- Limited ability to customise the customer experience or add features the platform doesn't support
- Monthly subscription cost regardless of booking volume
- Harder to migrate away from once customers have bookings in the system

**When to choose this:** You need bookings live this week. You're a service business owner (not a developer) and you want to focus on running the business, not building software. Design customisation is not a priority.

**Opencals as a booking platform**

Opencals operates in this mode too: every account gets a hosted booking storefront at {yourstore}.opencals.com, a staff dashboard, customer management, and Stripe payments. No developers needed. From account creation to accepting real bookings is under an hour.

## Approach 2: Shopify store + booking app

If you already use Shopify — or you want to combine product sales with service booking in one store — adding a booking app to Shopify is the fastest way to get service booking without leaving the Shopify ecosystem.

A booking app tags certain Shopify products as "bookable," replaces the Add to Cart button with a calendar widget, and creates Shopify orders for each booking. Everything stays inside Shopify Admin.

**Time to launch:** Hours\
**Technical skill needed:** Basic Shopify knowledge\
**Design control:** Moderate — you control the Shopify theme, the booking widget adapts to it

**Pros**

- Works with your existing Shopify store, customers, and payment methods
- Bookings appear as standard Shopify orders — no separate dashboard to manage
- Shopify handles the customer account, notifications, and checkout infrastructure
- Large app ecosystem — four serious booking apps to choose from

**Cons**

- Booking widget is still largely the app's UI — some customisation, not full control
- Limited to what Shopify supports at checkout (no bespoke booking flows)
- App cost on top of Shopify subscription
- Not ideal if you don't already use or want Shopify

**When to choose this:** You're already on Shopify, or you specifically want Shopify's product catalog, inventory, and order management alongside your services. The four main apps — Opencals, Tipo, Cowlendar, Sesami — handle most service business patterns. See the [full comparison guide](https://opencals.com/blog/best-shopify-appointment-apps).

## Approach 3: Custom site built on a headless booking API

A headless booking API exposes the scheduling logic — availability, staff, cart, checkout, payments — as a REST API. You build the booking UI yourself in any technology stack. The backend handles the hard parts; you control everything the customer sees.

**Time to launch:** Days to weeks (frontend build time)\
**Technical skill needed:** Developer required\
**Design control:** Complete — pixel-perfect, no constraints

The Opencals Storefront API is purpose-built for this pattern. The fastest starting point is the [Haar open-source template](https://github.com/letsopencals/template-haar) — a complete Next.js 15 salon booking website that you clone, connect your API key, and deploy.

**Pros**

- Complete control over the customer experience — your design, your flow, your brand
- Build on any stack (Next.js, Vue, React Native, mobile apps)
- Embed booking inside an existing product without redirecting customers
- Same API works across web, mobile, kiosk, and Shopify simultaneously
- Open-source templates give you a full production starting point

**Cons**

- Requires a developer — not a configuration exercise
- Frontend build time before anything is live
- You own the frontend — updates and maintenance are your responsibility
- More moving parts than a platform approach

**When to choose this:** Your brand requires a custom UI that a widget can't deliver. You're building for multiple surfaces (web + mobile + Shopify). You're an agency building booking sites for clients and want one integration across many projects. You need to embed booking inside an existing app.

## Comparison at a glance

|                              | Booking platform           | Shopify + app      | Headless API + custom     |
| ---------------------------- | -------------------------- | ------------------ | ------------------------- |
| Time to first booking        | Hours                      | Hours              | Days–weeks                |
| Developer required?          | false                      | false              | true                      |
| Design control               | Low–medium                 | Medium             | Complete                  |
| Shopify integration          | Separate                   | Native             | Configurable              |
| Multi-surface (web + mobile) | Platform's surface only    | Shopify only       | true                      |
| Ongoing maintenance          | Platform handles           | Platform + Shopify | Your team                 |
| Best for                     | Non-technical, needs speed | Already on Shopify | Devs, agencies, custom UX |

## Step-by-step: building with the headless API approach

If you're going the custom route, here's how to get started with the Opencals Storefront API and the Haar template:

1. **Clone the template**: git clone https\://github.com/letsopencals/template-haar.git — this is a complete Next.js 15 booking site. All the API calls are already wired: services page, staff picker, availability calendar, cart, Stripe checkout, customer account.
2. **Create an Opencals account**: Sign up at opencals.com. Add your services, staff, and availability. Get your Storefront API key from Settings → API.
3. **Configure the environment**: Add your API key to .env.local: OPENCALS\_API\_KEY=sfk\_your\_key. The template reads this variable everywhere it calls the SDK.
4. **Run locally**: npm install && npm run dev — the template connects to your Opencals account immediately. Your real services, staff, and availability render in the UI.
5. **Customise the design**: The template uses Tailwind and shadcn/ui components. Edit colours, typography, layout, and copy to match your brand. The booking logic doesn't change — only the presentation.
6. **Deploy**: Push to GitHub, connect to Vercel (or any Next.js host), add your environment variable. One-click Vercel deploy is available from the template README.

[Deploy to Vercel](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fletsopencals%2Ftemplate-haar)

- [Opencals for developers](https://opencals.com/developers): API, SDK, and open-source templates — everything for building custom booking.
- [Storefront API documentation](https://opencals.com/docs): Interactive API reference, guides, and TypeScript SDK docs.
- [Shopify booking app guide](https://opencals.com/blog/shopify-booking-app): Complete walkthrough for the Shopify approach — setup, apps, and checklist.
- [What is headless booking?](https://opencals.com/blog/headless-booking-system): Architecture overview for the API-first approach.

## Frequently asked questions

### What is the fastest way to get a booking website live?

A dedicated booking platform or a Shopify booking app. Both can be live and accepting real bookings in a few hours with no development work. If you're starting from zero and need something today, Opencals has a hosted booking storefront at {yourstore}.opencals.com that's ready to configure immediately.

### Do I need a developer to build a booking website?

Not if you use a booking platform or a Shopify booking app — these are configuration products. You do need a developer if you want a fully custom UI built on a headless booking API. The middle ground is using an open-source template (like the Opencals Haar template) — a developer can deploy and customise it much faster than building from scratch, since the API integration is already done.

### Can I build a booking website that works on both web and mobile?

Yes, with a headless API approach. The Opencals Storefront API is a REST API — you can call it from a Next.js web app and a React Native mobile app simultaneously, both drawing from the same availability engine and calendar. A booking platform or Shopify app is typically single-surface (their hosted page or the Shopify product page).

### How much does it cost to build a booking website?

It depends on the approach. A booking platform: $0–$50/mo for most service businesses. Shopify + booking app: Shopify plan ($29–$299/mo) + app cost ($0–$50/mo). Custom built on an API: development cost (days to weeks of developer time) + API subscription ($0.99 per booking on Elastic, or from $15/mo on custom plans). The platform approach is cheapest in time and money to launch; custom is cheapest at high volume if you have developers available.

### What is the best booking website builder for a salon?

It depends on whether you want something turnkey or custom. For a turnkey salon booking website with no development: Opencals (hosted storefront + Shopify app), Fresha, or Booksy. For a custom-built salon booking website: the Opencals Haar template is purpose-built for salons — beauty-salon booking flow, staff picker, multi-location, Stripe payments — MIT licensed and one-click deployable.

### Can I use Opencals as both a Shopify app and a custom booking website?

Yes. The Opencals Shopify app and the Storefront API share the same backend. You can run the Shopify app for customers who discover you through your Shopify store, and a separate custom booking site (or the Haar template) for customers who arrive directly. Both use the same calendar, the same staff schedules, and the same availability engine.
