# Repeat schedules

> Set up recurring sessions that generate automatically week after week, and change or add times from a date forward as the seasons shift.

Who can do this: admins only.

A repeat schedule generates sessions on the same days and times each week and keeps them topped up. For special events, use [one-off schedules](/docs/one-off-schedules).

Open a session from [Sessions](/go/admin/sessions) and go to **Schedule**: each day of the week is a row, with its times beside it. A new session first asks **When does this session run?** - pick one; you can add the other later. You can also leave it empty and [schedule it later](/docs/session-visibility#common-questions).

<Callout variant="tip">
For the same time on a few days each week, tick **Repeat weekly** in the calendar's [quick add](/docs/one-off-schedules) and pick the days.
</Callout>

## Set up the week

<Steps>
  <Step>Select **Add** on a day, set the **Start time** and select **Add**. Add each time that day runs. A time's length comes from **Prices & lengths** when all the session's times are the same length; otherwise set **Length** on each time.</Step>
  <Step>Select the copy icon on that day, pick the other days that run the same times, and select **Copy**. Copying replaces any times those days already have.</Step>
  <Step>Select **Save & close**. Nothing is saved until you do.</Step>
</Steps>

**Sessions back to back, or with a cleaning gap?** Select **Add a range** and set the gap and the last start; the panel lists the times it will add. Evenly spaced times show as one range, such as "07:30 → 19:30 9 sessions" - select it to change them all at once. On a session with [lengths](/docs/session-lengths), set **Every** instead of a gap.

## Change a time

Select a time to change its time, length or spaces. **Also change on** lists the other days with the same time: they're ticked, so the change applies to all of them - untick a day to leave it as it is. **Remove time** deletes it. A change that touches several times offers **Undo** for a few seconds.

**Changing how long a session runs.** When all the session's times are the same length, change it once under **Prices & lengths**: select the length, then **Change length**.

**Moving a time keeps its bookings.** Change a length, or move a start up to an hour on the same day, and its booked dates move with it - see [move a session time](/docs/move-session-times). A bigger move cancels them after you confirm.

## Dates, cadence and booking options

Select **Edit** beside the schedule's dates to set when it **Starts**, when it **Ends** (**Never**, or a date), and how often it **Repeats** (every 1 to 12 weeks). **Delete** removes the whole weekly schedule.

**Booking options**, at the bottom of the schedule, sets [how far ahead customers can book](/docs/booking-window), when bookings close, and, with more than one [location](/docs/locations), where it runs.

Under a week from start to end, a schedule doesn't repeat - use [one-off dates](/docs/one-off-schedules) instead (a new one offers **Move to one-off dates**).

<Callout variant="warning">
Keep the schedule customers are booking now on **Never**. An end date set here replaces the rolling [booking window](/docs/booking-window) - every date up to it is bookable at once - so use one only for a session that genuinely finishes, like a six-week course.
</Callout>

## Change times from a date forward

<Steps>
  <Step>In the schedule, select **Edit**, then **Change times from a date**, and pick the first date the new times apply.</Step>
  <Step>A second schedule appears from that date, with a copy of the current times. Change them there, then save.</Step>
</Steps>

The current schedule ends the day before, so earlier dates and any time you keep keep their bookings. For summer hours, do this twice.

Done months ahead, nothing goes on sale early: the ending schedule keeps its booking window.

Setting **Ends** yourself offers **Continue from** the day after, which does the same.

## Add a time from a later date

To add a time later in the year, select **Add** on the day, set the time, then select **More options** and change **Starts** to the first date. The time goes into its own schedule from that date. Your current times and their bookings are unaffected.

## Different spaces at different times

Each time has its own **Spaces** (under **More options** when adding). Leave it blank to follow the session's capacity, or set a bigger total when a second room opens. For one date only, [override that single session](/docs/instance-overrides); see [shared capacity](/docs/shared-capacity) for which figure wins.

## Repeating less often than weekly

"Every N weeks" counts from the schedule's start date: every 4 weeks from 7 Jan 2026 fires on 7 Jan, 4 Feb and 4 Mar.

- **"Every 4 weeks" isn't monthly** - it drifts. For a true monthly pattern, add one-off dates.
- **Alternating weeks use two schedules**, each every 2 weeks, starting a week apart.

## What happens when you edit a recurring schedule

- **Update live, no booking impact:** name, description, booking instructions, image, colour, visibility, booking window.
- **New bookings only** (existing bookings keep their paid value): price, price options, membership pricing, add-ons, capacity increase.
- **Cancel affected bookings:** a capacity decrease below current bookings, a day change or bigger time move, removing a time or schedule, or shortening the end date. Past sessions never change.

Before cancelling, a dialog lists every customer who will be refunded and asks you to type `CANCEL`. **Go back** leaves everything as it was.

## Troubleshooting

1. **A new schedule has no sessions, or far-future dates are missing.** Check its **Starts** date isn't in the future, then check the [booking window](/docs/booking-window). If the session's summary says "Ends", set **Ends** to **Never**.

2. **A time has an amber outline.** That day has two sessions at the same time. Keep both only if you really run two; otherwise remove one.

3. **A session shows more than one schedule.** Each card repeats on its own pattern or starts on its own date. Weekly times share one card unless their location or booking options differ.

4. **I want the classic schedule editor.** Add `?schedule=v1` to the end of the session's address to open it.

5. **A customer says a session is missing but you can see it.** Check whether it's Direct link only or archived in [session visibility](/docs/session-visibility), or whether that date was [hidden](/docs/instance-overrides).
