> For the complete documentation index, see [llms.txt](https://btwb.gitbook.io/btwb/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://btwb.gitbook.io/btwb/admin/scheduling/class-schedules.md).

# Class Schedule

This article shows gym owners how to build a recurring class schedule on the calendar — creating a weekly class series with its time, capacity, coach, and repeat days.

### Overview

The **Class Schedules** page (**Gym → Class Schedules**) is a calendar of everything your gym runs. You build the timetable by placing **class series** — a class that repeats on chosen weekdays at a set time — or one-off classes. Members then reserve spots through the btwb app or your website's embedded calendar, which you can preview any time with the **Public Calendar** link (see [Website Embeds & Public Links](/btwb/admin/programming-and-display/website-embeds-and-public-links.md)).

![Creating a recurring class series on the schedule calendar](https://283006627-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZrefv5JliAQavbeRiIvd%2Fuploads%2Fgit-blob-8e79676e40947049caf390afedf58ad486292955%2Fadd-class-schedule.gif?alt=media)

***

### Step-by-Step: Adding a Recurring Class

#### 1. **Click Where the Class Belongs**

* The calendar opens in **Month** view. Switch it to **Week** view (top-right selector) and click the empty slot for your class's day and start time — the form opens with that **Time** and **Begins on** date pre-filled. (The **Add Class** button opens the same form, pre-filled with the day you have selected and the next full hour.)
* You need at least one location first — if you don't have one, BTWB sends you to add it.

#### 2. **Fill In the Class Details**

* **Class Type** — pick from your types (or add a new one right here); the **Class Name** defaults to the type's name and can be customized (e.g. "6AM CrossFit").
* **Time** — start and end times; the end time defaults to the type's duration.
* **Capacity** — how many reservation spots (pre-filled from the class type).
* **Begins on** — the first date the class runs.

#### 3. **Set the Repeat Pattern**

* Leave **Repeat** on and select the weekdays in **Repeat every week on** (e.g. M, W, F). Turn Repeat off for a one-time class.
* **Ends** — **Never** for an ongoing schedule, **On** a date, or **After** a number of classes.

#### 4. **Assign Coaches**

* Multi-location gyms: pick the class's **Location** first (at the bottom of the form) — it filters the coach list.
* Under **Coach**, search by name in **Add Coach** and click to add; you can add more than one. Only staff on the **Coaching Roster** for this class's location appear — add them from **Staff** in the organization menu first if someone's missing (see [Adding Coaches & Admins](/btwb/admin/gym-setup/adding-coaches-and-admins.md)).

#### 5. **Save**

* The series appears across the calendar on every scheduled day, showing its reservation count (e.g. **0/20**) and coach.

***

### Editing and Canceling Classes

Click any class on the calendar to edit or cancel it. Because most classes belong to a repeating series, BTWB always asks **which occurrences** your change applies to:

* **⟨Date⟩ only** (e.g. "Mon, Sep 22 only") — changes or cancels the single class without touching the series.
* **Every ⟨weekday⟩ onward** / **Multiple Days onward** — rewrites the series from a **From** date you choose, until **Forever** or an end date, leaving past classes untouched.
* **Cancel Class** asks you to choose: **Cancel this class** keeps it visible on the calendar as canceled; **Remove this class** deletes it from view entirely. A cancel covers the single date or **Multiple Days onward** up to an **Until** date — **Every ⟨weekday⟩ onward** and **Forever** only appear when removing (see [How to Permanently Remove a Class from the Schedule](/btwb/admin/scheduling/class-schedules/how-to-permanently-remove-a-class-from-the-schedule.md)).
* Canceling a class **deletes every reservation** on it. Reserved members are emailed and get their class credit back; waitlisted members aren't emailed. **Restore class** puts a canceled class back on the schedule but doesn't re-add anyone — members have to reserve again.
* Once a class has started it can't be canceled, and only its coaches can be changed.

***

### Notes for Admins and Coaches

* **Class Settings** (toolbar) controls org-wide reservation behavior — when reservations open and close, waitlists, late-cancellation and no-show policies. See [Class Settings](/btwb/admin/scheduling/class-schedules/class-settings.md); the defaults work out of the box (reservations open 30 days ahead, close 30 minutes before class).
* **Manage Class Types** (toolbar) is where you edit types or turn them inactive — see [Class Types](/btwb/admin/scheduling/class-types.md).
* Members can only reserve classes whose **class type and location are included in their membership plan**. That applies to free classes too — a free class only skips the credit count and late-cancel/no-show penalties.
* Reserving members, check-ins, and canceling reservations happen on **Class Reservations** — see [Managing Reservations & Check-ins](/btwb/admin/scheduling/class-schedules/managing-reservations-and-check-ins.md).
* Filters (Class Type, Location, Coach — each appears once you have two or more) and the view selector are saved in the page URL, so you can bookmark a coach's week.

***

### Video Walkthrough

{% embed url="<https://www.loom.com/share/ae292f44c82e4bf6907b0ea9135ccf82?sid=167be13c-32d3-41f1-a103-d1d74cea5f2d>" %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://btwb.gitbook.io/btwb/admin/scheduling/class-schedules.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
