Skip to content
Apolaris AI Docs

Service catalog

basic

Build the list of services you offer — each with a name, price, duration, and category — so they power your appointments, point of sale, payroll, public website, and the API from one place.

A service is one thing you offer and charge for — a 60-minute consultation, a wash-and-cut, an oil change, a 30-minute treatment. The service catalog is the single list of those offerings, each with a name, a price, a default duration, and a category. You build it once, and every other part of Apolaris reads from it: you pick a service when you book an appointment, you add it as a line item at the point of sale, and its price and duration come along automatically. Keeping the catalog tidy means correct prices, realistic schedules, and clean reports everywhere downstream.

Who can do this

Access to the Services section is controlled by granular per-privilege flags on each team member's account, not by fixed role names. A domain manager can always do everything below; everyone else needs the specific privilege.

Action Privilege required
Open the Services section (view the catalog) can_view_service (manager always)
Create a new service can_add_service (manager always)
Edit an existing service can_edit_service (manager always)
Delete a service can_delete_service (manager always)

A team member who holds any of these privileges can open the section; each action inside is then gated by its own flag. See Users & privileges to assign them.

What a service holds

Every service in the catalog carries the same handful of fields. These are exactly what you set when you create or edit one.

Field What it does
Name What the service is called — what staff pick from the booking and sale screens, and what prints on a receipt (for example, "Gel manicure" or "Standard oil change").
Category Groups related services so long catalogs stay organized and filterable. Categories are defined by your organization — see Service categories below.
Description Optional internal notes about the service.
Duration (min) The default length of the service in minutes. This is what pre-fills an appointment's length when you pick the service on the calendar. Defaults to 60.
Price The default amount the service sells for, in your organization's currency. This is what pre-fills the line price at the point of sale.
Active Whether the service is offered right now. An inactive service stays in your records and on past receipts but is hidden from new bookings and sales.

Price and duration on a service are defaults, not locks. When you book an appointment or ring up a sale, the price and length copy across from the service but can still be adjusted on that one transaction without changing the catalog.

Service categories

Categories are not a fixed template — each organization manages its own list, so your menu structure can match your business, in your language. Open Bookings → Services → "Service Categories" (at /service-categories/) to manage them. A category has just three fields: Name, Description, and Active.

The category list shows, for each entry, how many services currently use it and an Active / Inactive status pill, with a search box and filters on top — so you can audit a long taxonomy at a glance.

  • Renaming is safe. Renaming a category automatically re-points every service that uses it; services are never orphaned by a rename.
  • Deleting is guarded. A category cannot be deleted while services still use it — reassign those services to another category first.
  • The service form only offers active categories. The Category dropdown on the Add/Edit Service form lists only your active categories. If a service's current category has since been deactivated, it stays selectable on that service, so editing never forces a reassignment.

New organizations start with zero categories — create at least one before adding services. With no categories, the service form's Category field shows "Create a service category first." and a service cannot be saved; the empty category list reminds you too: "No service categories yet. Add one before creating services." Organizations created before custom categories existed were seeded with the eight legacy categories, so nothing changed for them.

Who can manage categories: viewing the list requires access to the Services section; adding, editing, and deleting a category follow the matching service privileges (can_add_service, can_edit_service, can_delete_service) — a manager can always do everything.

For API users: the category_display field in the REST API now returns your custom category name.

Create a service

Who can do this: a manager, or a team member with can_add_service.

  1. Open the Services section from the sidebar.
  2. Click Add service (or New service).
  3. Enter the name customers and staff will recognize.
  4. Choose a category so it sorts with similar offerings — the dropdown lists your organization's active service categories.
  5. Set the duration in minutes and the price.
  6. Optionally add a description for internal reference.
  7. Leave Active on so it appears in bookings and sales.
  8. Save. The service is immediately available everywhere a service can be chosen.

Edit a service

Who can do this: a manager, or a team member with can_edit_service.

Open any service from the list and change its name, category, description, duration, price, or active state. Saving updates the default used by future appointments and sales.

Changing a service's price does not rewrite the past. Sales and receipts already recorded keep the price they were rung up at — each sale line stores its own snapshot of the description and amount — so your history stays accurate even after you re-price.

Deactivate vs. delete

You have two ways to retire a service, and they behave very differently.

Choice Effect When to use it
Deactivate (turn off Active) The service disappears from new bookings and sales but stays in the catalog and on every past record. You can re-activate it any time. A seasonal offering, a service on pause, or anything you might bring back. This is the recommended default.
Delete Removes the service from the catalog entirely. Something created by mistake that was never used.

When in doubt, deactivate rather than delete. Deactivating is reversible and keeps your catalog history clean, while still hiding the service from the booking and sale screens.

Deleting a service is safe for your history. Past appointments and sale lines that referenced it keep their recorded details — the appointment is simply no longer linked to a catalog entry, and the sale line keeps its printed description and amount. You will not lose receipts or break old reports by deleting a service.

Keep the catalog clean: duplicates and lookalikes

Repeated catalog imports (for example a calendar sync that ran many times) can leave the same service listed over and over. Duplicates confuse staff, clutter your public booking page, and can even make the AI receptionist book against an arbitrary copy. Two tools on the Services page keep the list tidy:

  • Remove duplicates (managers or can_delete_service) — appears whenever your catalog contains rows that are byte-identical (same name, price, and duration). One click merges each identical group into a single surviving service. The merge is link-preserving: every appointment, multi-service visit, sale line, waitlist entry, customer favourite, and customer-facing description is re-pointed to the surviving service first, so no history is lost and reports stay consistent. Only exact copies are ever merged.
  • Similar services — a review page listing services that look alike but are not identical: the same name at different prices or durations (often genuine tiers), and near-identical names (like two SKU siblings). These are flagged for your review, never merged automatically — open one with Edit if it turns out to be a real duplicate.

On self-managed deployments a nightly job merges byte-identical duplicates automatically (the Apolaris-DedupeServicesCheck scheduled task — see scripts/SCHEDULED_TASKS.md); the sync engine also binds re-imported names to the oldest existing service, so cleaned catalogs stay clean.

Public showcase: what customers see

Your catalog is an internal list by default. Public showcase is where you decide which part of it faces the world — the public booking page, online booking links, and your public website.

Who can do this: a manager, or a team member with can_edit_service. Open Bookings → Services → Public showcase.

Each active service gets three controls:

Control What it does
Public Whether the service is shown publicly and can be booked online. Off means it stays fully usable internally — bookable on your calendar and sellable at the till — but invisible to customers.
Featured Marks it as one of your few highlighted "main" services. A service that isn't public can't be featured.
Combinable Lets customers book this service together with other combinable services in one visit — on the public booking page they multi-select like checkboxes, and the WhatsApp AI agent can combine them too. The visit books as a single appointment covering the combined duration.
Order A sort number that controls the order services appear in publicly.

Select Save to apply your changes.

Let the AI propose the selection

Suggest main services with AI looks at your catalog and proposes which services should be public and which few should be featured. The suggestion is applied to the form, not saved — review it and press Save yourself, or discard it by leaving the page.

Customer-facing names

Where a service has an approved customer-facing description, the showcase (and the public pages) use that friendlier name and pitch instead of the raw catalog name. Your internal catalog name is unchanged.

Curate this before you generate a website. The AI website builder writes its copy around your public services, so a tidy showcase produces a much better first draft than exposing everything.

How services power the rest of Apolaris

The catalog is deliberately central. One well-kept list feeds several features at once:

  • Appointments. When you book on the calendar, you pick a service; its duration sets the appointment length and its price is carried to the eventual sale. See Appointments & calendar.
  • Sales & point of sale. At checkout you add services as line items; each one brings its name and price across, and you can still adjust the amount or quantity on that sale. See Sales & point of sale.
  • Payroll bonuses and commission. Services are the line items that make up each sale, and an employee's payroll bonus/commission is calculated from their realized sales total in the period against your sales-bonus tiers. Accurate service prices therefore feed directly into accurate pay. See Payroll.
  • Loyalty. A loyalty stamp-card reward can be restricted to one service category, so "free service after N visits" only counts the visits you mean. See Loyalty program.
  • Your public website and online booking. The services you mark public in the Public showcase are exactly what customers see on your website and booking links — one list, curated once.
  • The REST API. Your catalog is readable programmatically — GET /services/ lists every service with its category, duration, price, and active state. See REST API.

Tips

  • Keep durations realistic. The duration drives how much room an appointment takes on the calendar. If a service really runs 75 minutes, set 75 — a too-short default invites double-booking and a too-long one wastes open slots.
  • Use categories from the start. Grouping services (for example, by type of work) keeps a growing catalog fast to scan and filter on the booking, sale, and Services screens.
  • Re-price forward, not backward. Editing a price only changes new transactions; past sales keep what they charged. To run a temporary promotion, prefer a discount code over re-pricing the catalog.
  • Deactivate seasonal services instead of deleting them, so they are ready to switch back on next season.
  • Name for the receipt. The service name prints on receipts and shows on the calendar, so make it clear to both staff and customers.