> ## Documentation Index
> Fetch the complete documentation index at: https://lightdash-mintlify-9d2ee1df.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Scheduled deliveries

> Scheduled deliveries let you send a dashboard or saved chart, and their results to people via email or Slack - even to people who don't have an account in your Lightdash instance.

If your Lightdash organization has [Slack](/references/workspace/adding-slack-integration) set up, you can create or select an existing saved chart or dashboard, add a scheduled delivery to it, and tell Lightdash when you’d like the send out your update. You can set up as many scheduled deliveries to a saved chart or dashboard as you like, and if you make any changes to the content, Lightdash will update the scheduled deliveries the next time they’re sent.

<Info>
  **For security reasons, the delivered files expire after 3 days by default.**

  This means old emails or Slack shares will have broken images and there is not an option to retrieve them. If you want to keep the sent files, it's best to download them from the scheduled delivery.

  Organization admins can [configure download link expiration](#configuring-download-link-expiration) globally or per channel.
</Info>

<Tip>
  **Self-hosted: fix broken images in emails behind firewalls**

  If your Lightdash instance is behind a firewall, email clients like Gmail may not be able to load images from your internal URLs. Set `EMAIL_SMTP_IMAGE_INLINE_CID=true` to embed images directly into emails as attachments. See [SMTP configuration](/self-host/customize-deployment/configure-smtp-for-lightdash-email-notifications) for details.
</Tip>

## Enabling scheduled deliveries

Emailed scheduled deliveries are available on all Lightdash Cloud plans.

To set up Slack, an organization admin will have to [add the Slack integration](/references/workspace/adding-slack-integration).

## Creating a scheduled delivery

<Info>
  **Only users with** [admin, developer, editor or interactive viewer roles](/references/workspace/roles) **can create and edit scheduled deliveries.**

  Note that the interactive viewer role can only create and edit their *own* scheduled deliveries. Other roles have edit access over *all* scheduled deliveries.
</Info>

To create a scheduled delivery, click on the three-dot menu in the top-right corner of your chart or dashboard, then click on `scheduled deliveries`.

<Frame>
  <img src="https://mintcdn.com/lightdash-mintlify-9d2ee1df/ZQoIYssAkTeUz05h/images/guides/how-to-create-scheduled-deliveries/scheduled-deliveries-three-dot-menu-922af4a879c906642fe00d5660fc0b9b.png?fit=max&auto=format&n=ZQoIYssAkTeUz05h&q=85&s=2102857e2e625fb09e084a705e70b9eb" alt="" width="2788" height="1168" data-path="images/guides/how-to-create-scheduled-deliveries/scheduled-deliveries-three-dot-menu-922af4a879c906642fe00d5660fc0b9b.png" />
</Frame>

You'll get a modal that pops up and shows you the list of existing scheduled deliveries for your saved chart or dashboard, and gives you the option to `create new`.

<Frame>
  <img src="https://mintcdn.com/lightdash-mintlify-9d2ee1df/ZQoIYssAkTeUz05h/images/guides/how-to-create-scheduled-deliveries/scheduled-deliveries-create-new-modal-27e285f1ea9a5aa7118e713175758a7c.png?fit=max&auto=format&n=ZQoIYssAkTeUz05h&q=85&s=d446e86d76d4dcbbb5e5b9ac708faf2f" alt="" width="1432" height="852" data-path="images/guides/how-to-create-scheduled-deliveries/scheduled-deliveries-create-new-modal-27e285f1ea9a5aa7118e713175758a7c.png" />
</Frame>

### Setup

Once you click on `create new`, you'll be brought to a configuration screen for your new scheduled delivery.

<Frame>
  <img src="https://mintcdn.com/lightdash-mintlify-9d2ee1df/ZQoIYssAkTeUz05h/images/guides/how-to-create-scheduled-deliveries/configure-scheduled-delivery-39a01495ad991f4e977d57ba31f37271.png?fit=max&auto=format&n=ZQoIYssAkTeUz05h&q=85&s=e1e3ba8933a37310d4d4d7d73452d645" alt="" width="811" height="625" data-path="images/guides/how-to-create-scheduled-deliveries/configure-scheduled-delivery-39a01495ad991f4e977d57ba31f37271.png" />
</Frame>

##### Delivery name

This is the name of your scheduled delivery. This name will appear as the header in your scheduled delivery message.

##### Delivery frequency

This is how often your scheduled delivery will be sent. You can make this hourly, daily, weekly, monthly, or custom - each frequency has its own options.

The **custom** frequency lets you write out your own custom Cron expression if you need something more specific than our standard options.

You can also customize the **time zone** of your scheduled delivery. By default, the deliveries are set to the project's default time zone. If you update the project's default time zone, then scheduled deliveries where you have not customized the time zone will automatically be updated to the new default time zone.

##### Format

Choose `Image`, `CSV`, `.xlsx`, or `PDF`.

* `Image` sends an image of the content (chart or dashboard) to your chosen destination. You may also want to send the image as a PDF attachment if you choose to send it over email.
* `CSV` sends a downloadable .csv file of the results table from your chart, or if you're sending a dashboard, it sends a single message with multiple .csv files for the results tables from each of your charts. You can set the `values` to either be `raw` (we remove the formatting applied dates, numbers, or other fields in Lightdash) or `formatted` (the way the values appear in your table in Lightdash is how they'll appear in the .csv). You can also adjust the `limit` and specify the number of rows that you want to be delivered in your .csv. `Results in table` will deliver the number of results that are currently in the results table for your charts. You can also set a custom number of rows to be delivered using `custom`, or set all results to be delivered so there's no maximum row limit for each chart using `all results`.
  * **Limit on CSV format**: We limit CSV downloads to 100,000 cells by default, so if you are trying to download more cells, your file will get truncated.
* `.xlsx` sends a downloadable Excel file of the results table from your chart. For dashboards, you can choose how the tiles are packaged using the **XLSX layout** option:

  * `Separate files (ZIP)` (default) puts each dashboard tile in its own XLSX file inside a ZIP archive.
  * `Single workbook` puts every dashboard tile on its own sheet inside one XLSX file.

  The same `values`, `limit`, and row options described for CSV apply to XLSX. The CSV/Excel cell limit is shared — see [Export limits](/references/workspace/export-limits) for details.

##### Send to

You can choose if you want to send your scheduled delivery to Slack, email, or both. You can add as many Slack channels and email addresses as you'd like to here. You can send a scheduled delivery to a person in Slack using `@persons-name` or to a channel using `#channel-name`.

### Filters

<Info>Filters are only available for Dashboard scheduled deliveries.</Info>

You can also customise the **saved** filters([more information on how to save filters in dashboards](/guides/limiting-data-using-filters#adding-saved-filters-to-your-dashboard)) applied to your dashboard on the `Filters` tab. This lets you send a different version of your dashboard to different people, without having to create multiple dashboards.

<Frame>
  <img src="https://mintcdn.com/lightdash-mintlify-9d2ee1df/ZQoIYssAkTeUz05h/images/guides/how-to-create-scheduled-deliveries/scheduled-delivery-dashboard-filters-e608febd4f3d0edf3108cb8e43f937ad.png?fit=max&auto=format&n=ZQoIYssAkTeUz05h&q=85&s=7ea0ba4afe20414527de5a9a7348cac2" alt="" width="2612" height="644" data-path="images/guides/how-to-create-scheduled-deliveries/scheduled-delivery-dashboard-filters-e608febd4f3d0edf3108cb8e43f937ad.png" />
</Frame>

Here, you'll be able to:

1. Update the filter operator (e.g. from "is" to "is not")
2. Update the filter value (e.g. from "USD" to "GBP")
3. Revert the filter back to its original state (the default value of the filter applied to your dashboard)

### Customization

Finally, you can customize the message that gets sent with your scheduled delivery on the `Customization` tab.

<Frame>
  <img src="https://mintcdn.com/lightdash-mintlify-9d2ee1df/ZQoIYssAkTeUz05h/images/guides/how-to-create-scheduled-deliveries/scheduled-delivery-customization-bff8b45b37d11ead29b064e1bdf4e6b9.png?fit=max&auto=format&n=ZQoIYssAkTeUz05h&q=85&s=3793360f989f59357e34bf06d8963cb4" alt="" width="1290" height="1024" data-path="images/guides/how-to-create-scheduled-deliveries/scheduled-delivery-customization-bff8b45b37d11ead29b064e1bdf4e6b9.png" />
</Frame>

## Editing and deleting your scheduled deliveries

To edit a scheduled delivery, click on the pencil-icon next to the scheduled delivery you want to edit. This will bring you back to the configuration screen for your scheduled delivery, where you can make any changes you'd like. In case you want to delete a scheduled delivery, click on the trash-icon next to the scheduled delivery you want to delete.

<Frame>
  <img src="https://mintcdn.com/lightdash-mintlify-9d2ee1df/ZQoIYssAkTeUz05h/images/guides/how-to-create-scheduled-deliveries/edit-delete-scheduled-delivery-0cf24006486d5038ba242f37cd682187.png?fit=max&auto=format&n=ZQoIYssAkTeUz05h&q=85&s=898fda27f4ae1841397cc03914b67940" alt="" width="1356" height="810" data-path="images/guides/how-to-create-scheduled-deliveries/edit-delete-scheduled-delivery-0cf24006486d5038ba242f37cd682187.png" />
</Frame>

## Overview of your scheduled deliveries

Users who have an admin role in your project can access an overview of your scheduled deliveries in the project settings.

In the scheduled deliveries overview page, you can see a list of all of your scheduled deliveries, their most recent delivery status, and a history of all of the previous scheduled deliveries in your project.

To access the overview page, just head to your project settings, then to the `Syncs & Scheduled Deliveries` tab.

<Frame>
  <img src="https://mintcdn.com/lightdash-mintlify-9d2ee1df/ZQoIYssAkTeUz05h/images/guides/how-to-create-scheduled-deliveries/scheduled-deliveries-overview.png?fit=max&auto=format&n=ZQoIYssAkTeUz05h&q=85&s=2b0dd881fa328061553fd5b82712fb8a" alt="" width="2035" height="658" data-path="images/guides/how-to-create-scheduled-deliveries/scheduled-deliveries-overview.png" />
</Frame>

### Delivery status

Each scheduled delivery displays a clear status indicator showing its current state:

* **Completed successfully** - All jobs in the delivery completed without errors
* **Failed** - The delivery encountered an error and did not complete
* **Partial failure** - Some jobs completed successfully while others failed
* **Running** - The delivery is currently in progress
* **Scheduled** - The delivery is queued and waiting to run

### Run details

Click on any scheduled delivery run to open the **Run Details** modal. This shows:

* The job configuration including delivery target and schedule
* A list of all sub-jobs with their individual status, timing, and any error details
* For failed jobs, detailed error information to help with troubleshooting

<Frame>
  <img src="https://mintcdn.com/lightdash-mintlify-9d2ee1df/ZQoIYssAkTeUz05h/images/guides/how-to-create-scheduled-deliveries/run-details-modal.png?fit=max&auto=format&n=ZQoIYssAkTeUz05h&q=85&s=4e434567524904ccc602308e6125a439" alt="" width="1294" height="918" data-path="images/guides/how-to-create-scheduled-deliveries/run-details-modal.png" />
</Frame>

### Reassigning scheduled delivery owners

You can transfer ownership of scheduled deliveries to another user in your organization. This is useful when team members change roles or leave the organization.

#### Reassigning a single delivery

1. In the scheduled deliveries overview, find the delivery you want to reassign
2. Click the three-dot menu next to the delivery
3. Select **Reassign owner**
4. Search for and select the new owner from the dropdown
5. Click **Reassign** to confirm

<Frame>
  <img src="https://mintcdn.com/lightdash-mintlify-9d2ee1df/ZQoIYssAkTeUz05h/images/guides/how-to-create-scheduled-deliveries/reassign-owner-single.png?fit=max&auto=format&n=ZQoIYssAkTeUz05h&q=85&s=b685daf8d3399a9f0437a5522a799e99" alt="" width="1551" height="321" data-path="images/guides/how-to-create-scheduled-deliveries/reassign-owner-single.png" />
</Frame>

#### Bulk reassignment

To reassign multiple scheduled deliveries at once:

1. Use the checkboxes to select the deliveries you want to reassign
2. A selection counter will appear showing how many deliveries are selected
3. Click the **Reassign owner** button that appears in the toolbar
4. Select the new owner and confirm

<Frame>
  <img src="https://mintcdn.com/lightdash-mintlify-9d2ee1df/ZQoIYssAkTeUz05h/images/guides/how-to-create-scheduled-deliveries/reassign-owner-bulk.png?fit=max&auto=format&n=ZQoIYssAkTeUz05h&q=85&s=b43e161ef878118e4588d77a1a5f13c3" alt="" width="1642" height="330" data-path="images/guides/how-to-create-scheduled-deliveries/reassign-owner-bulk.png" />
</Frame>

<Info>
  The new owner must have permission to create scheduled deliveries in the
  project. Users with viewer roles cannot be assigned as owners.
</Info>

## Sending to private Slack channels

<Info>
  You must add the Lightdash slack bot into the private Slack channel for it to
  be able to post scheduled delivery results.
</Info>

You can also send scheduled deliveries to private Slack channels. To do this, simply type the name of the Slack channel exactly as it appears in Slack into the input text box. Then click on it to confirm and save the scheduled delivery.

## Sending to Microsoft Teams

You can send your Lightdash scheduled deliveries directly to Microsoft Teams using incoming webhooks. This allows you to keep your team updated with key metrics and reports, right inside your Teams channels.

<Warning>
  The legacy Office 365 Connector webhooks are deprecated. Microsoft now recommends using **Power Automate Workflows** to create incoming webhooks for Teams.
</Warning>

### Creating a webhook with Power Automate Workflows (recommended)

1. Go to [Power Automate](https://make.powerautomate.com/)
2. Select **Templates**
3. Filter by "webhook"
4. Select the **Post to a channel when a webhook request is received** template

<Frame>
  <img src="https://mintcdn.com/lightdash-mintlify-9d2ee1df/ZQoIYssAkTeUz05h/images/guides/how-to-create-scheduled-deliveries/msteams-select-template.png?fit=max&auto=format&n=ZQoIYssAkTeUz05h&q=85&s=1c11c82bddacbb349452505065b7a163" alt="" width="1556" height="637" data-path="images/guides/how-to-create-scheduled-deliveries/msteams-select-template.png" />
</Frame>

5. Select your Microsoft account and target Teams channel
6. Once added, click **Edit** on the workflow
7. Select the **When a Teams webhook request is received** trigger
8. Copy the **HTTP URL**

<Frame>
  <img src="https://mintcdn.com/lightdash-mintlify-9d2ee1df/ZQoIYssAkTeUz05h/images/guides/how-to-create-scheduled-deliveries/msteams-template-flow.png?fit=max&auto=format&n=ZQoIYssAkTeUz05h&q=85&s=39732f555bc24ca3673aac16c913443c" alt="" width="1038" height="583" data-path="images/guides/how-to-create-scheduled-deliveries/msteams-template-flow.png" />
</Frame>

9. Use that HTTP URL in the webhook field in Lightdash

For more details, see the [official Microsoft documentation](https://support.microsoft.com/en-us/office/create-incoming-webhooks-with-workflows-for-microsoft-teams-8ae491c7-0394-4861-ba59-055e33f75498).

Once you have a webhook, add it to the the list of destinations in the scheduled deliveries form. You can also test how it looks on Microsoft teams by pressing `send now`.

## Configuring the default time zone

Project admins can set the default time zone used for scheduled deliveries across the project in the `Project settings` --> `Syncs & Scheduled deliveries`.

<Frame>
  <img src="https://mintcdn.com/lightdash-mintlify-9d2ee1df/ZQoIYssAkTeUz05h/images/guides/how-to-create-scheduled-deliveries/project-default-time-zone-6934eca82e7b3a4e03ee345cf461d782.jpg?fit=max&auto=format&n=ZQoIYssAkTeUz05h&q=85&s=06962f9d802f01e07e3dc16c0ecfa311" alt="" width="2806" height="1476" data-path="images/guides/how-to-create-scheduled-deliveries/project-default-time-zone-6934eca82e7b3a4e03ee345cf461d782.jpg" />
</Frame>

Scheduled deliveries will be set to the project's default time zone that you pick here.

<Info>
  If you update the project's default time zone, then scheduled deliveries where
  the time zone hasn't been customized will automatically be translated to use
  the new default time zone.
</Info>

Users can customize the time zone used in a scheduled delivery. This will override the project default for that scheduled delivery.

For example:

* my project default time zone is set to UTC
* I have a scheduled delivery set to `Weekly on Monday at 15:00`
* I change the project default time zone to `(UTC -5:00) America/New York`
* my scheduled delivery will now be set to `Weekly on Monday at 10:00`

## Configuring download link expiration

By default, download links in scheduled deliveries expire after 3 days. Organization admins can change this from **Settings → Organization → Exporting**.

### Settings

* **Download link expiry (days)** — the base expiry that applies to every channel. Accepts 1–365 days.
* **Set a different expiry for specific channels** — when enabled, you can override the base for individual channels you have set up: Email, Slack, Microsoft Teams, and Google Chat. Leave a channel blank (or click the ✕ in the input) to inherit the base.

Only channels your organization has configured appear in the per-channel section. If a channel is later disabled, any saved override is preserved but hidden.

### How expiry is resolved

For each delivery, Lightdash picks the first value that is set, in this order:

```
organization channel override → organization base → environment channel default → environment base default
```

The environment defaults come from the `PERSISTENT_DOWNLOAD_URL_EXPIRATION_SECONDS*` variables on self-hosted instances and ship with sensible defaults on Lightdash Cloud.

### Long-lived links (more than 7 days)

AWS presigned S3 URLs cannot live longer than 7 days. When you set an expiry above 7 days, Lightdash transparently switches that channel to a persistent download URL — a stable app link that mints a fresh short-lived S3 URL on each access. No additional configuration is required, and shorter expiries continue to use direct S3 links as before.

<Info>
  Self-hosted instances can still set instance-wide defaults with the [persistent download URL environment variables](/self-host/customize-deployment/environment-variables#persistent-download-urls). Organization settings override those defaults when present.
</Info>
