Appointments Reference Public

Getting Started

End-user documentation for the ERPat Appointments module (spa / salon / clinic booking).

Guide version: r1 Module version: 1.0.0 Updated: 2026-07-22 Estimated time: 12 min
Getting Started

Getting Started

A first-run setup guide for the admin or manager standing up the Appointments module for a salon, spa, or clinic. Enable the module, understand who can do what, tour the sidebar, and walk a numbered checklist that takes you from an empty module to taking bookings — online and at the front desk.

ℹ️
Who this page is for You need Admin access (or the Manage Appointment Settings permission plus module-management rights) to complete first-time setup. Day-to-day booking staff should jump straight to Calendar & Appointments once setup is done.

Enable the module

The Appointments module ships with ERPat but is off until a company turns it on. Nothing in this guide — the sidebar menu, the settings page, the public booking page, or the two background email jobs — works until the module is enabled for your business.

  1. Sign in as an admin

    Log in with an account that can manage modules (an administrator, or a role granted module-management access).

  2. Open Manage Modules

    Go to Settings → Manage Modules.

  3. Enable “Appointments”

    Find the Appointments module in the list and switch it on. Internally this sets the flag module_appointments to 1 for your company.

  4. Confirm the sidebar appears

    The Appointments group now shows in the left menu (under Operations) with its Calendar, Services, Packages, Waitlist, Reports, and Settings items — subject to your permissions.

????
Nothing runs while the module is off If module_appointments is not 1, the sidebar item and the Settings page won’t appear, the public booking URL /appointments/book/{company-slug} returns a 404, and both scheduled email jobs (reminders and review requests) exit immediately and send nothing. Enable the module first, always.
????
The automations turn themselves on The two background jobs — appointment reminders (every 5 minutes) and post-visit review requests (hourly) — are enabled by default. Once the module is on they start working automatically on the next cron tick; there is no separate scheduling step. See Settings & Reminders.

Permissions reference (table)

Access is controlled by a set of permission keys. Each key unlocks a specific area or action. The base appointments permission opens the booking workspace; the others are granular gates layered on top. Assign these to roles the same way you assign any other ERPat permission.

????
Admins bypass every check Any user flagged as an administrator (is_admin = 1) bypasses all of the permission checks below. Grant the granular keys only to non-admin roles (front desk, managers) who need scoped access.
Permission keyLabelWhat it unlocks
appointments Appointments Base access to the booking workspace — the Calendar & list. Also lets a user open an appointment’s detail card, view Customer History, and filter the list by status. Required for everything else in the workspace.
appointments_create Create Appointment Shows the Add Appointment button and allows saving a brand-new booking. Without it the button is hidden.
appointments_update Update Appointment Edit a booking, change its status (Confirm / Check In / Complete / No Show / Cancel), manage item lines, and use Commit Items to Stock. The busiest front-desk permission.
appointments_delete Delete Appointment Soft-delete a booking and its lines. Usually reserved for managers. Note: deleting does not reverse stock/loyalty — use Cancel instead when those effects matter.
appointment_services Manage Services Opens the Services & Categories catalog page (view). Required to see the treatment menu at all.
appointment_services_create Create Service Shows Add Service and Add Category; allows creating new services and categories.
appointment_services_update Update Service Edit a service or category, and use Assign Staff to map providers to a service.
appointment_services_delete Delete Service Soft-delete a service or a category.
appointment_packages Manage Packages Opens the Packages & Memberships area (view/manage bundles).
appointment_packages_create Create Package Create a new package or membership.
appointment_packages_update Update Package Edit an existing package/membership.
appointment_packages_delete Delete Package Soft-delete a package/membership.
appointment_packages_sell Sell Package Sell a package to a customer, creating their entitlements.
appointment_waitlist Manage Waitlist Opens the Waitlist area to see and manage queued customers.
appointment_waitlist_create Create Waitlist Entry Add a customer to the waitlist manually.
appointment_waitlist_update Update Waitlist Entry Edit a waitlist entry or send the manual “slot opened” notification (the bell).
appointment_waitlist_delete Delete Waitlist Entry Remove a waitlist entry.
appointment_reports Appointment Reports Opens the Reports page (Workforce Monitor, items-used, and related analytics).
appointment_checkout Appointment Checkout Shows the Checkout button on an appointment and allows creating invoices / recording payments. See Checkout & Payments.
manage_appointment_settings Manage Appointment Settings Required to see the Settings sidebar item and to open and save the Appointment Settings page (public booking on/off, slot/lead/advance windows, reminders, deposits, commission, loyalty, reviews, auto-invoice).
ℹ️
Public pages need no permission The customer-facing online booking portal, waitlist sign-up, slot lookup, thank-you page, and review page are fully public — no permission applies. They are instead gated by two conditions: the module must be enabled and “Enable public booking page” must be turned on in Settings. Miss either and the page 404s.

Suggested role matrix

There are no built-in Appointments roles — you compose them from the keys above. Below is a practical starting point for three common personas. Adjust to fit how your business divides labor.

Front desk Manager Admin
Capability (permission) Front desk Manager Admin
Open workspace (appointments)YesYesAll
Create bookings (appointments_create)YesYesAll
Edit & change status (appointments_update)YesYesAll
Delete bookings (appointments_delete)NoYesAll
Checkout & invoicing (appointment_checkout)OptionalYesAll
View services catalog (appointment_services)ViewYesAll
Create / edit / delete services (appointment_services_*)NoYesAll
Packages & selling (appointment_packages* / _sell)Sell onlyYesAll
Manage waitlist (appointment_waitlist*)YesYesAll
Reports (appointment_reports)NoYesAll
Settings (manage_appointment_settings)NoOptionalAll

Why this split

Front desk / reception lives in the Calendar. They create bookings, check clients in, record items used or sold, mark visits Completed or No Show, and work the waitlist. Give them create + update, waitlist, and — where your workflow calls for it — checkout and the ability to sell packages. Keep delete, catalog editing, reports, and settings off their plate to avoid accidental damage.

Managers own the business setup and oversight: they build the service menu, assign staff, manage packages, delete bookings when needed, take payments, and review performance. Whether they also configure Settings depends on whether you want booking rules centralized to admins.

Admins need nothing granted — the is_admin flag bypasses every check, so they see and do everything, including Settings and Manage Modules. Reserve admin for the handful of people who set the module up in the first place.


Navigating the module

Once enabled, Appointments appears as a group in the left sidebar under Operations. Each item is gated by its own permission, so a user only sees the ones they can access. Here is what each destination is for.

????
The dashboard shortcut A Today’s Appointments widget also appears on the main ERPat dashboard for front-desk staff — a quick list of the day’s bookings with each customer, service, and status chip. It shows “No appointments today.” when the day is clear.

First-time setup checklist (SOP)

Follow this in order — the sequence matters. You can’t assign an active category that doesn’t exist yet, and a service with no assigned providers produces no bookable slots. Actor: Admin / Manager.

  1. Enable the module

    As an admin, go to Settings → Manage Modules and switch Appointments on. Confirm the sidebar group appears. (Full detail in Enable the module above.)

  2. Create service categories

    Open Appointments → Services. In the right-hand Service Categories panel, click Add Category. Give each grouping a Name (e.g. Hair, Nails, Facials), pick a Color, optionally set a Sort order, leave Status Active, and Save. Repeat for every grouping. Do this first — the service form only lists Active categories.

  3. Create your services

    In the left panel click Add Service. Enter the Name, pick a Category, set the Duration in minutes (this sizes calendar slots), optionally set Buffer Before / After for setup and cleanup, enter a Price, choose a Color, and confirm Status is Active. Leave Public checked for anything you want bookable online (uncheck it for internal-only services). Save. Repeat for the whole menu. See Services & Staff.

  4. Assign staff (providers) to each service

    On each service row, click the Assign Staff (users) icon, select the providers who can perform that service, and Save. Only assigned providers are offered when booking — a service with a Providers count of 0 is effectively unbookable, online or off.

  5. Make sure providers have working hours

    The availability engine reads each provider’s working times from their HR weekly Schedule — not from Appointments. A provider with no schedule (or an off-day) generates no slots. Confirm every booking provider has in/out times set in HR before you go live.

  6. Configure Appointment Settings

    Open Appointments → Settings. Set the booking window and behavior: Slot interval (e.g. 15 min), Minimum lead time (e.g. 60 min to block last-minute bookings), Maximum advance booking (e.g. 60 days), Cancellation window (e.g. 24 h), and Reminder lead time (1440 = a day-before reminder). Optionally set Default warehouse ID (for back-bar stock), Require deposit + percent, Service commission %, Loyalty points per 1.00, Auto-create invoice on completion, and Enable review requests + delay. Click Save and look for “Settings updated successfully.” See Settings & Reminders.

  7. (Optional) Build packages & memberships

    If you sell prepaid bundles or memberships, create them under Appointments → Packages now so front desk can sell them at checkout. See Packages & Memberships.

  8. (Optional) Turn on public online booking

    Still in Settings, tick “Enable public booking page” and Save. The read-only Public booking URL shown is your shareable link, built from your company slug: /appointments/book/{company-slug}. Click it to preview exactly what customers see, then share it. See Online Booking Portal.

  9. Do a smoke test

    Create one test booking from the Calendar (front-desk path) and — if public booking is on — one from your public URL. Confirm each lands in the list, the confirmation email arrives, and you can move it through ConfirmedChecked InCompleted. You’re live.

⚠️
Two conditions must both be true for online booking A service appears on the public page only when it is both Active and Public and has at least one assigned provider who is working that day. Public-but-provider-less, or provider-with-no-schedule, both silently yield “No available times.”
????
Reminder lead time of 0 does not mean “no reminder” If Reminder lead time is left 0 or blank, the reminder job substitutes 1440 minutes (24 h) — it never uses 0. Reminders also fire only for Confirmed appointments. To suppress reminders you must keep the appointment out of Confirmed status, not set the field to 0.

First-run edge cases

I enabled the module but the sidebar item still isn’t showing.

The Appointments group only appears when the module is enabled and you hold at least the base appointments permission (or are an admin). Each sub-item further needs its own permission — for example the Settings item requires manage_appointment_settings. Confirm the module flag is on in Settings → Manage Modules, then check your role’s permissions.

My public booking URL returns a 404.

Public booking 404s unless both the Appointments module is enabled and “Enable public booking page” is turned on in Settings. Also verify the company slug is correct — the public and review links are built from it. See Online Booking Portal.

No time slots appear even though the service is public.

Three things must all be true: the service is Active and Public, at least one provider is assigned to it, and that provider has an HR weekly Schedule with in/out times for the chosen day. Large service buffers, a strict minimum lead time, or a date beyond maximum advance can also legitimately return “No available times” — that isn’t the same as “fully booked.”

Do I have to schedule the reminder / review emails myself?

No. Both jobs are enabled by default and start automatically once the module is on. Reminders run every 5 minutes; review requests run hourly but only when “Enable review requests” is also on. Values you save in Settings take effect on the next run.

Can front-desk staff see the Reports or Settings pages?

Only if you grant them. Reports needs appointment_reports and Settings needs manage_appointment_settings. In the suggested matrix both are left off Front desk and kept with Managers/Admins.

Should I delete a service I’m no longer offering?

Prefer setting it Inactive (or just unchecking Public) over deleting, so past appointments and reports keep a clean reference. Deletes are soft deletes that hide the record from the catalog. The same principle applies to appointments: Cancel rather than delete when you need entitlement release and waitlist alerts to fire.


Next steps

With the module enabled, catalog built, staff assigned, and settings tuned, head into the day-to-day pages:

Was this guide helpful?

Report a content problem