# Schedule Basics

Build a legacy, layer-based on-call schedule where only one user is on call at a time and the newest layer takes precedence.

Use legacy schedules to map your coverage needs and determine who receives a notification when an incident triggers. When an incident impacts a service, notifications are sent to the on-call user in the [service's associated escalation policy](/incident-management/schedules/escalation-policies). Legacy schedules differ from [shift-based schedules](/incident-management/schedules/shift-based-schedules), the current scheduling experience, in how coverage is structured. Legacy schedules are built from schedule layers, where the last-created layer takes precedence over earlier layers and only one user per schedule is on call at a time.

## Create a Schedule

Basic schedules are most often comprised of a single [schedule layer](#schedule-layers), where you add users on a daily or weekly rotation. You can use layers to organize shifts visually so that you can tell at a glance what days and hours a shift covers.

> **Free Plan Limit:** Free plans are limited to one schedule.

> **Required User Permissions:** Users with the following roles can create, edit, and delete on-call schedules:
>
>   - User
>   - Manager base roles and team roles. Manager team roles can only manage schedules associated with their team.
>   - Admin/Global Admin
>   - Account Owner

To create a new schedule in the web app:

1. Navigate to **People**  →  **Schedules** and click **New Schedule**.
2. Enter a **Schedule Name** (required) and an optional **Description**. If your account has [Advanced Permissions](/account-admin/advanced-permissions), you may optionally assign the schedule to a [Team](/account-admin/teams) using the **Teams** dropdown.

> **Schedule Name and Description:** Emojis are supported in both the **Schedule Name** and **Description** fields. Schedule names are limited to 255 characters and descriptions are limited to 1024 characters.

3. Review the **Time Zone**.
   - The time zone is set to the [account-level time zone](/account-admin/time-zone-settings#change-the-account-level-time-zone) by default. Use the dropdown to change the time zone if needed.
4. **Step 1: Add Users**: In the **Select a User** dropdown, select all of the users you would like to add to the rotation. Users rotate through their on-call responsibilities from top to bottom. You can drag and drop users to adjust their on-call order.
   - If someone does not appear in the dropdown, Admin users or higher can select **Invite your team to PagerDuty** to [add users](/account-admin/manage-users#add-users) to your account.

> **Who Can Be Added to Schedules:** All users, with the exception of Limited and Full Stakeholders, can be added to schedules.
>
>   If you are not sure what role you have, or if you need your permissions adjusted, see [Check Your User Role](/account-admin/user-roles#check-your-user-role) or [Edit User Roles](/account-admin/manage-users#edit-user-roles).

5. **Step 2: Set Up an On-Call Rotation**: In the **Rotation type** dropdown, select **daily**, **weekly**, or **custom**.
   - This value determines how frequently the users from Step 1 change on-call responsibilities.
   - For **custom** rotation types, enter a value for **Shift length** and then select **hours**, **days**, or **weeks**.
6. Select a **Handoff time** via the time picker to determine when responsibilities should rotate.
7. _(Optional)_ Configure the schedule to **Restrict on-call shifts to specific times**. See [Schedule Restrictions](#schedule-restrictions) for more information.
8. **Step 3: Start Time for This Layer**: The **Start time for this layer** is automatically populated from the information in Step 2. You can optionally change it so that it takes effect at a future date and time.

> **Final Schedule:** In some cases, such as when updating handoff times or setting a future start date for a schedule layer, the user order may differ between the schedule layer and the final schedule in order to preserve the rotation order. Refer to the **Final Schedule** section at the bottom of the page for a preview of what the schedule will look like after saving changes.

9. Review the **Final Schedule** section at the bottom of the page and click **Save Schedule**.

> **Layer Requirement:** A schedule must have at least one layer before you can save it. You cannot save a schedule with no layers.

> **Connect a Schedule to a Service:** You will need to connect the schedule to a service via an escalation policy. After associating a schedule with an escalation policy, on-call users can be notified about incidents on any service that uses the escalation policy. **If you do not add your schedule to an escalation policy, incident notifications will not be sent to users on call on the schedule.**
>
>   Once you have [created an escalation policy](/incident-management/schedules/escalation-policies#create-an-escalation-policy), follow the instructions in [Connect a Schedule to a Service via Escalation Policy](/incident-management/schedules/escalation-policies-and-schedules#connect-a-schedule-to-a-service-via-escalation-policy).

## Edit a Schedule

See [Edit Schedules](/incident-management/schedules/edit-schedules) for more information.

## Delete a Schedule

> **Warning:** Deleting a schedule is permanent and cannot be restored. If you would like to deactivate a schedule instead, see [Pause or Deactivate an On-Call Schedule](/incident-management/schedules/edit-schedules#pause-or-deactivate-an-on-call-schedule).

1. Go to **People**  →  **Schedules** and select a schedule.
2. From the actions on the right, select **Delete this Schedule**.
3. Confirm your selection in the dialog window.

## Optional Schedule Components

Depending on your organization's needs, you may find these features helpful when developing your PagerDuty schedules.

### Schedule Layers

A schedule layer consists of a group of people who rotate on-call responsibilities through the same shift. In a basic weekly schedule, you create a single layer where each member is on call for one week, with a set day and time for transferring on-call responsibility. A schedule layer is also the foundation for more [complex schedules](/incident-management/schedules/schedule-examples) that you can tailor to your team's needs. Schedule layers are expandable and collapsible to help save screen space while you are creating or editing a schedule.

PagerDuty's schedule builder enables you to create multiple layers for one schedule. This feature can be useful for international companies that need to create a [follow-the-sun schedule](/incident-management/schedules/schedule-examples#example-8-follow-the-sun-schedule), where each time zone can be grouped as a layer.

> **Schedule Layer Limit:** Schedules can contain a maximum of 60 layers.

#### Schedule Layer Precedence

When a schedule has multiple layers, the last layer created — the bottom layer on the schedule creation page — has precedence over any previous layers. The example below illustrates this:

![Schedule layers](/images/kb/07a1de603decea7628e858e57b4c5555a10a3677ce40b8eec3db5447dfe56b58-schedule-basics-precedence-example.webp)
*Last layer takes precedence over previous layers*

Alex is scheduled consistently in Layer 1, but since Layer 2 has Barbara and Edward scheduled over the time that Alex had in Layer 1, their layer takes precedence in the Final Schedule.

This allows for [complex schedules](/incident-management/schedules/schedule-examples) where different users fill in gaps in coverage. For example, if you want Alex to be on call during the work week and Barbara and Edward to be on call on the weekends, you would create [restrictions](#schedule-restrictions) so that Layer 1 and Layer 2 fit together to create continuous coverage in the Final Schedule:

![Complex schedule example](/images/kb/7b8d18356c6bc26b311f4d381737966f70b12c0816e1406569160c387fe83bfe-schedule-basics-complex-example.webp)
*Complex schedule example*

#### Delete a Schedule Layer

1. To delete a schedule layer while [creating a schedule](#create-a-schedule), select **More**  →  **Delete Layer** in the top-right of the layer you would like to delete. **This will delete a layer immediately if the schedule has not been saved.**
2. To preserve historical accuracy, **PagerDuty does not delete schedule layers after they have been saved** to the schedule. If you would like to remove a previously-saved layer from an on-call schedule, you can set an [end-date](#end-date-a-schedule-layer).

> **Layer Requirement:** You must have at least one layer in order to save the schedule.

#### End-Date a Schedule Layer

To preserve historical accuracy, PagerDuty does not delete schedule layers after they have been created. If you would like to remove a layer from an on-call schedule, you can set an end-date.

To end-date a schedule layer:

1. Navigate to **People**  →  **Schedules**.
2. To the right of your desired schedule, select   **Edit**.
3. To the right of the schedule layer you want to remove, select   **Delete Layer**.
4. In the **Schedule Layer Removal** modal, enter a **date and time** to remove the layer and click **Remove Layer**.
   - To remove the layer immediately, leave the date and time as they are.
5. Click **Save Schedule**.

When a schedule layer has been end-dated, it will appear until the date it was set to be removed. For example, Barbara Baxter was on Layer 2 of this schedule, and then it was end-dated for November 8th. This layer will continue to appear until November 8th and then disappear afterwards:

![End-dated schedule layer example](/images/kb/ca45b3f028699c0438d47e72e37f0b7b660ec2a8bfaa982276f8dd52c446e403-schedule-basics-end-date-example.webp)
*End-dated schedule layer example*

#### Edit an End-Dated Schedule Layer

If a layer's end-date is still in the future, you will have the option to edit or undo the end-date.

1. Go to **People**  →  **Schedules** and select   **Edit** to the right of your preferred schedule.
2. On the end-dated layer, select your preferred action: **Edit** or **Undo**. **Edit** allows you to [schedule a new deletion date](#end-date-a-schedule-layer), while **Undo** restores the layer and removes the end-date.
3. Click **Save Schedule** at the bottom-left of the page.

### Schedule Restrictions

By default, PagerDuty distributes on-call shifts over a 24-hour period. You may wish to limit the times and days that users are on call. PagerDuty offers two methods depending on how much fine-tuning you need:

- [Restrict on-call duty to specific times of the day](#restrict-on-call-duty-to-specific-times-of-the-day): Creates uniform shifts for every day of the week. This option does not allow you to modify individual days. For example, if you select a shift from 17:00–09:00, every day of the week will have that shift by default.
- [Restrict on-call duty to specific times of the week](#restrict-on-call-duty-to-specific-times-of-the-week): Allows you to set different shifts for every day of the week. For example, you can set Monday to have a shift from 17:00–09:00 and Tuesday to have a shift from 13:00–20:00.

> **Schedule Coverage Gaps:** Restricting hours creates coverage gaps in a schedule when no one is on call. This may be the desired behavior, but there are some items to keep in mind.
>
>   In relation to an escalation policy, if the schedule is on the first level and no one is on call, the incident will immediately escalate to the next escalation level. If no one is on call on the entire escalation policy, **an incident will not be created**.
>
>   If you try to create a new incident in the web app on a service where no one is on call, you will get an error message that the **Incident cannot be assigned**. Similarly, any trigger events sent to an integration where no one is on call **will not trigger an incident**.
>
>   You can also fill coverage gaps with other layers, as in [follow-the-sun](/incident-management/schedules/schedule-examples#example-8-follow-the-sun-schedule) or [weekend/weekday](/incident-management/schedules/schedule-examples#example-10-weekendweekday-schedule) schedules.

#### Restrict On-Call Duty to Specific Times of the Day

This option lets you restrict a schedule so that users are on call every day, but only for specific hours.

1. Go to **People**  →  **Schedules**.
2. Select a schedule and click **Edit this Schedule**.
3. Select the **Rotation type** from the dropdown.
4. Set the **Handoff time** to the beginning of the shift via the time picker.
5. Under **Restrict on-call shifts to specific times**, click **Add Restrictions**.

![Add schedule restrictions](/images/kb/a0f62ac86bf02d4ee6e87361c46471e4cc07cb719e97b16dd7134aca1a73cc9b-add_restrictions.webp)
*Add schedule restrictions*

6. In the modal window, select **Restrict on-call duty to specific times-of-the-day** and enter **from** and **to** values, or click :clock4: to use the time picker to select appropriate times.
7. Click **Apply**.
8. Click **Save Changes**.

**Example:** If you want users on this schedule to only be on call from 5:00 PM to 9:00 AM after business hours, select the following:

![Restricted to specific times of the day](/images/kb/e8f310366cbead05ead63fffaddbf8b271431bf4e0104dd60cb13f7d78107be2-Specific_times_of_the_day.webp)
*Restricted to specific times of the day*

#### Restrict On-Call Duty to Specific Times of the Week

For more fine-grained control, you can create individual restrictions for each day of the week.

1. Go to **People**  →  **Schedules**.
2. Select a schedule and click **Edit this Schedule**.
3. Select the checkbox **Restrict on-call shifts to specific times**.
4. Under **Restrict on-call shifts to specific times**, click **Add Restrictions**.

![Add schedule restrictions](/images/kb/6e74a86ae3fc888826f0487fdbe4d4616608dbcd28cd660f95b9019fcd912e6b-add_restrictions-1.webp)
*Add schedule restrictions*

5. Use the dropdown and time picker to specify the **days** and **times** users should be on call.
6. Click **Apply**.
7. Click **Save Changes**.

**Example:** If you want after-hours coverage from 17:00 to 09:00 on weekdays, with continuous coverage over the weekend, input the following (the last day/time selections cover the weekend from Friday to Monday):

![Restricted to specific times and days of the week](/images/kb/0f92da700fce587cbe1c42a37cefdfc1b501e67a882be1d94b040b41e1fea523-image4.webp)
*Restricted to specific times and days of the week*

### Assign a Schedule to a Team via Escalation Policy

Schedules can be associated with [Teams](/account-admin/teams) via escalation policies. To assign a Team to your schedule, [add your schedule to an escalation policy](/incident-management/schedules/escalation-policies-and-schedules#connect-a-schedule-to-a-service-via-escalation-policy) and then [add that escalation policy to your Team](/account-admin/teams#create-a-team).

You also have the option to associate a schedule with a Team when you _create_ the schedule, but not while editing it. This accommodates the following use case:

With [Advanced Permissions](/account-admin/advanced-permissions), some users are only allowed to edit their Team's objects, such as schedules, services, and escalation policies. If one of these users wants to create a new schedule and put it inside their Team's escalation policy, they can only do so if that schedule is assigned to their team.

## Schedules List

The schedules list provides an overview of every schedule, where you can see at a glance who is currently on call, what escalation policy the schedule uses, and upcoming shifts. You can filter all schedules by date range, Teams, and users, and easily search and compare schedules. The schedules list can be found in the web app under **People**  →  **Schedules**.

### Parameters

#### Date

To filter all schedules in the list by date, use the following options:

- Click the **Time Period** dropdown to select one of the following: **1 Day**, **4 Days**, **1 Week**, **2 Weeks**, or **30 Days**.
- Click  to move back an iteration of the selected time period, or click  to move forward. For example, if you selected **1 Week**, clicking  moves you forward by one week.
- Click **Today** to view all schedules from today's date.

#### Teams

To filter by Team, click the **Teams** dropdown and select from **All Teams**, **My Teams**, or search and select a specific Team.

#### User

To filter by user, click the **User** dropdown and search for your preferred user. To remove the user filter, click  to the right of the user's name.

### Search

To search for a specific schedule, enter the schedule's name in the **Search** field and press Enter.

### View Details

- **Schedules**: Click the schedule's name to view its full details.
- **On Call Now**: The user currently on call will be listed with a **Now** pill to the right of their name. Click the user's name to view their details.
- **Shifts**: Click a shift to view its full details or to [create an override](/incident-management/schedules/edit-schedules#override-a-specific-schedule-shift).
- **Escalation Policies**: If the schedule has only one escalation policy, click the escalation policy name to view its details. If the schedule has more than one, click **\[x] Escalation Policies** and select the escalation policy you would like to view from the modal.
- **Teams**: If a schedule has only one Team, click the Team name to view its details. If the schedule has more than one, click **\[x] Teams** and select the Team you would like to view from the modal.

### Actions

You may also take the following actions from this page:

- [Create a New Schedule](#create-a-schedule)
- [Export a Schedule](/incident-management/schedules/schedules-in-apps)
- Click  to select from the following options:
  - [Edit a Schedule](/incident-management/schedules/edit-schedules)
  - [Duplicate a Schedule](/incident-management/schedules/edit-schedules#duplicate-a-schedule)
  - [Schedule an Override](/incident-management/schedules/edit-schedules#create-overrides)
  - [Delete a Schedule](#delete-a-schedule)

<br />
