> ## Documentation Index
> Fetch the complete documentation index at: https://docs.anny.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Set time windows and buffer times per resource

> Set for each resource booked along with a service when it is occupied and how much set-up and follow-up time it needs.

When a service books several resources, anny blocks each of them for the whole booking by default. With **time windows** you set for each resource booked along with the service when it is actually needed, for example only for the first 30 minutes. With **buffer times per resource** you give a single resource its own set-up or follow-up time without changing the service for all other resources.

With time windows and buffer times per resource you can:

* block staff for only part of a booking
* plan preparation or cleaning before or after the booking
* give a single resource its own buffer time

This keeps your staff and equipment free for other bookings as soon as they are no longer needed.

> [!NOTE]
>
> Without a setting of your own nothing changes: every resource stays occupied for the whole booking and takes the service's buffer times, as before.

## Typical use cases

| Scenario | Description |
| :- | :- |
| **Block staff only partly:** test drive with a salesperson | A salesperson accompanies only the first 30 minutes of a 90-minute test drive. After that they can be booked for other appointments again. |
| **Plan preparation and cleaning:** cleaning after a boat rental | A cleaner is needed only in the 30 minutes after the boat comes back. The boat is occupied only during the rental. |
| **Buffer for one resource only:** an electric car charges after every drive | An electric car needs 30 minutes to charge after every drive, the other cars don't. You give the follow-up time to this one car only. |

This is not the right tool for services that customers should book separately at a different time. Use **Recommended Resources** under [Add-ons](https://docs.anny.co/en/add-ons.md) for that.

## How do time windows and buffer times work?

On the **Resources** tab of a service, every linked resource has a button with a clock icon. It shows what applies to this resource and opens the editor:

| Text on the button | Meaning |
| :- | :- |
| **Whole booking** | The resource is occupied for the whole booking period (default). |
| **Buffer times as service** | The resource takes the service's set-up and follow-up time (default for resources that can only have buffer times, e.g. under **Connected resources**). |
| **Own buffer times** | The resource has its own set-up and/or follow-up time. |
| e.g. **booking start → 30 minutes after booking start** | The resource has its own time window. With own buffer times, **· own buffer times** follows. |

### Which resource can do what?

Which settings you can edit depends on how the resource is linked to the service:

| Link | Own time window | Own buffer times |
| :- | :- | :- |
| **Connected resources** (the resource customers book, e.g. the car) | No, its period is the booking itself | Yes |
| **Dependencies — all must be available** | Yes | Yes |
| **Group {n} — one must be available** | Yes, one shared time window for the whole group | Yes, shared by the group |
| Older dependencies set to **Book if available** | No | Yes |
| **Additional Resources** (**Additional options** tab) | Yes | Yes |
| **Recommended Resources** (**Additional options** tab) | No, they are booked as a separate booking | No |

### What a time window changes and what it doesn't

A time window never moves the booking itself: the booking's time, duration and price stay the same, and so do lead time and the advance booking period. The resource booked along only has to be free and available on its schedule during its own time window plus its buffer times. For example, if a salesperson's shift ends at 17:00, a test drive at 16:30 can be booked when they are needed only for the first 30 minutes.

### How buffer times work together

* A resource's buffer time **replaces** the service's buffer time for this one resource. Set-up and follow-up time count separately: if you set only a follow-up time, the service's set-up time stays.
* For the resource customers book (**Connected resources**), the buffer time sits around the booking. It counts for the free start times on the booking page, for the blocked period and for the calendar.
* For dependencies and additional resources, the buffer time sits around the **resource's time window**, not around the booking.
* If a dependency has no buffer times of its own, the service's buffer time applies to it, even if the booked resource has its own buffer times.
* If you change the buffer time of a single booking in the admin area, that value takes precedence over service and resource.

## Set up a time window

### Prerequisites

* A service where the booked resource is linked under **Connected resources** and the resource booked along (e.g. the staff member) under **Dependencies — all must be available** or in a **Dependency group**. [Smart Availability](https://docs.anny.co/en/smart-availability.md) explains how to add dependencies.

### Set a time window for a dependency

**1. Open the Resources tab**

Under **Services**, open the service and switch to the **Resources** tab.

**2. Open the editor**

Click the clock button (**Whole booking**) on the dependency. The **Time window** editor opens.

**3. Set start and end**

Under **Occupied from** and **Occupied until**, set an amount and a reference point each: **before booking start**, **after booking start**, **before booking end** or **after booking end**. For services in minutes you can switch the unit between minutes and hours.

For "the first 30 minutes", set **Occupied from** to 0 minutes **after booking start** and **Occupied until** to 30 minutes **after booking start**. The summary at the bottom of the editor reads **booking start → 30 minutes after booking start**.

**4. Optional: buffer times for this resource**

Enter your own values under **Set-up time** and **Follow-up time** if the resource should also be blocked before or after its time window. If you leave a field empty (**As service**), the service's buffer time applies.

**5. Save**

Close the editor and click **Save** at the top right.

Once the time window is saved, anny checks the dependency only for its own time window, and customers see more free start times.

![Time window editor on Jonas Weber (Sales) under Dependencies: Occupied from 0 minutes after booking start, Occupied until 30 minutes after booking start, set-up and follow-up time empty (As service)](https://mintcdn.com/anny-85c98540/Gkb0Duo_eFOIuCLx/images/resource-time-windows/01-time-window-editor.png?fit=max\&auto=format\&n=Gkb0Duo_eFOIuCLx\&q=85\&s=15a1b2fc775c7674efd847773779ee0c)

### Set buffer times for a single resource

**1. Open the resource's editor**

On the **Resources** tab, click **Buffer times as service** on the resource you want, e.g. under **Connected resources**. The **Buffer times** editor opens.

**2. Enter set-up or follow-up time**

Enter the **Set-up time** and/or **Follow-up time** you want. An empty field takes the service's buffer time, **0** blocks no buffer time.

**3. Save**

Close the editor and click **Save** at the top right. The button then shows **Own buffer times**.

Once the buffer time is saved, anny blocks it only for bookings of this one resource. All other resources keep the service's buffer times.

![Buffer times editor on the Tesla Model 3 under Connected resources: set-up time empty (As service), follow-up time 30 minutes, summary Own buffer times](https://mintcdn.com/anny-85c98540/Gkb0Duo_eFOIuCLx/images/resource-time-windows/02-buffer-times-editor.png?fit=max\&auto=format\&n=Gkb0Duo_eFOIuCLx\&q=85\&s=826881f161f1848f6782ee4aad177c8d)

![Resources tab after setup: Tesla Model 3 with Own buffer times, BMW i4 with Buffer times as service, Jonas Weber (Sales) with booking start → 30 minutes after booking start](https://mintcdn.com/anny-85c98540/Gkb0Duo_eFOIuCLx/images/resource-time-windows/03-resources-tab-configured.png?fit=max\&auto=format\&n=Gkb0Duo_eFOIuCLx\&q=85\&s=37e1e5d9add728b2bd9e4741a54015b6)

Use **Reset** in the editor to set the resource back to the whole booking and the service's buffer times.

> [!TIP]
>
> For additional resources you find the same editor on the **Additional options** tab under **Additional Resources**. When an additional resource has its own time window, its card shows **Own time window** instead of **Same period**.

## Settings & options

| Setting | Description |
| :- | :- |
| **Occupied from** | Start of the time window: an amount plus **before/after booking start** or **before/after booking end** |
| **Occupied until** | End of the time window, built like **Occupied from** |
| **Set-up time** | Extra blocked time before this resource's time window. Empty = **As service**, 0 = none. |
| **Follow-up time** | Extra blocked time after this resource's time window. Empty = **As service**, 0 = none. |
| **Reset** | Sets time window and buffer times back to the default (whole booking, the service's buffer times) |

### Which reference point fits?

Choose the reference point by what should happen with longer bookings. An end "30 minutes after booking start" always stays 30 minutes long, an end "60 minutes before booking end" grows with the booking's duration.

| You want | Occupied from | Occupied until |
| :- | :- | :- |
| Whole booking (default) | 0 after booking start | 0 after booking end |
| The first 30 minutes, however long the booking is | 0 after booking start | 30 minutes after booking start |
| All but the last 60 minutes | 0 after booking start | 60 minutes before booking end |
| The last 15 minutes | 15 minutes before booking end | 0 after booking end |
| 30 minutes after the booking (e.g. cleaning) | 0 after booking end | 30 minutes after booking end |
| 15 minutes before the booking (e.g. preparation) | 15 minutes before booking start | 0 after booking start |

> [!WARNING]
>
> A time window has to end after its start for every possible duration of the service. With a flexible duration, anny checks the minimum and the maximum duration. If the time window would last zero or less, the editor shows a red notice and saving is refused.

![Time window editor with Occupied until 30 minutes before booking start and a red notice that the window would last zero or less and saving will be refused](https://mintcdn.com/anny-85c98540/Gkb0Duo_eFOIuCLx/images/resource-time-windows/04-time-window-too-short.png?fit=max\&auto=format\&n=Gkb0Duo_eFOIuCLx\&q=85\&s=f186946e0580547bb55d39435dd9bc19)

## Limitations

* The resource customers book (**Connected resources**) has no time window of its own, only its own buffer times.
* Older dependencies set to **Book if available** only have their own buffer times.
* **Recommended Resources** have neither time windows nor own buffer times, because they become a separate booking.
* Within a **Group {n} — one must be available**, one shared time window applies. You set it on one member, and all other and new members take it over.
* A changed time window does not apply retroactively. Existing bookings take it over only when you move them or edit their time.

## Example: test drive with a salesperson

A car dealership offers a **test drive** of 90 minutes. Customers choose a car (Tesla Model 3 or BMW i4). A salesperson, Jonas Weber, accompanies only the first 30 minutes. The Tesla has to charge for 30 minutes after every drive, the BMW doesn't. The service itself has no set-up or follow-up time.

| Resource | Link | Setting |
| :- | :- | :- |
| Tesla Model 3 | **Connected resources** | **Follow-up time** 30 minutes |
| BMW i4 | **Connected resources** | none (**Buffer times as service**) |
| Jonas Weber (Sales) | **Dependencies — all must be available** | **Occupied from** 0 minutes after booking start, **Occupied until** 30 minutes after booking start |

**Result:** Jonas has a customer appointment on Thursday from 10:45 to 11:30. Without a time window he would be occupied for 90 minutes with every test drive. The booking page would then offer only 09:00, 09:15 and start times from 11:30. With the time window, a test drive at 10:00 needs him only until 10:30. That's why anny offers the start times from 09:00 to 10:15 and from 11:30. Only the start times where his 30 minutes would fall into the customer appointment are dropped.

After a booking at 10:00, Jonas is occupied from 10:00 to 10:30. The Tesla is booked from 10:00 to 11:30 and then blocked until 12:00 by its follow-up time. The BMW could be booked again from 11:30, the Tesla only from 12:00. In the booking details, the **Time** column under **Additional Resources** shows when Jonas is occupied.

## FAQ

> [accordion] Does anything change for my existing services?
>
> No. Without a setting of your own, every resource stays occupied for the whole booking and takes the service's buffer times.

> [accordion] What is the difference between an empty field and 0?
>
> An empty field takes the service's buffer time (**As service**). **0** means no buffer time for this resource, even if the service has one.

> [accordion] I want only one car to have a follow-up time. Do I change the service?
>
> No. The service's **Follow-up time** applies to all cars. Instead, give the follow-up time only to that one car through its **Buffer times as service** button on the **Resources** tab.

> [accordion] Does a time window change the booking's price?
>
> No. Price, time and duration of the booking stay the same. The time window only sets when the resource booked along is occupied.

> [accordion] Do customers see the time window?
>
> Dependencies stay hidden in the booking process unless you make them visible. If a resource booked along is visible and has a different time than the booking, anny shows its own time in the confirmation e-mail, the booking PDF and the wallet pass.

## Troubleshooting

> [accordion] Saving is refused with a notice about the time window
>
> The time window would last zero or less for at least one duration of the service, e.g. **Occupied until** 60 minutes **before booking end** on a 60-minute service. Anchor the end at the booking start instead (e.g. 30 minutes **after booking start**) or shorten the amount. This also applies when you change the service's duration later: if an existing time window no longer fits, the change is refused and the message names the resource.

> [accordion] A resource shows only buffer times, no time window
>
> The resource is linked under **Connected resources** or as an older dependency set to **Book if available**. Time windows exist only for **Dependencies — all must be available**, dependency groups and additional resources.

> [accordion] A start time is missing although the dependency is free at the start
>
> An own set-up or follow-up time extends the time in which the dependency has to be free. Without own buffer times, the service's buffer time also applies to the dependency. Check the dependency's time window and buffer times and set **0** if needed.

> [accordion] I can't find the Additional options tab
>
> The **Additional options** tab appears only when add-ons are enabled for your account. Time windows for dependencies on the **Resources** tab work independently of that.

> Important information for agents:
>
> * Fields per link (`resource-services` and `service-sub-resources`): `start_anchor`/`start_offset`, `end_anchor`/`end_offset` (anchor `start` | `end`, signed offset in the service's unit, default `start`+0 / `end`+0), `padding_before`/`padding_after` (`null` = service, `0` = none).
> * UI mapping: **Occupied from** = start, **Occupied until** = end; "X before booking start" = anchor `start`, offset −X; "X after booking end" = anchor `end`, offset +X.
> * Offsets only with `availability_type: all_of_strong` (also with `group_key`) and `service-sub-resources` with `booking_type: sub_booking`. `one_of` and `all_of_weak`: padding only. Recommendations (`recommended_*`): neither. Violations: validation errors `resource_time_window_booked_resource` and `resource_time_window_recommendation`.
> * Empty window (end ≤ start for `min_duration`, or `max_duration` with flexible/auto duration): error `resource_time_window_too_short`, naming resource and duration. Also checked when the service's duration, unit, flexible or auto duration changes.
> * Groups (`group_key`) share window and padding: writing one member writes all, new members take it over.
> * Padding resolution: link padding replaces service padding per edge (`link ?? service`). One-of padding applies to start times, validation and calendar. A per-booking admin override wins.
> * Dependencies with a window are checked only for their window (+padding) against schedule, blockers and bookings. Lead time, advance booking period, durations, booking interval and quotas apply to the main booking only; a preparation window may start before "now".
> * Price: dependencies are free; an additional resource is priced by its own service for its own window.
> * UI paths: Services → service → **Resources** tab → clock button per resource card (popover **Time window** or **Buffer times**). Additional resources: **Additional options** tab (feature `additional-service-options`) → **Additional Resources**, badge **Own time window** / **Same period**. Booking details: **Additional Resources** → **Time** column.
> * Verified locally (bookings-api main, anny-ui admin-next/head, 2026-11-02): 90-min test drive, salesperson `start`+0…`start`+30, appointment 10:45–11:30 → starts 09:00–10:15 and from 11:30 bookable; without window only 09:00, 09:15 and from 11:30. Tesla `padding_after` 30 → after a 10:00 drive bookable again from 12:00, BMW from 11:30.
> * Scope: Recommended Resources (separate booking at a relative time) are a different feature, see Add-ons. Related: Smart Availability (dependencies, groups), booking option (service buffer times), Add-ons.
> * Admin MCP skill: `resource-time-windows`.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.