Appointments Reference Public

FAQ & Troubleshooting

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: 24 min 1 views
Reference

FAQ & Troubleshooting

Something not behaving the way you expected? Start here. This page collects the most common questions and "why isn't this working?" moments across the whole Appointments module — no available times, a Checkout button that won't create an invoice, a customer who never got their email, a menu item you can't see — and turns each into a quick, actionable answer. Every item is a click-to-open accordion, so scan the headings and expand only what you need.

Front desk Manager Admin Customer
ℹ️
How to use this page Jump to the section that matches your symptom using the On this page list on the right. Each section is a set of expandable Q&As — click a question to open it, or use Expand all / Collapse all. Where a fix lives on another screen, the answer links straight to it. Definitions of any term are in the Glossary.
????
The two-minute triage Most "it's broken" reports come down to one of five things: (1) the module isn't enabled, (2) a permission is missing, (3) a setting window (lead time / advance days) is hiding what you want, (4) a piece of setup is incomplete (no provider assigned, no schedule, service not Public), or (5) a status filter is hiding a record. Check those first.

Booking & availability

By far the most common question is "Why are no times showing?" The Time field is never free-text — it only lists slots the availability engine actually returns for the chosen service, provider, and date. When the list is empty (or the online page says "No available times for this date.") it's almost always one of the reasons below, not a bug.

Why are no times showing?

Work through these causes in order — they're listed roughly from most to least common. Any single one produces an empty slot list.

CauseWhat's happeningFix
Service & date not both chosen The slot lookup only runs once you have picked both a service and a date. Before that you'll see "Select a service and date". Pick the service, then set the date, and wait for the spinner to finish.
No provider assigned to the service Only staff explicitly assigned to a service are offered for it. A service with zero assigned providers can never produce a slot (the Providers count shows 0). On Services, open the service's Assign Staff icon and add at least one active provider.
Provider has no working schedule Slots come from each provider's HR weekly Schedule (working in/out times), not the Appointments module. No schedule = no slots for that person. Off-days and overnight shifts also yield nothing. Give the provider an HR weekly Schedule with in/out times for that weekday, or book a different provider (or leave it on Any available provider).
Provider is fully booked Existing appointments (plus each service's before/after buffers) have eaten every open interval for that day. Pick another provider, choose Any available provider, or try another date.
Date is too soon (minimum lead time) Slots closer than the minimum lead time to now are hidden and rejected. A 60-minute lead hides everything in the next hour. Book further out, or lower Minimum lead time in Appointment Settings.
Date is too far out (maximum advance) Dates beyond the maximum advance booking window return no slots. Easy to mistake for "fully booked". Book within the window, or raise Maximum advance booking (days) in Settings.
Service is Private (online only) On the public page, a service must be both Public and Active to appear. Private services never show online. Edit the service, tick Public, and confirm Status is Active — see Services & Staff.
Large service buffers Big before/after buffers pad every busy interval, so fewer slots fit than the raw working hours suggest. Trim the service's buffers if they're larger than the real turnaround needs.
ℹ️
"No available times" ≠ "fully booked" An empty list can simply mean the date is too soon (lead time) or too far out (advance window), or that the chosen provider isn't scheduled to work that day. Before you tell a customer you're full, check the date is inside the booking window and that the provider actually has a working schedule that day.

Booking & availability — FAQ

The Time dropdown says "No available times for this date." — is my calendar broken?

No. The Time field only lists real, computed slots. An empty list means the provider is fully booked or off that day, the date is outside the lead-time/advance window, or the service has no assigned provider. Pick another provider (or Any available provider) or another date. See the causes table above.

I picked a service but no times ever load

You must choose both a service and a date before any slots load. Changing the service, provider, or date reloads the slot list and clears the old selection. If it's still stuck showing the spinner, the service may have no provider assigned — check the Providers count on Services.

A brand-new service I created won't show any bookable times

A service isn't bookable until at least one provider is assigned to it. On the Services list, the Providers column is your health check — anything showing 0 can't be booked. Click the Assign Staff (users) icon and add an active provider.

My service is Active and Public but still shows no times online

Active + Public gets the service listed online, but it still won't produce slots unless a provider is assigned and that provider has a working HR schedule for the chosen day. Both conditions are needed. See the Online Booking Portal troubleshooting.

Two customers grabbed the same time — how is that handled?

It isn't double-booked. At submit the exact slot is re-checked inside a locked database transaction (per provider, per day), so only one booking wins. The other person sees "That time slot is no longer available. Please choose another." and simply reselects a time. This applies to both front-desk and online bookings.

When booking, do I have to pick a provider?

No — leave Provider blank to use Any available provider. The system then pools every provider assigned to the service and offers their combined open times; each slot option shows which provider it belongs to, and picking a time assigns that provider. This is the best choice for phone bookings where the customer doesn't mind who they see, and it maximises the times shown.

My very short service still books a 5-minute block

Service duration is clamped to a 5-minute minimum, and a blank or zero duration falls back to 30 minutes. A mis-configured 0-minute service still books a 5-minute block. Set a realistic duration on the service in Services.

Can I type a custom time that isn't in the list?

No. The Time field is not free-text — it's populated by the availability engine from the service duration, buffers, provider schedule, and existing bookings, stepped by the slot-interval setting. To offer more times, lower the slot interval (e.g. 15 min gives more starts than 30), reduce buffers, widen schedules, or lower the minimum lead time.


Services & staff

Problems here almost always trace back to catalog setup — a service that isn't Public, a category that isn't Active, or a provider assignment that got wiped by accident. Manage all of this on the Services & Staff screen.

Services & staff — FAQ

A service doesn't appear on my public booking page

A service must be both Public and Active to show online. New services are Public by default, but if you unticked it, it becomes Private (internal-only). Edit the service, tick Public, and confirm Status is Active.

I can't select a category when creating a service

Only Active categories appear in the service's Category dropdown. If your category is Inactive you can't pick it — activate the category first (right-hand Service Categories panel on the Services page). This is also why the setup order is: create categories first, then services.

A provider isn't offered when I book a service

Only staff explicitly assigned to that service are offered. Open the service's Assign Staff (users) icon and add them. Also note the picker lists only active staff users — a deactivated or deleted staff member won't appear (a previously-saved assignment is kept internally but hidden from the count and picker).

I saved Assign Staff and it removed providers I didn't mean to

Saving the Assign Staff modal replaces the entire provider set for that service — it's not "add only". If you open it and accidentally clear a selection then save, those providers are removed. Always confirm the full list of who should be assigned before saving.

The Providers count on a service says 0 — what does that mean?

It means no staff can perform that service yet, so it is effectively unbookable. Scan the Providers column as a health check and assign at least one active provider to any service showing 0.

I deleted a category and its services now show "-"

Deleting a category does not reassign its services. Those services keep their category internally but display - as their Category until you edit each one and pick a current category. Prefer setting a category Inactive over deleting it if services still reference it.

The buffers I set are cutting my available slots down

That's expected. Buffers pad busy intervals before and after each service for setup/cleanup, so a service with large buffers legitimately shows fewer slots than the raw working hours. Set buffers to match real turnaround time — not longer.

Should I delete a service I no longer offer, or make it Inactive?

Prefer Inactive (or just untick Public to pull it from online booking) when a service has been used — this keeps past appointments and reports pointing at a clean reference. Delete is a soft delete that hides it from the catalog; use it only for services with no history you need.

I don't see the "Add Service" or edit/delete icons at all

Those are permission-gated. You need appointment_services to view the page, _create for the Add buttons, _update for the pencil and Assign Staff (users) icons, and _delete for the X. See Permissions & visibility.


Packages & memberships

Package questions split into two halves: selling a package (on the Packages page) and spending its sessions to cover a service at Checkout. The golden rule: coverage can only be applied or removed before the invoice is created.

Packages & memberships — FAQ

I can't sell a package — it says to add an included service first

A package with no included services cannot be sold; the Sell action refuses with "Add at least one included service to this package first." Edit the package and add at least one service row with a quantity of 1 or more, then sell it. Rows with a blank service or a quantity of 0 or less are silently skipped on save.

I can't add a service to a package

The included-services dropdown lists only Active services. If the service you want is inactive or deleted you can't add it — activate it first on the Services page.

Selling a package didn't create an invoice

If the package price is 0, selling only provisions the customer's entitlements — it does not raise an invoice. If you expect a bill, set a Price greater than 0 before selling. When priced, the sale creates an unpaid invoice (it does not mark it paid) — collect payment via the normal invoicing flow.

No "Apply package" dropdown shows at checkout

The Package coverage section only appears when the appointment has a customer and no invoice yet, and a dropdown only shows on a service line when the customer owns a matching available-now entitlement — active, unexpired, and with remaining sessions. Exhausted or expired entitlements simply stop appearing (there's no "expired" badge on the line).

I can't remove package coverage from a service

You can only apply or remove coverage before the invoice is created. Once you click Create Invoice, coverage is locked — the covered service was already excluded from the bill, so it can't be un-covered afterwards. Do all coverage first, then invoice.

"That package session is no longer available."

Sessions are claimed atomically. If two staff try to apply the last session at once, only one wins and the other sees this message. It also appears if the entitlement was exhausted or expired in the meantime. Check the customer's remaining sessions in Customer History or the Sold Packages panel.

I edited a package and lost some included services

Editing a package replaces the whole included-services set: existing items are removed and only the rows currently in the form are re-saved. If you removed a row (or it had a blank service / zero quantity), that service is dropped from the package. Re-add it and save.

I changed a package's validity but old sales didn't get longer expiry

Validity is stamped at the moment of sale from the package's validity-days. Changing validity later does not extend already-sold customer packages. Use validity 0 for gift-style packages that should never expire (shown as ∞).

A cancelled appointment didn't return the customer's package session

Cancelling returns claimed sessions only if no invoice exists yet. Once an invoice was created, the covered service was already excluded from that invoice, so the session is not refunded automatically — adjust manually if needed. (Deleting an appointment reverses nothing; cancel instead of delete when you need effects handled.)

Does a Membership auto-charge the customer each month?

No. The Billing period (None / Monthly / Yearly) on a membership is informational only in this version — there is no automatic recurring billing. Don't rely on it to charge customers on a schedule.

I deleted a package — did it revoke what customers already bought?

No. Deleting a package is a soft delete of the catalog entry only; it does not revoke sessions customers already purchased. Their entitlements remain usable.


Checkout & invoicing

The headline question here is "Why can't I create an invoice?" — and the answer is almost always no customer is attached or there are no billable items. Everything below happens in the Checkout modal, which needs the Appointment Checkout permission to even open.

Why can't I create an invoice?

Create Invoice is blocked in exactly these situations — the modal tells you which one:

BlockerMessage you'll seeFix
No customer attached "Attach a customer to this appointment before invoicing." Edit the appointment and attach an existing customer, or type a name + valid email to auto-create one.
No billable items "There are no billable items on this appointment." Ensure there's a billable line — a service line or a retail-sale product. Back-bar and package-covered lines never bill.
Invoice already exists The modal shows the invoice summary instead of the Create button. Nothing to do — move on to recording payment or the pay link.
No Checkout button The green Checkout button isn't on the appointment card. You lack the appointment_checkout permission — see Permissions.

Checkout & invoicing — FAQ

"Attach a customer to this appointment before invoicing."

Invoicing requires a real customer. A walk-in booked with just a name/phone stays account-less. Edit the appointment and either pick an existing customer or type a name plus a valid email (that auto-creates a customer account), then reopen Checkout.

"There are no billable items on this appointment."

Only billable lines can be invoiced: the service line and any retail-sale products. Back-bar use lines are never billed, and any service covered by a package is excluded. Add a retail line (or make sure the service line hasn't been fully covered) via Manage Items.

My retail sales / products used aren't on the invoice

Record retail sales and back-bar consumption via Manage Items before you create the invoice. Back-bar (consumption) lines are priced 0 and never appear on the bill by design — only retail sales and services are billable.

I can't record more than the balance due

Correct — payments are silently clamped to the balance due. You can never over-collect; any excess amount is simply dropped. The Amount field pre-fills with the full balance, so for a full payment just pick the method and click Record Payment. Partial payments are allowed and the balance stays open until it reaches 0.

The payment method dropdown rejects my selection

An empty / "0" payment method is rejected as invalid. Pick a real method from the list (it's populated from the core Payment Methods). If your method isn't listed, add it in the core Payment Methods setup first.

The customer can't pay from the online pay link

The pay link generates fine, but the customer can only actually complete payment if the tenant has online payments configured and guest invoice payment (pay without login) enabled. Without both, the link is a dead end — take payment at the desk instead, or enable those options in the core settings.

A recorded in-store payment didn't show in the Accounts ledger

This is a known limitation: in-store payments recorded here post against the invoice only — they do not post to the Finance Accounts ledger (account transactions). If you use the Accounts module, reconcile these manually.

The customer didn't earn loyalty points on a small visit

Loyalty points are awarded automatically once on completion as floor(total × rate). A small total or a low rate can round down to 0 points. Confirm the rate is set in Settings ("Loyalty points per 1.00 spent"; 0 = off) and that the visit total is high enough to earn at least one point. There is no manual "award points" or redemption screen in this module.

I cancelled a completed visit — the points/stock didn't reverse

By design. Completion side-effects (loyalty award, back-bar stock decrement, commission capture) are latched to run once and are not automatically reversed if you later cancel. A completed-then-cancelled visit is treated as settled; adjust manually if you truly need to reverse them.

Where do I view or print the invoice?

Use the View invoice link in the Checkout modal — it opens the underlying invoice in the core Invoices module in a new tab, where you can print, further manage, and reconcile it.


Waitlist

Waitlist confusion usually comes from two behaviours: you can't set a status when adding an entry, and notifying with no email silently sends nothing. Everything lives on the Waitlist screen.

Waitlist — FAQ

My waitlist entry disappeared from the list

By default the list only shows Waiting and Notified. Once you set an entry to Booked or Cancelled it drops out of the default view — it's not gone, just filtered. Tick its status checkbox above the table to see it again.

Why can't I set the status when adding an entry?

The Status dropdown is hidden on the create form — new entries are always created as Waiting. To set a different status, save first, then reopen the entry with the pencil (Edit) icon; the Status dropdown appears only in edit mode.

A customer says they never got the "slot opened" email

Notifying with no valid email silently flips the entry to Notified but sends no email. Check the entry's Email field is filled and valid. If it was missing, add it via Edit, set the status back to Waiting, then click the bell again. A valid email is required for both the manual bell and the automatic cancellation notify.

The bell (Notify) icon isn't showing on a row

The manual Notify (slot open) bell only appears on Waiting rows. Once an entry is Notified, Booked, or Cancelled you can't re-notify from the bell — Edit it back to Waiting first if you need to alert them again.

I cancelled an appointment but nobody was auto-notified

Automatic notification fires only when a Confirmed appointment is cancelled — not for Pending ones, and not when a slot opens for any other reason. Also confirm Waiting entries actually match the cancelled service, date, and provider.

Some matching customers weren't emailed on a cancellation

Auto-notify is capped at 20 emails per cancellation. On a busy list the rest won't be emailed automatically — use the manual bell to work down the remaining matching Waiting rows.

An entry isn't matching cancellations even though it's Waiting

Matching respects preferences: a specific preferred date only matches a cancellation on that exact date, and a specific provider only matches that provider's (or an unassigned) slot. Leave Provider = Any available provider and Preferred date blank (Flexible) for the widest matching.

Does notifying — or booking — create the appointment?

No. The waitlist is purely a queue. A notified customer must still book (online or at the front desk), and staff must manually set the entry to Booked. Nothing auto-converts — see Converting a waitlist entry.

The Service column shows "-" on an entry

The Service dropdown lists only active services. If a service is later deactivated or deleted, existing entries for it show -. Edit the entry to point it at a current service if needed.


Reminders & email

Reminders, confirmations, and review-request emails are automatic, but they all depend on the right switches being on and a resolvable customer email. Configure timing on Settings & Reminders.

Reminders & email — FAQ

Reminder emails aren't going out — what do I check?

Check three things in order: (1) the Appointments module is enabled, (2) the appointment is actually in Confirmed status — reminders only fire for Confirmed, never Pending / Checked In / In Progress, and (3) the appointment's start falls within the reminder window (now to now + reminder lead time). Reminders retry automatically on a transient mail error, so a temporary failure sorts itself out on the next run.

I set the reminder lead time to 0 to turn reminders off — they still send

A reminder lead time of 0 or blank does not mean "no reminder" — the job substitutes 1440 minutes (24 hours) and never uses 0. To effectively suppress reminders, don't let the appointment reach Confirmed status; setting 0 won't do it.

A confirmation email never reached the customer

The confirmation only sends when the customer has a resolvable email. A booking saved as Confirmed with no email simply won't notify. Also: new customer accounts are auto-created only when a valid email is entered and no account already matches — a walk-in with just a name/phone stays account-less and gets no confirmation or reminders.

Does editing an appointment re-send the confirmation?

Saving as Confirmed sends a confirmation, and a brand-new booking additionally emails the assigned provider. But editing an existing appointment does not re-email the provider. Only the customer confirmation goes when the status becomes Confirmed.

Review-request emails aren't being sent

Review requests need two switches on: the module enabled and "Enable review requests" in Settings. Only Completed appointments older than the review-request delay qualify — no-shows and cancellations never get one. The email is sent at most once per appointment.

A review-request email failed — will it retry?

No. Unlike reminders, the review-request is latched as requested even if the email fails to send, so it is not retried. Reminders, by contrast, only latch on a successful send, so they retry on failure.

Reminders/reviews are going out at the wrong time of day

Both automations compute their windows using the business timezone setting. An unset or invalid timezone falls back to server time, which can shift when emails go out. Set the correct company timezone.

An email shows a literal {TOKEN} in the text

Email templates use {VAR} placeholders. Any placeholder the parser can't resolve for that template is left as literal {TOKEN} text. When customising the six seeded templates in the core Email Templates editor, only use tokens the template actually provides.

How do I change the wording of the automated emails?

Edit them in the core Email Templates editor — don't edit code. The module seeds six templates (confirmation, reminder, cancelled, new-for-staff, review request, waitlist slot-open) with branded defaults; your customised message is picked up on the automation's next run. See Settings & Reminders.

The public review link says "not available"

The review page only works for appointments already marked Completed by staff, and each appointment can be reviewed only once. A customer who follows the link before completion sees a not-available message; a second submission shows "You've already reviewed this visit."


Permissions & visibility

The most common invisible-feature complaint is "I can't see the menu / a button." The Appointments area is gated two ways: the module must be enabled for your business, and you must hold the right permission for each screen or action. Admins (with is_admin) bypass all permission checks.

Which permission controls what

If a screen, button, or icon is missing, match it to its permission here and ask an admin to grant it to your role.

PermissionUnlocks
appointmentsBase access to the booking workspace — the Calendar & list and viewing an appointment card / Customer History.
appointments_createThe Add Appointment button and saving a new booking.
appointments_updateEditing appointments, status transitions (Confirm / Check In / Complete / No Show / Cancel), Manage Items, and Commit Items to Stock.
appointments_deleteDeleting an appointment.
appointment_checkoutThe green Checkout button and everything in it — create invoice, apply/remove package coverage, record payment, pay link, view invoice.
appointment_services (+ _create/_update/_delete)The Services & categories catalog and its Add / edit / Assign Staff / delete controls.
appointment_packages (+ _create/_update/_delete/_sell)The Packages catalog and Add / edit / delete / Sell controls.
appointment_waitlist (+ _create/_update/_delete)The Waitlist screen and Add / edit / notify (bell) / delete controls.
appointment_reportsThe Reports dashboard (Workforce Monitor, reviews).
manage_appointment_settingsViewing and saving the Appointment Settings page and its sidebar item.

Permissions & visibility — FAQ

The whole Appointments menu is missing

Two possibilities. First, the module isn't enabled — an admin must turn it on in Settings → Manage Modules; with the module off, the sidebar entries and settings page don't appear and the automations do nothing. Second, you may lack the base appointments permission (or the per-screen permission for that item). Ask an admin to enable the module and grant the permission.

I can see the calendar but there's no "Add Appointment" button

The Add button is gated by appointments_create. Without it you can view but not create bookings. Ask an admin to grant create permission to your role.

There's no Checkout button on the appointment card

Checkout is gated by the appointment_checkout permission — the button is hidden without it. Note a customer should also be attached before invoicing. See Checkout & invoicing.

I can't open the Settings page

The Appointment Settings page and its sidebar item require manage_appointment_settings. Without it the page isn't shown to you. Ask an admin to grant it — see Settings & Reminders.

The Reports page redirects me away instead of showing 403

That's expected. Reaching Reports needs both the module enabled and the appointment_reports permission; missing either redirects you away rather than showing a 403 in place. Ask an admin to grant Appointment Reports access.

The "Customer History" button doesn't appear on an appointment

Customer History only shows when the appointment has a linked customer account. A walk-in booked with just a name/phone has no account, so no history button — and the history screen only works for real customer-type users. Attach or auto-create a customer (via a valid email) to enable it.

The "Commit Items to Stock" button appears sometimes but not always

It's a retry path, not a normal step. It only shows when a Completed appointment still has uncommitted back-bar consumption and the Warehouse module is available. In the normal flow, completion decrements stock automatically. If Warehouse is off, or no default warehouse is set, or the line is a typed description (not a real stock product), stock isn't decremented and the items are recorded for reporting only.

The In Progress status has no button on the card

Correct — there's no dedicated In Progress button on the detail card. Set it via the Status dropdown on the edit form. The card otherwise jumps from Confirmed / Checked In straight to Complete.

The public booking page shows a 404 / "not found"

The public page silently 404s unless both the Appointments module is enabled and "Enable public booking page" is turned on in Settings, and the company slug in the URL is correct. Confirm all three. See Online Booking Portal.

A past appointment seems to have vanished from the list

The appointments list hides Completed, Cancelled, and No Show by default. If a past appointment looks missing, tick those status filter checkboxes above the list to reveal it. See Calendar filters.


????
Still stuck? Walk through the full procedures on End-to-End Workflows, confirm your setup on Settings & Reminders and Services & Staff, and look up any unfamiliar term in the Glossary. If a whole area is missing, it's almost always the module toggle or a permission — start with Permissions & visibility.
Was this guide helpful?

Report a content problem