# Schedule work on the Calendar

> See the work your squad repeats on a schedule, and start a recurring job. Change, pause, run, or stop it, set its time zone, and know what happens when a run fails.

## What a scheduled job is

A scheduled job is one piece of work that repeats. It has a name, such as "Weekly competitor check", a schedule, and a time zone. It also holds the work to repeat in full, the squad member who does it, and where its results go.

Each run creates a task for that squad member on **Tasks**, and the task ends with a report. The Morning Brief playbook is the one exception: each run posts one message in your lead's Chat and creates no task.

Like any task, a run uses credits only for the research it does, such as web searches and page reads. See [What SquadRoom costs and what uses credits](/docs/costs#what-credits-pay-for).

## Start a recurring job

<!-- tabs -->

#### Ask a squad member

1. In Chat or in a task, ask for recurring work, such as "check our three competitors every Monday". You get a ticket with a **Scheduled job** card.
2. Read **Repeats** for when it runs, and **Details** for the full instructions and where results go.
3. Select **Approve**. The task says "The job is on the calendar." and the first run time.

See [Answer questions and approve drafts](/docs/tickets#approve-a-recurring-job).

#### Set up a playbook

1. In **Skills > Playbooks**, select **Set up** on a playbook.
2. Answer your lead's questions in Chat. A job named after the playbook, such as "Morning Brief", goes on the Calendar.

See [Run a playbook](/docs/playbooks).

<!-- /tabs -->

> **Note:** No two jobs start at the same time. When a squad member asks for a time another job uses, the new job moves to the nearest free 15-minute slot. The ticket shows the time asked for under **Moved from**.

## Read the Calendar

Open **Calendar** in the sidebar. The page is titled **Scheduled Jobs**. **Week** (the default) shows Monday to Sunday, and **Month** shows the whole month. The arrows move a week or a month, and **Today** brings you back.

A job card in **Week** shows the job's name and its time in 24-hour form, such as "09:00". A pause mark means the job is paused. A status mark shows how that day's run went. A plane mark means results also go to your Telegram chat.

**Month** shows up to 3 jobs a day, then "+2 more" with the number left. It marks only runs that need a look: running, failed, or waiting for your input.

## Open a job

Select a job card. A panel opens with:

- the job's name and **Active** or **Paused**;
- the schedule in words, such as "Weekdays at 09:00", its time zone, and **Next run**;
- **Assigned to**: the squad member who does the work;
- **Results go to**: Telegram, or the squad member's chat;
- **Work to repeat**: the full instructions;
- **Recent runs**: up to the last 12.

Each run shows its status, when it started, how long it took, and a short summary. Select one for its **Run output** (the report) and **Open Task**. A run waiting on you shows **Needs input**: answer its ticket on **Tasks > Tickets**. For every run status, see [What each status word means](/docs/statuses).

## Run a job now

1. Open the job.
2. Select **Run now**. The run shows as Running in **Recent runs**.

While a run is going, the button reads "Running", and you can't start another. This run counts like any scheduled run.

**Run now** starts nothing while the job can't run. A line next to it says what is paused and where to resume it:

| What is paused                                          | What to do                                                       |
| ------------------------------------------------------- | ---------------------------------------------------------------- |
| Your squad                                              | Select **Resume squad** on **Tasks**, then **Run now** again.    |
| Your squad, because the monthly credit limit is used up | Raise the limit in **Settings > Usage**, then **Run now** again. |
| The squad member on the job                             | Resume it on **Squad**, then **Run now** again.                  |

## Change a job

1. Open the job and select **Edit**. The **Edit Scheduled Job** window opens.
2. Change the fields you need.
3. Select **Save Changes**.

| Field               | What it sets                                                                                                                                       |
| ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Job Name**        | The name                                                                                                                                           |
| **Schedule**        | When it runs. Select it for the schedule picker, then select **Done**.                                                                             |
| **Timezone**        | The zone. Find one with **Search timezone...**. Read [Time zones](#time-zones) first.                                                              |
| **Send results to** | **Telegram** or **Local**. Shows only when Telegram is connected and your Telegram user ID (the number that names your Telegram account) is saved. |
| **Work to repeat**  | What each run does                                                                                                                                 |

> **Tip:** Each run starts fresh, so make **Work to repeat** complete on its own. Include the docs to read, the account to use, the time period to cover, what to deliver, and what must wait for your approval.

### The schedule picker

Under **Repeat every**, choose a unit, then fill in what it asks for:

| Unit        | You set                                    |
| ----------- | ------------------------------------------ |
| **Minutes** | Every 1 to 59 minutes                      |
| **Hours**   | Every 1 to 23 hours, on the hour           |
| **Days**    | Every 1 to 365 days, and a time            |
| **Weeks**   | The days (**On days**), and a time         |
| **Months**  | A day from the 1st to the 31st, and a time |
| **Years**   | A month, a day, and a time                 |

The time picker sets the hour, the minute in 5-minute steps, and AM or PM. In **Weeks**, at least one day stays selected.

## Time zones

Your workspace runs every job on one time zone.

- A playbook takes your browser's time zone when you set it up. If the workspace already runs jobs on a zone with different clock rules, setup stops and names the workspace's zone. See [Run a playbook](/docs/playbooks#if-something-goes-wrong).
- A job that a squad member asks for uses the workspace's time zone. The ticket shows it after the time, under **Repeats**.

> **Warning:** Saving a job with a different time zone moves every job in your workspace to that zone. This happens even though the line under **Timezone** says only this job uses it. Each job keeps its clock time: a job set for 9:00 AM runs at 9:00 AM in the new zone.

## Pause and resume a job

1. Open the job and select **Edit**.
2. Select **Pause Schedule**, or **Pause Job** (the pause icon at the top).

A paused job keeps its settings and stays on the Calendar with a pause mark. **Next run** reads "Paused", and no run starts. To resume, select **Resume Schedule** or **Resume Job**.

## Stop a job

1. Open the job and select **Edit**.
2. Select **Stop Job** (the bin icon at the top).
3. Confirm.

The job leaves the Calendar for good. Tasks and reports from its earlier runs stay. To bring back a playbook's job, select **Set up again** on the playbook's card. See [Pause or stop a playbook](/docs/playbooks#pause-or-stop-a-playbook).

## Pause every job at once

**Pause squad** on **Tasks** pauses your whole squad, scheduled jobs included. Each run is skipped while it is paused, and your schedules stay as they are. Select **Resume squad**, and the next run starts on time.

## When a run fails

A failed run shows **Failed** in **Recent runs**, with what went wrong. What comes next depends on where the job came from.

### A job you approved in a ticket

1. Each failed run adds a line to the task the job came from: "Scheduled Job run failed (1/3):" and the error.
2. After 3 failed runs in a row, the job pauses.
3. The squad member who runs it gets a new task, "Fix Scheduled Job:" and the job's name. The task comes with a ticket: "Scheduled Job paused after 3 failures".
4. Pick an option on the ticket:

| Option                      | What happens                                                  |
| --------------------------- | ------------------------------------------------------------- |
| **Retry now** (recommended) | The squad member resumes the job and runs it once, unchanged  |
| **Change the job**          | It updates the schedule or instructions, then resumes the job |
| **Stop the job**            | It removes the job for good                                   |

A run that succeeds sets the count back to 0. So does resuming the job.

### A job from a playbook

After 3 failed runs in a row, the job pauses, **Recent activity** on the Dashboard says so, and the playbook's card shows **Needs attention**. No ticket opens. Check the job, then resume it from the Calendar.

## What the Calendar doesn't do

- It shows only scheduled jobs: no tasks, due dates, or meetings.
- It can't change who does a job. The field that names the squad member is locked. Ask the squad member you want for a new job, then stop this one.
- It can't give each job its own time zone. The whole workspace shares one.
- It doesn't mark a missed run. A past day with no run record stays blank.
- A job can't post, send, or change anything in your connected apps on its own. Drafts from a run come to you as tickets. Only delivery to your own Telegram chat goes out without asking.

## If something goes wrong

### "Telegram Home Channel Not Set"

**Cause:** Telegram is connected, but SquadRoom doesn't know which chat gets results. Until you fix it, **Send results to** doesn't show, and results stay in SquadRoom.

**Fix:** Add your Telegram user ID in **Settings > Messaging** and click **Save Changes**.

### "Could not start this run"

**Cause:** The run didn't start.

**Fix:** If a run is already going, wait for it to finish. Then select **Run now** again.

### "The run stopped before it could finish."

**Cause:** A run you started with **Run now** stopped partway.

**Fix:** Select **Run now** again. If it keeps happening, open the job's last task to see the error.

### "Describe the work this job should repeat"

**Cause:** **Work to repeat** is empty.

**Fix:** Write the instructions, then select **Save Changes**.

### "The Scheduled Job could not start:" and a reason

**Cause:** You approved a job, but it couldn't go on the Calendar. The task shows why.

**Fix:** Ask the squad member in that task to try again.

### "Scheduled Job registration could not be confirmed after 6 attempts. Check Calendar before retrying because the job may already exist."

**Cause:** SquadRoom tried 6 times and couldn't confirm that the job is on the Calendar.

**Fix:** Open the Calendar first. If the job is there, it is running. If not, ask the squad member in the task to try again.

## Related pages

- Approving a recurring job: [Answer questions and approve drafts](/docs/tickets).
- Ready-made recurring work: [Run a playbook](/docs/playbooks).
- Pausing your whole squad: [Track work on Tasks](/docs/tasks).
- Telegram results: [Reach your squad from Telegram](/docs/telegram).
- Today's runs in the **Today’s schedule** panel: [Use the Dashboard](/docs/dashboard).
