> ## Documentation Index
> Fetch the complete documentation index at: https://docs.stockful.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Scheduling reports

> Send a report to email, Slack, a webhook, Google Sheets or Airtable on a daily, weekly, monthly or yearly schedule

Any report can be put on a schedule, so it reaches you without opening Stockful. Open a report and choose **Schedule** to set one up, or manage all your schedules from **Reports → Schedules**.

## Cadence

Pick how often the report runs:

| Cadence     | When it runs                                                                                           |
| ----------- | ------------------------------------------------------------------------------------------------------ |
| **Daily**   | Every day at the time you set. Turn on **Skip weekends** to send Monday to Friday only.                |
| **Weekly**  | One or more weekdays each week. Pick Monday and Thursday and it sends on both, from a single schedule. |
| **Monthly** | A day of the month, the last day of the month, or a particular weekday such as the last Monday.        |
| **Yearly**  | One month and day each year.                                                                           |

You also choose the **time of day**, on the hour. Reports run in your store's timezone.

### Repeating less often

**Repeat every** sets the gap between runs: every 2 weeks, every 3 months, and so on. Leave it at 1 to run every period.

Above 1, a **Starting from** date appears. That date decides which periods are on — set a fortnightly schedule starting on the 17th and it runs the 17th, the 31st, and so on. Move the date to shift the whole pattern.

### Choosing a day of the month

The numbered days stop at the 28th, because every month has one. A schedule set to the 30th would have nothing to land on in February.

For month-end, choose **the last day of the month** rather than a number. It follows the real length of each month, so it lands on the 31st in January, the 28th or 29th in February, and the 30th in April.

<Tip>
  **The last Monday of the month** and similar are under **A particular weekday**. Pick which one (first through fourth, or last) and the weekday. "Last" means the final one in that month, whether that is the fourth or the fifth.
</Tip>

## Delivery channels

A schedule delivers to one channel. Pick the one that fits how you work:

| Channel                                                         | Where it goes                                                            |
| --------------------------------------------------------------- | ------------------------------------------------------------------------ |
| **[Email](/user-guide/reports/channels/email)**                 | To the recipients you list, with an optional custom subject and message. |
| **[Slack](/user-guide/reports/channels/slack)**                 | Posted to a channel.                                                     |
| **[Webhook](/user-guide/reports/channels/webhook)**             | POST the report to a URL as JSON.                                        |
| **[Google Sheets](/user-guide/reports/channels/google-sheets)** | Delivered to Google Sheets in your Drive.                                |
| **[Airtable](/user-guide/reports/channels/airtable)**           | Delivered to a table in your Airtable base.                              |

## File formats

For the file channels (email and Slack), data reports can be delivered as **CSV**, **XLSX**, **XML** or **JSONL**, and reports built around a chart can also be sent as a **PDF** with the chart rendered.

**You can pick more than one.** Each selected format arrives as its own file in the same delivery, so a report that feeds a system as CSV and gets read by a person as XLSX needs one schedule rather than two kept in step by hand. It still counts as a single run in your [run history](/user-guide/reports/history).

The control sits with the delivery options, because the format is part of how the report is delivered rather than part of the report itself.

Data channels such as webhook, Google Sheets and Airtable receive the report data directly, so there is no format to choose and the control is hidden for them.

<Note>
  PDF is the chart, so it is only offered for reports that have one. If you pick it alongside other formats and later change the schedule to a report without a chart, the PDF is dropped and the rest are delivered as normal.
</Note>

## Send now

Not sure a schedule is set up right? Use **Send now** to deliver the report once, immediately, to its channel. It does not change the schedule, so it is a safe way to preview a run.

<Note>
  Send now is available for **Slack, webhook, Google Sheets and Airtable** schedules only. Email is left out to stay within sending limits.
</Note>

## Saved reports and schedules

A schedule runs a **saved report**, so the report it sends always reflects the query you saved, including its date range. Because the range is relative (for example "last 30 days"), each run rolls forward on its own date: a schedule set to "last 30 days" always sends the most recent 30 days, not a frozen window.

To change what a scheduled report contains, edit and re-save the underlying report. See the [Reports overview](/user-guide/reports/index) for building and saving reports, and [StockfulQL](/stockfulql/overview) for the query language behind them.
