# Every setting on a service

> The complete reference for a service — all four pricing models, per-person prices and durations, buffers, combos, add-ons, resources and archiving. Every field, what it changes, and what happens when it is left empty.

_Last verified: 2026-09-10. Source: https://bookodile.com/docs/reference-services_

A service is the thing a customer books, and it is the most configurable object
in Bookodile. This page lists every setting on one, what each changes, and what
happens when it is left alone. Where a setting has a name in the data, it is
given in `code`, so an assistant answering a question about your account can be
precise.

Services live at **Services** in the dashboard. The settings below are on the
add and edit screens; ordering and archiving are on the list itself.

## The two price settings, and why there are two

The single most common confusion on this page. There are two independent
settings and they answer different questions:

| Setting | Question it answers |
|---|---|
| **Pricing model** (`pricing_model`) | How the price is *worked out* when someone books |
| **Price type** (`price_type`) | How the price is *displayed* before they book |

So a service can advertise "from €25" while the real charge is resolved from
whichever person the customer picked. That is deliberate, and it means changing
what is displayed does not change what is charged.

### The four pricing models

**Fixed** (`pricing_model: fixed`). One price for everyone, held in `price`.

**Per employee** (`per_employee`). Each assigned person has their own price for
this service. The customer sees each person's price while choosing.

**Per category** (`per_category`). The price is stored once per *category of
team member* rather than per person, so a new hire is priced the moment you put
them in a category. Two prices to maintain instead of eight.

**Hourly** (`hourly`). A rate per hour in `hourly_rate`, with `min_hours` and
`max_hours` bounding what the customer may choose. The customer picks the
length and the price is the rate times the hours. Used for rooms, studios,
courts and equipment rather than treatments.

> **Worked example — the same setting in three trades.** A barbershop puts its
> master barber at €35 and its junior at €20 for the same cut: *per employee*.
> A hair salon with eight stylists in two grades sets Senior €45 and Junior €30
> once and never touches it again when someone joins: *per category*. A photo
> studio renting its space at €50 an hour, minimum two, maximum eight: *hourly*.

### What each price type shows, and what it charges

`price_type` changes the label on your booking page. Three of the five leave the
amount alone. The other two say there is nothing to charge, and they are
honoured wherever they appear.

| Price type | The customer sees | The booking is recorded at |
|---|---|---|
| Fixed | `€25` | `price` |
| From | `€25+` | `price` — the floor |
| Range | `€30 – €60` | `price` — the **low** end. `price_max` is never charged |
| Free | "Free" | Zero, on every pricing model |
| On request | "On request" | Zero on a fixed price. The person's own rate on per-person or per-category pricing |

Three of these are worth pausing on.

**Range** shows a span and records the bottom of it. The span is a quote, not a
calculation: whoever performs the service adjusts the price afterwards if it
lands higher. If you never adjust it, you are billing the floor.

**On request** on a fixed price records nothing to pay. The booking arrives at
zero and you set the amount once you have seen the job. Moving a €25 service to
"On request" does not carry the €25 over: the customer was shown no figure, so
they are not billed one. A groomer quoting per animal and a garage quoting per
repair both work this way — the slot is booked, the price is agreed in person.

On per-person or per-category pricing, "On request" hides the figure from the
service list only. Each person's own rate is still real and still charged, and
the total on the confirmation step shows that number before the customer
commits. Use it where a rate is not what you want a visitor to read first: a
clinic listing consultants and a studio listing senior stylists both price by
who does the work without advertising the spread.

**Free** genuinely charges nothing, and it beats the pricing model. A service
marked Free that also carries per-person rates is free for everyone on it, and
free by the hour costs nothing however many hours are booked. The option appears
on fixed pricing; a service that reaches another model still marked Free — by
changing how it is priced afterwards — stays free. Saving a service as Free asks
you to confirm, because it is easy to reach by accident.

## Duration, and how it differs from price

**Duration** (`duration`) is how long the service takes, in minutes, from 5 to
480.

**How long does this service take** (`duration_mode`) has two settings, exactly
like pricing:

- **Same for everyone** — one duration for the whole team.
- **Per employee** — each person can carry their own duration for this service.

**A missing per-person duration and a missing per-person price behave
oppositely, and this is the most useful thing on the page:**

| | Per-person **price** missing | Per-person **duration** missing |
|---|---|---|
| On the settings screen | Blocks saving | Saves fine |
| On your booking page | That person **disappears from the picker** | That person is offered, timed by the service's own duration |
| Meaning | Broken setup | "Same as everyone" |

That asymmetry is on purpose. A missing price has no correct answer, so the
product refuses to guess and hides the person rather than letting a customer
reach a dead end. A missing duration has an obvious correct answer — the
service's own — so it is simply used.

The practical consequence is that per-person duration is **additive**: switch
the mode on, type a longer time next to the one person who needs it, and
everybody else is timed exactly as they were before. Nothing to backfill.

> **Worked example — why price and duration are separate axes.** In a
> barbershop, a junior barber charges less than the master *and* takes longer
> for the same cut: both settings change. In a physiotherapy clinic every
> practitioner charges the identical published fee, but the newest one is given
> 60 minutes for an assessment the senior does in 45: duration changes, price
> does not. Tying the two together would force one of these shops to lie.

Per-employee duration does not apply to combos, where each stage carries its
own timing, or to hourly services, where the customer chooses the length.

## Buffer time

**Buffer time** (`buffer_time`), 0 to 120 minutes, is real time that blocks your
calendar after the service ends — for cleaning down, resetting a room or taking
a breath. The customer never sees it and is never charged for it.

A 30-minute service ending at 10:30 with a 15-minute buffer means the same
person cannot start again until 10:45. If the service used a room, the room is
held for the buffer too.

**The buffer is allowed to run past your closing time.** A 30-minute service at
a shop closing at 17:00 can start at 16:30; the buffer simply extends past
close and blocks nothing, because there is nothing after it. Only the service
itself must fit inside opening hours.

## Who performs it

The **Who does this service** card is the list of people who can be booked for
it. Three things have to be true before a customer is offered someone: the
person is active, their role is listed as a service provider, and they are
ticked here.

Assignment is per service. There is no "assign to everything" that keeps
applying as you add services.

**If nobody is ticked, nobody can be booked for it**, and the service stays off
your booking page until someone is. That includes a one-person business: a
service missing from your booking page is often one you are not ticked on.

When a customer does not choose a person, Bookodile gives the booking to the
first eligible one who is free, in the order below — never by who finishes
earliest, and never spread evenly across the team. Ordering by finish time
would systematically starve whoever is slowest, which is usually the newest
member of the team.

### Who customers see first

Under the people ticked, **Who customers see first** shows the order your
booking page lists them in. It is also the order "Anyone" goes through: the
first person in it who is free at that time gets the booking.

By default a service follows your **team order** — the order you drag in
**Settings → Members** (Booking settings shows the same list) — or, when its
category has a custom order of its own, that one. The panel shows which, and
the list can't be dragged while it follows one of them.

**Custom order for this service** (`team_order`) turns that into an
order of its own: the list becomes draggable, marked **Custom order**, and
only this service uses it. Turning the switch off goes back to the category's
or the team order when you save. It is off for every service until someone
turns it on.

- Someone ticked later, or hired later, comes last until you move them.
- Someone who stops doing the service is skipped, and keeps their place: tick
  them again and they are back where they were. Someone switched off keeps
  their place the same way.
- The order never offers anyone who can't be booked for the service — no
  price for them on a per-person or per-category price, or no room, chair or
  machine open to them.
- An add-on offered while booking uses **its own** order, not the main
  service's person: a hair wash after a haircut can go to a junior even when
  the haircut was with the senior.
- A combo has no order: each stage already names its person.
- With one person doing the service there is nothing to order, and the panel
  says so.

Why it exists: one order for the whole team can't be right for everything. A
barbershop lists its master first for haircuts — customers pick by price — but
wants a cheap hair wash to go to a junior. A gym puts its senior coach first
for personal training and its newest coaches first for the free intro session.

## Rooms, chairs and equipment

The **Resources** card links a service to the things it needs — a room, a
chair, a machine. The card only appears once you have created at least one
resource.

A service can also inherit resources from its category, shown as read-only
chips. The pool a booking actually uses is the union of both.

On a **new** service the resources most of your existing services already need
are ticked for you, and the card says why. Untick them for the one service that
does not need them — an online consultation, a visit at the customer's place.

Underneath sits **Who can be booked, and where**: one line per person who
performs the service, showing which resource each of them would be given and
which they fall back on, and how many bookings of the service can run at the
same time. It is the two cards above it read together, and it is the screen
that tells you a team member has been shut out — if every resource the service
needs is kept for other people, that person is named in amber and is not
offered for it. Who a resource is kept for is set on the resource:
[who can be booked here](/docs/reference-resources#who-can-be-booked-here), and
[sharing rooms, chairs and equipment](/docs/sharing-rooms-and-equipment) walks
through the shapes it is for.

**No employee needed** (`skip_employee`) removes the "who will serve you?" step
entirely, so availability comes from the resource alone. That is how a studio
rents a room, or a venue rents a court, with nobody attending.

> **Worked example.** A nail studio has six technicians and four manicure
> stations: the stations are resources, and the fifth simultaneous booking is
> refused however many staff are free. A yoga studio rents its second room by
> the hour with nobody teaching: that service has "no employee needed" ticked
> and a room attached.
>
> **And when the equipment is not interchangeable.** A barbershop links its
> haircut to two chairs, one of them kept for the master barber. The card then
> reads: the master into his own chair, each junior into the shared one, and
> two haircuts at a time. A clinic where one practitioner owns the back room
> reads the same way. Add a team member with nowhere to sit and they appear in
> amber, which is the only place that state is visible before a customer
> notices it.

Detail: [every setting on a resource](/docs/reference-resources).

## Categories

A category groups services on your booking page and sets an add-on default for
everything inside it. `service_category_id` is the link; a service with no
category renders in an unlabelled group at the top of your page.

**A category can set who customers see first for all its services.** On the
category's page, **Who customers see first** shows your team order, read-only,
until **Custom order for this service category** (`team_order` on the category)
is turned on. Then every service in the category without a custom order of its
own lists its people, and gives "Anyone" bookings, in that order. A service
with its own custom order keeps it, and the card names those services. A
service moved to another category follows the new category's order, unless it
has its own. Combos don't count: their stages have fixed people.

**Archiving a category archives the services inside it**
(`archived_with_category` records which ones went that way, so restoring the
category brings back exactly those and not any service you had archived
individually beforehand).

**Restoring a single service out of an archived category** brings it back on
its own. It is bookable again and renders in the unlabelled group at the top of
your booking page, and of your services list, until you restore the category —
then it rejoins it. Only a service's own **Active** switch decides whether it
can be booked; archiving a category archives the services inside it and hides
the heading, it is not a second switch. A service you restore by hand is no
longer counted as archived with its category, so archiving it again on its own
keeps it archived through a later category restore.

## Combos

**Combo** (`is_combo`) chains several stages into one booking. Each stage has
its own name, its own length, and optionally its own team member and its own
room — so a colour-and-cut can be two people back to back, and each person is
occupied only for their own stage.

Three things a combo forces, because they cannot mean anything else:

- The price becomes **fixed** — a combo cannot be priced per person.
- The total `duration` is the sum of the stages, overwriting whatever was
  typed.
- Per-employee duration is switched off; the stages carry the timing.

> **Worked example.** A hair salon books colour with the colourist, then a
> 20-minute development with nobody, then a cut and finish with a stylist. The
> colourist is free during the development and can start someone else; the
> stylist is only occupied for the last stage.

## Add-ons offered while booking

Add-ons are extra services offered during the booking flow, either listed
directly on a service or inherited from a category.

**Maximum add-on services per booking** (`max_upsells`) caps how many a
customer may attach. A service with no limit of its own falls back to its
category's default; with neither set, and add-ons available, the booking page
offers up to three. `upsell_group_order` records the order the add-on groups
appear in when they come from several categories.

Add-ons are scheduled **after** the service they hang off. Anything that
naturally happens first cannot be an add-on, however much you would like to
sell it that way. The pattern that works is a base service that deliberately
leaves something out, sold back at the end: a cut without a wash, with the wash
and the wash-plus-massage as the add-ons.

An hourly service can never offer add-ons.

### A service offered only as an add-on

**Only as an add-on** (`addon_only`, under Extras & Settings, off unless you
switch it on) takes a service out of your booking page's list of services,
while customers can still add it on the Extras step of every service that
offers it, whether that service lists it itself or gets it from its category.
It is still a real service: its price, its length, who does it and its
bookings don't change, and your team can still book it on its own in the
calendar.

What changes when it is on:

- Your booking page and the embedded booking widget don't list it. A link that
  names it, like a Book button on an old website or a rebooking email, opens
  the list of services instead.
- A promotion on it doesn't put it in the promotion's block at the top of the
  list. Its discount still shows on the Extras step.
- Your website lists it with its price, but without a Book button and without
  a page of its own.
- The service's own page lists every service that offers it, with a link to
  each.

It reaches customers only through the services that offer it. When none does
— nothing lists it, or every service that did is archived or can't be booked —
no customer can book it online. Its page says so, the Services list marks it
**Not offered**, and archiving or switching off the last service that offered
it tells you before you confirm. Saving a service that stops offering it warns
you the same way.

A combination of services or a service priced by the hour can't be an add-on,
so it can't be add-on only either.

This is different from archiving. Archiving a service takes it off your booking
page completely, add-ons included. Add-on only keeps it on sale, but only as
an extra.

> **Worked example.** A barbershop sells a hair wash only with a cut: the wash
> leaves the list, and every haircut offers it on the Extras step, while the
> receptionist can still book a walk-in wash on its own. A nail studio does the
> same with nail art, offered only with a manicure.

## A photo of the service

**Photo** (`photo_url`), on the service's screen under the description, is one
picture of the service. It is cropped to a square as you add it. Empty, the
service has no photo, and nothing else changes.

- **On your booking page** it sits beside the service's name on the first step.
  A tap on the photo opens it larger under the service, without choosing it; a
  tap on the rest of the card chooses the service. Once any service on the list
  has a photo, a service without one shows its colour and first letter in the
  same place, so the names line up. Add-ons on the Extras step show theirs too,
  at the same size, without opening larger.
- **On your website** it is the service's cover — the photo leading its card in
  the Services section's Cards layout — when the website has no photo of that
  service of its own. A photo just for the website wins over it; the **Change
  image** button on the cover in the website editor's preview offers both, and
  switches back. See [Your website](/docs/your-website#photos).
- **Changes show straight away**: on the booking page, and on a published
  website without pressing Publish. A photo just for the website waits for
  Publish like the rest of the website.
- **Who can change it**: anyone whose role can manage services. From the
  website editor too — someone who can edit the website but not services can
  add a photo just for the website, not change the service's own.

> **Worked example — where a photo earns its place.** A nail studio puts a photo
> of each style on its service — French, ombré, chrome — so a customer picks the
> look rather than a name, and the same photos lead the cards on its website. A
> massage practice leaves them off: one more picture of a treatment table per
> service tells nobody anything, and the list stays text.

## The rest of the fields

**Name** (`name`) and **Description** (`description`). The description shows as
two lines under the service name on your booking page and is cut off after
that, with no way for the customer to read the rest — keep it short.

**Translations** (`translations`) are the service's name and description in
your business's other languages
([Other languages your customers read](/docs/reference-business-profile#other-languages-your-customers-read)
— the same list as your [website's](/docs/your-website#languages)). Bookodile
writes them within a few minutes of a language being added, and again whenever
the name or description changes — a changed original drops its old translations,
which are then written afresh. Under the name and description, one line says
which languages they are translated into, and **See translations** shows them to
correct by hand, saved with the service; the website editor's *See and edit the
texts* edits the same ones. A correction stays until the original changes. Your
booking page shows the name and description in the language the customer reads
it in, and the emails about a booking use the translated name; a stage of a
combined service has its name translated the same way. With no other languages,
there are none, and everything shows the name and description as you typed them.

**Colour** (`color`) is the block colour on your calendar. On the booking page it
shows only where a photo would be: once any service has a photo, a service without
one shows its colour and first letter in its place.

**Active** (`is_active`) is the archive switch. An archived service disappears
from your booking page and keeps every booking it ever had. It disappears from
the add-ons too: a service that offered it as an add-on no longer does. To
keep a service as an extra but off the list, use
[Only as an add-on](#a-service-offered-only-as-an-add-on) instead. Staff can no longer
choose it for a new booking either, but opening one of its existing bookings
shows it, marked archived, and that booking saves with its service and length
unchanged. Restore the service to offer it again.

**Requires online payment** (`requires_payment`), and the deposit fields
(`deposit_type`, `deposit_amount`), exist in the data but are **not available**:
Bookodile does not process payments, no screen writes them, and nothing acts on
them. See [Money](/docs/payments-and-money).

## Worked examples

**A barbershop, four barbers, three chairs.** Haircut is priced *per employee*
— master €35, senior €28, two juniors €20 — and timed *per employee*, with the
juniors at 45 minutes against the master's 30. Buffer 5 minutes. The three
chairs are resources, so the fourth simultaneous booking is refused even though
four barbers are on shift. Beard trim is a €12 fixed-price add-on on the
haircut, so it is offered after it and extends the appointment.

**A hair salon, eight stylists, two grades.** Every service is priced *per
category*: Senior and Junior, set once. Colour is a combo — colourist, then a
25-minute development stage with nobody assigned, then cut and finish — so the
colourist takes another client during the development. Blow-dry is an add-on
with a 10% upsell discount.

**A nail studio, six technicians, four stations.** Services are fixed-price
because the price does not vary by person. The four stations are resources with
capacity one each, which is also what the bill is based on: four booking spots,
not six technicians. Gel removal is an add-on capped at two per booking.

**A physiotherapy practice, three rooms.** Assessment is 60 minutes, follow-up
30, both fixed-price. Duration is *per employee* so the newest practitioner
gets 75 minutes for an assessment. Each service needs a treatment room, so
three concurrent appointments is the ceiling regardless of who is working.

## Limits

- **A service uses one pricing model at a time.** There is no "per employee,
  except on Tuesdays".
- **Price and duration modes are set separately.** Being priced per employee
  does not make a service timed per employee.
- **There is no per-service opening window.** A service cannot be restricted to
  certain days or times of its own. To offer something only on Tuesday
  evenings, attach it to a resource whose working hours are just those windows.
- **`price_max` is display only** and is never the amount recorded.
- **Deposits and required payment are not available**, whatever the settings
  screen's data suggests.
- **Add-ons come after the service**, never before it.
- **"Anyone" goes to the first free person in the order**, never to whoever
  has the fewest bookings that day. There is no setting that spreads bookings
  evenly across the team.
- **One photo per service.** More photos of a service belong on your website, in
  a gallery category linked to it; the booking page shows only the one.
- **A service offered only as an add-on needs a service that offers it.**
  Without one, no customer can book it online. Add-on only is about your
  booking page: your team still books it on its own.
- **An hourly service cannot have add-ons**, and cannot use per-employee price
  or duration.
- **Archiving is not deleting.** Bookings keep their service, and the history
  stays intact.
- **Who can be booked where is not set here.** The service page shows the
  outcome; the setting lives on each resource.
- **A person shut out of a service's resources is not offered for it**, however
  they are ticked on "Who does this service". They stay bookable for everything
  that needs no resource.
- **Bookodile does not take the money.** Everything here decides what is quoted
  and recorded; collecting payment is between you and your customer.
