Skip to content
Documentation sections
Services

Service Form

What this screen is for

The form for creating a new service or editing an existing one. The add action on the service list, or tapping an existing service, opens here; its name, duration, capacity, price, active state, recurring-appointment eligibility and its own approval window and reschedule rules are set here.

When you would use this

The business owner comes here when a newly decided service has concrete details to enter — its name, duration, price — or when a supply or cost change means an existing service's price, duration or rules need updating. It's also where they come to take a service out of the catalogue entirely once it's no longer offered.

Who sees it

Only the user matching the owner field on the business document can open this screen; no one else can create or edit a service.

Where it lives

The screen exists on both the mobile app and the web panel; both offer the same set of fields and write the same service document.

What you can do here

Name and description

A service's name is required; the description is optional.

Image

A cover image can be picked, or an existing one removed; a removal request stays in effect until a new image is picked.

Duration and capacity

Both are required and must be positive whole numbers; duration is in minutes, capacity is how many appointments the same slot accepts together.

Approval window

Left blank, the business's default approval window is inherited; filled in, it applies only to this service.

Reschedule rules

An allow/disallow/inherit choice, alongside a notice period, a proposal validity window and a move-count limit; all four inherit the business default when left blank.

Price type

A fixed amount, a "starting from" amount, free text, or empty; for the amount types, the currency is chosen from the business's enabled currencies.

Active state and recurring frequency

Whether the service is active is a switch; its eligibility for weekly and monthly recurring requests are two separate checkboxes.

Delete action

Visible only in edit mode; removes the service after asking for confirmation.

Double submission is blocked

On the panel, a second click or submission is ignored while a save or delete is already running; creating a service mints a fresh document id on every call, so without this guard a second trigger during an in-flight image upload could create a separate service.

On mobile, only the save action is guarded this way; the delete button can still be pressed while a save is in flight, and has no guard of its own against a repeated tap.

An edit for a mismatched id is refused

If the service id in the address bar is not in the list, the panel shows a "not found" message instead of opening a blank creation form; otherwise saving would create a new document in place of the service believed to be edited.

This scenario cannot arise on the mobile form, which opens directly with the selected service — an address-bar id mismatch is panel-specific.

Fully read-only when suspended

If the business has been suspended by an administrator, every field and the save/delete actions are disabled.

The mobile form carries no such restriction.

What the server accepts and refuses

Field validity is a form-only concern

The Firestore write rule limits itself to who may write; it never confirms the service name is filled in, or that duration and capacity are positive whole numbers. Only the app's form checks those.

A blank field means inherit, not zero

Leaving the approval window or a reschedule field blank writes null to the document, not 0; when creating an appointment, the server applies the shortest effective value (approval window) or the strictest rule (reschedule) across the services in the basket, and a service that inherits follows the business's current default.