> For the complete documentation index, see [llms.txt](https://ovatheme.gitbook.io/brw/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ovatheme.gitbook.io/brw/create-a-product/rental-type-config/by-appointment.md).

# By Appointment

<figure><img src="https://4082525133-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fa2OkFafBNY1uvQO4naAL%2Fuploads%2FtuALn8ei6UFA3TxxLj8X%2Fapp.png?alt=media&amp;token=12446ce1-2e75-4c62-b7d0-bfdd51e1db9e" alt=""><figcaption></figcaption></figure>

The **Rental by Appointment** type replaces the free date-range picker with a **time slot selector**. You define available slots for each day of the week (Monday through Sunday) — each with its own label, start/end time, price, and quantity. Customers pick a date and choose from the slots available on that day.

{% hint style="info" icon="lightbulb-exclamation" %}
Use this type for any service where sessions have a fixed start time and duration: spa treatments, medical appointments, photography sessions, tutoring hours, studio bookings, and similar.
{% endhint %}

| Aspect             | Rental by Day     | Rental by Appointment                    |
| ------------------ | ----------------- | ---------------------------------------- |
| Customer selects   | Free date range   | A date + a time slot                     |
| Duration           | Customer-defined  | Fixed by slot Start–End time             |
| Pricing unit       | Price per day     | Price per slot                           |
| Seasonal overrides | Special time (ST) | Special Timeslots (override slot prices) |
| Inventory          | car\_count stock  | Quantity per slot (per day)              |
| Drop-off date      | Customer picks    | Auto from slot end time                  |
| GD / Daily plan    | ✓                 | — Not available                          |
| Locations          | ✓                 | — Not available                          |

## 1: Quick Start

{% stepper %}
{% step %}

### Add General fields

Read in [overview](/brw/create-a-product/overview.md)
{% endstep %}

{% step %}

### [Choose Rental Type](#id-2-choose-rental-type)

{% endstep %}

{% step %}

### [Pricing Settings](#id-3-pricing-settings)

{% endstep %}

{% step %}

### [Shared Fields](#id-4-shared-fields)

The following fields are shared across multiple rental types.
{% endstep %}

{% step %}

### [Common Fields](#id-5-common-fields)

The following fields are shared across all rental types.&#x20;
{% endstep %}

{% step %}

### [Customize Fields in Product Editing](#id-6-customize-fields-in-product-editing)

You can add/remove fields in product editing.
{% endstep %}

{% step %}

### Publish

Set a WooCommerce Regular Price for display purposes, then click **Publish**. The actual booking price is always calculated by BRW settings.
{% endstep %}
{% endstepper %}

## 2: Choose Rental Type

* Step 1: Add new product
* Step 2: Setup&#x20;
  * Product data: Rental
  * Rental Type: Appointment

<figure><img src="https://4082525133-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fa2OkFafBNY1uvQO4naAL%2Fuploads%2FeTAg9nwdIsiw5c627RWZ%2FScreenshot%202026-06-22%20at%2016.51.36.png?alt=media&amp;token=b178b0f2-6a39-4d33-be9b-df86c356761a" alt=""><figcaption></figcaption></figure>

## 3: Pricing Settings

### 3.1 Time Slots (per weekday) <a class="button primary">time-slots</a>

Define the available booking slots for each day of the week. Each day has its own independent table of slots. Days with no slots configured are treated as unavailable.

<a class="button secondary">Mon</a><a class="button secondary">Tue</a><a class="button secondary">Wed</a><a class="button secondary">Thu</a><a class="button secondary">Fri</a><a class="button secondary">Sat</a><a class="button secondary">Sun</a>

**Use Location** (`use_location`): Checkbox at the top of the Time Slots section. When enabled, a *Location* column appears in every day's slot table, allowing each slot to be tied to a specific place (e.g. Room A, Branch 2).

**Per-day slot table columns** — meta key pattern uses `{day}` = `monday`, `tuesday`, … `sunday`:

| Column   | Meta key                       | Description                                                                                                                        |
| -------- | ------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------- |
| Label    | `time_slots_label[{day}][]`    | Optional display name for the slot shown to customers (e.g. "Morning Session", "Slot A"). Leave blank to show only the time range. |
| Location | `time_slots_location[{day}][]` | Optional location name for this slot. Only visible when **Use Location** is enabled.                                               |
| Start    | `time_slots_start[{day}][]`    | Start time of the slot (time input, e.g. `09:00`). Shown to customers in the slot selector.                                        |
| End      | `time_slots_end[{day}][]`      | End time of the slot (time input, e.g. `10:00`). Optional — if blank, only the start time is displayed.                            |
| Price    | `time_slots_price[{day}][]`    | Price for this slot. This is the booking price charged when a customer selects this slot.                                          |
| Quantity | `time_slots_quantity[{day}][]` | Maximum number of simultaneous bookings allowed for this slot on any given day. Acts as per-slot inventory.                        |

{% hint style="info" %}
You can add multiple slots per day. For example, Monday can have a 09:00–10:00 slot at $50 (qty 2) and a 14:00–15:00 slot at $60 (qty 1). Each slot is booked independently.
{% endhint %}

{% hint style="danger" %}
Days with **no slots configured** will appear as unavailable in the date picker — customers cannot select those dates. To close a specific date, use the Disabled Dates feature in Common Features → Availability.
{% endhint %}

### 3.2 Special Timeslots (ST) <a class="button primary">special-timeslots</a>

Override the price of **all** slots within a specific date-time window. When a booking date falls inside an ST window, every slot on that date charges the ST price instead of its configured slot price.

| Column     | Meta key              | Description                                                                                           |
| ---------- | --------------------- | ----------------------------------------------------------------------------------------------------- |
| Price      | `special_price[]`     | The override price applied to all slots during this window. Replaces individual slot prices entirely. |
| Start date | `special_startdate[]` | Start of the special window (datetime picker — date + time).                                          |
| End date   | `special_enddate[]`   | End of the special window (datetime picker — date + time).                                            |

{% hint style="success" %}
**Important:** ST overrides *all* slot prices within the window — there is no per-slot ST price. Every slot on a date inside the window charges the same ST price. Slot availability (Quantity) is unaffected.
{% endhint %}

{% hint style="info" icon="lightbulb-exclamation" %}
**Example:** Holiday surcharge — Dec 24 00:00 → Jan 2 00:00 at $80. Even if Monday normally has a $50 slot and a $60 slot, both will charge $80 during this period.
{% endhint %}

### 3.3 🏆 Pricing Priority

When a booking date falls within a Special Timeslot window, that price takes over. Otherwise the individual slot price applies:

<a class="button primary">Special Timeslots (ST) price</a> > <a class="button primary">Time slot price (weekly table)</a>

{% hint style="success" icon="square-check" %}
**Example:** Spa has Monday slots at $50 and $70. A Special Timeslot is set for Dec 25–Jan 1 at $90. A customer booking any Monday slot between Christmas and New Year pays **$90** regardless of which slot they pick.
{% endhint %}

## 4: Shared Fields

The following fields are shared across multiple rental types and are documented on the **Shared Fields** page to avoid repetition.&#x20;

Appointment type has a minimal set of shared fields — no Locations, no Drop-off date (slot end time determines it), no Inventory (slots have their own Quantity).

Click any card to go directly to that section.

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-cover data-type="image">Cover image</th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Round-trip</strong></td><td><em>Toggle + extra fee</em></td><td data-object-fit="contain"><a href="https://4082525133-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fa2OkFafBNY1uvQO4naAL%2Fuploads%2FsziJN9pVOG114t07WPnG%2Fround-trip.png?alt=media&amp;token=3d7ed259-2342-46fb-a0cc-23b3f4d7177e">round-trip.png</a></td><td><a href="/brw/create-a-product/shared-fields/location/round-trip.md">Round-trip</a></td></tr><tr><td><strong>Guests options</strong></td><td><em>show/hide guest</em></td><td data-object-fit="contain"><a href="https://4082525133-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fa2OkFafBNY1uvQO4naAL%2Fuploads%2Fzp9hD4p7APLXBG7AQNDE%2Fcake.png?alt=media&amp;token=28b10c9d-3897-4dde-a5a0-bcfd35818ab3">cake.png</a></td><td><a href="/brw/create-a-product/shared-fields/guests/guest-option.md">Guest option</a></td></tr><tr><td><strong>Guests fields</strong></td><td><em>Form fields + min/max</em></td><td data-object-fit="contain"><a href="https://4082525133-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fa2OkFafBNY1uvQO4naAL%2Fuploads%2FSghSiWEVGFG4kkmH73j0%2Fguest-list.png?alt=media&amp;token=98f112fc-4a52-483d-9fb2-811772f32bf6">guest-list.png</a></td><td><a href="/brw/create-a-product/shared-fields/guests/guests-pricing-and-limits.md">Guests (pricing &amp; limits)</a></td></tr><tr><td><strong>Pick-up date</strong></td><td>Appointment date selector</td><td data-object-fit="contain"><a href="https://4082525133-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fa2OkFafBNY1uvQO4naAL%2Fuploads%2FhimLDbxBkqW67IwuLHcA%2Fstart-date.png?alt=media&amp;token=5a66382b-cbb8-4841-9f92-0a9f653b2c87">start-date.png</a></td><td><a href="/brw/create-a-product/shared-fields/booking-dates/pick-up-date.md">Pick-up date</a></td></tr><tr><td><strong>Booking Conditions</strong></td><td><em>Min/max days, preparation, advance</em></td><td data-object-fit="contain"><a href="https://4082525133-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fa2OkFafBNY1uvQO4naAL%2Fuploads%2FSqvnedaUILFZRR7KVeKv%2Fschedule.png?alt=media&amp;token=fc50535b-0cb7-4081-ab1a-d154f1b786cd">schedule.png</a></td><td><a href="/brw/create-a-product/shared-fields/booking-conditions.md">Booking Conditions</a></td></tr></tbody></table>

## 5: Common Fields

These features are shared across all rental types. Note: **Inventory & Quantity** in Common Features refers to the global stock counter — Appointment type uses per-slot Quantity instead of the global inventory.

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th><th data-hidden data-card-cover data-type="image">Cover image</th></tr></thead><tbody><tr><td><strong>Availability</strong></td><td><em>Allowed dates, disabled dates, iCal</em></td><td><a href="/brw/common-fields/availability.md">Availability</a></td><td><a href="https://4082525133-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fa2OkFafBNY1uvQO4naAL%2Fuploads%2FHZB58ceyMxbJawVs3DUS%2Fend-of-year.png?alt=media&amp;token=fd8451a9-c6b6-433b-9ff6-6039f9ab3722">end-of-year.png</a></td></tr><tr><td><strong>Services &#x26; Resources</strong></td><td><em>Add-on pricing with /Day or /Order</em></td><td><a href="/brw/common-fields/services-and-resources.md">Services &amp; Resources</a></td><td data-object-fit="contain"><a href="https://4082525133-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fa2OkFafBNY1uvQO4naAL%2Fuploads%2Faaowe5OV6TECZOYyW1lC%2Fconfiguration.png?alt=media&amp;token=5ed2998a-3bba-42a0-b41a-38c0dc91f04b">configuration.png</a></td></tr><tr><td><strong>Deposit</strong></td><td><em>Fixed or percentage upfront payment</em></td><td><a href="/brw/common-fields/deposit-and-insurance/deposit.md">Deposit</a></td><td data-object-fit="contain"><a href="https://4082525133-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fa2OkFafBNY1uvQO4naAL%2Fuploads%2FoUxbTJH7SOcUJRbMqMnJ%2Fupload.png?alt=media&amp;token=5fadf598-d7e8-4c12-bc26-c19b42a1131c">upload.png</a></td></tr><tr><td><strong>Insurance</strong></td><td><em>Fixed fee added to every booking</em></td><td><a href="/brw/common-fields/deposit-and-insurance.md">Deposit &amp; Insurance</a></td><td data-object-fit="contain"><a href="https://4082525133-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fa2OkFafBNY1uvQO4naAL%2Fuploads%2FFNlMKp9kbkGG0u1jjN8e%2Finsurance.png?alt=media&amp;token=9aaa2b8e-a6e3-46d6-9f71-354390651a12">insurance.png</a></td></tr><tr><td><strong>Booking Form</strong></td><td><em>Custom checkout fields</em></td><td><a href="/brw/common-fields/booking-form.md">Booking Form</a></td><td data-object-fit="contain"><a href="https://4082525133-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fa2OkFafBNY1uvQO4naAL%2Fuploads%2FFXS96CDy8zn0GDDQA6Di%2Fcontact-form.png?alt=media&amp;token=6f9dde63-12f0-4605-a3d0-a161ccc32c6b">contact-form.png</a></td></tr><tr><td><strong>Map / Place</strong></td><td><em>Maps pin on product page</em></td><td><a href="/brw/common-fields/display-and-layout/map-place.md">Map / Place</a></td><td data-object-fit="contain"><a href="https://4082525133-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fa2OkFafBNY1uvQO4naAL%2Fuploads%2Fhpsva9YNet3BAONHVeVe%2Fmap.png?alt=media&amp;token=66b4fcb8-9002-42ef-bf68-18c83b22e9cf">map.png</a></td></tr><tr><td><strong>Display &#x26; Layout</strong></td><td><em>Price format, template, extra tab</em></td><td><a href="/brw/common-fields/display-and-layout.md">Display &amp; Layout</a></td><td data-object-fit="contain"><a href="https://4082525133-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fa2OkFafBNY1uvQO4naAL%2Fuploads%2FoIzHgd10O3ZJmyeLJZTN%2Fwebsite-design.png?alt=media&amp;token=4a4a1407-c804-4620-8747-dff829ad145b">website-design.png</a></td></tr><tr><td><strong>Product Content</strong></td><td><em>Specifications, features list</em></td><td><a href="/brw/common-fields/product-content.md">Product Content</a></td><td data-object-fit="contain"><a href="https://4082525133-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fa2OkFafBNY1uvQO4naAL%2Fuploads%2FbsaXxA9qTU90hwKE9DPr%2Fcopy-writing.png?alt=media&amp;token=93dcdd65-5a49-47b3-8d9d-e2097a64d5b2">copy-writing.png</a></td></tr></tbody></table>

## 6: Customize Fields in Product Editing

When you create a product and want to remove unnecessary fields, you can follow these steps in [Customize - Rental Type](/brw/customize-rental-type.md)
