---
title: "Run and schedule reports"
description: "Open a built-in or custom report, download it as a PDF or CSV, and email it on a schedule to up to 20 people."
url: "https://support.outpostplatform.com/reports/run-and-schedule/"
product: "depot"
type: "how-to"
status: "draft"
ai_summary: "How to run a report from Reports > All reports in the Outpost console, download it as PDF or CSV, and create a schedule under Reports > Schedules with a five-field cron expression, an IANA time zone, a missed-run policy, grace seconds, and up to 20 recipients. Schedules email a PDF. Running needs report:read; scheduling needs report:schedule."
availability:
  plans: ["home-lab", "essentials", "enterprise", "msp"]
  permission: "report:schedule"
  preview: false
source: "https://gitlab.com/outpostplatform/docs/-/edit/main/src/content/docs/reports/run-and-schedule.md"
license: "CC BY 4.0"
---

# Run and schedule reports

You can open any report you have the permission for, read it on screen, and
download it. When the same report needs to reach the same people every week or
month, a schedule sends it for you as a PDF. This page shows how to do both.

## Before you begin

- Running a report needs `report:read` plus the permission of the data it
  reads. See [Reports](/reports/#who-can-run-what).
- Creating a schedule needs `report:schedule`.
- Schedules send email through your Outpost's outgoing email. Set it up first.
  See [Configure outgoing email](/depot/email/).

## Run a report

1. Go to **Reports** > **All reports**. On the MSP plan, use the client's
   **Reports** for one client, or the practice-level **Reports** for reports
   across clients.
2. Select a report's card. A dimmed card says which permission it **Requires**.
3. The report opens on screen. On a practice-level report, choose clients in
   **Clients** and select **Run** to narrow it.
4. Select **Download PDF** or **Download CSV**.

To run a saved custom report, find it under **Custom reports** on **All
reports** and select **PDF** or **CSV** beside it.

In a CSV, money is written as a whole number of cents, so an accounting package
can import it. On screen and in a PDF, money is shown as an amount.

## Schedule a report

1. Go to **Reports** > **Schedules** and select **New schedule**.
2. In **Name**, enter a name, such as `Monday morning board pack`.
3. Under **Report**, choose **A saved report** or **A built-in report**, then
   pick the report.
4. On the practice-level **Schedules**, choose the clients in **Clients**, or
   leave every client.
5. In **Schedule**, enter a five-field cron expression: minute, hour, day of
   month, month, and day of week. For example, `0 7 * * 1` is 07:00 every
   Monday.
6. In **Time zone**, choose the zone the schedule runs in. The time follows
   that zone through daylight saving changes.
7. In **If a run is missed**, choose what happens when the server was off at
   the due time: **Send it once on the next chance** or **Skip it and wait for
   the next**.
8. In **Grace seconds**, enter how late a run may still be sent. A run later
   than this is skipped even with **Send it once on the next chance**, so a
   06:00 report is not sent in the afternoon. With no grace set, the limit is
   one hour.
9. Under **Recipients**, enter each address in **Add recipient** and select
   **Add**. A schedule needs at least one address and can have up to 20.
10. Leave **Enabled** selected, and select **Create schedule**.

Each delivery is an email with the report attached as a PDF named for the
report and the date.

## Manage schedules

The **Schedules** list shows each schedule's **Runs**, **State**, **Next run**,
**Last run**, and **Recipients**. For each schedule:

- **History** lists every run with when it was **Due**, when it **Ran**, its
  **Status**, how many **Recipients** it reached, and the **PDF** size.
- **Edit** changes it. Select **Save changes** when done.
- **Pause** stops it until you select **Resume**.
- **Run now** sends it straight away, after you confirm **Send** to all its
  recipients.
- **Delete** removes it.

Every change to a schedule is recorded in the audit log with its recipients.

## Who a schedule runs as

A schedule runs with the permissions of the person who created it. Outpost
pauses a schedule and shows why when:

- The user who created this schedule no longer exists.
- The user who created this schedule is disabled.
- The user who created this schedule cannot sign in.
- The creator no longer has a permission the report needs.

To restart a paused schedule, have someone with the right permissions create
it again, or restore the creator's access and select **Resume**.

## Verify

Create a schedule with your own address as the only recipient and select **Run
now**, then **Send**. The email arrives with the PDF attached, and **History**
shows the run.

## If something goes wrong

| Symptom | Cause | Fix |
| --- | --- | --- |
| **That is not an IANA time zone name.** | The time zone is an offset such as `+02:00`. | Choose a named zone such as `America/Chicago`. |
| **A schedule can send to at most 20 addresses.** | Too many recipients. | Send to a distribution list address instead. |
| A schedule shows **Paused**. | Its creator was removed, disabled, or lost a permission. | See [Who a schedule runs as](#who-a-schedule-runs-as). |
| No email arrives. | Outgoing email is not set up or is failing. | Check **History**, then test your provider. See [Configure outgoing email](/depot/email/). |

## Next steps

- [Build a custom report](/reports/report-builder/)
- [Report datasets](/reports/datasets/)
