> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lightdash.com/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/m9_5aqBLRTvc9j-a/images/guides/how-to-create-scheduled-deliveries/scheduled-deliveries-three-dot-menu-922af4a879c906642fe00d5660fc0b9b.png?fit=max&auto=format&n=m9_5aqBLRTvc9j-a&q=85&s=27768cb96ad96203a726b9b07b04ae16" 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 shows you the list of existing scheduled deliveries for your saved chart or dashboard, and gives you the option to start a new one.

<Frame>
  <img src="https://mintcdn.com/lightdash/8kSAjR1i52f-xIJO/images/guides/how-to-create-scheduled-deliveries/scheduled-delivery-empty-state.png?fit=max&auto=format&n=8kSAjR1i52f-xIJO&q=85&s=f6807734402c4b112330bc43ff3e80fc" alt="" width="940" height="691" data-path="images/guides/how-to-create-scheduled-deliveries/scheduled-delivery-empty-state.png" />
</Frame>

Click `New delivery` to open the scheduled delivery configuration. The sidebar splits everything into a **Delivery** section (when and where it's sent) and a **Content** section (what's inside it and how it's written), with a live preview and your next few send dates always visible on the right.

### Setup

Under `Delivery > Setup`, name your delivery, set how often it runs (hourly, daily, weekly, monthly, or a custom Cron expression), and pick a time zone — deliveries follow your project's default time zone unless you override it here. Add recipients as email addresses or Slack channels; you can target a person in Slack with `@persons-name` or a channel with `#channel-name`. If your organization has them enabled, [Microsoft Teams](#sending-to-microsoft-teams) and [Google Chat](#sending-to-google-chat) also show up here as destinations.

<Frame>
  <img src="https://mintcdn.com/lightdash/8kSAjR1i52f-xIJO/images/guides/how-to-create-scheduled-deliveries/scheduled-delivery-setup.png?fit=max&auto=format&n=8kSAjR1i52f-xIJO&q=85&s=d54afb176582824693359ff341c907dc" alt="" width="1146" height="906" data-path="images/guides/how-to-create-scheduled-deliveries/scheduled-delivery-setup.png" />
</Frame>

### Data & format

Under `Content > Data & format`, choose how the content is delivered — `Image`, `CSV`, `.xlsx`, or `PDF` — and, for dashboards, adjust the [saved filters](/guides/limiting-data-using-filters#adding-saved-filters-to-your-dashboard) so different recipients can get a different cut of the same dashboard without you having to duplicate it. Row and cell limits for CSV/XLSX exports are covered in [Export limits](/references/workspace/export-limits).

### Message

Under `Content > Message`, write the static message that goes out with every delivery. If you'd rather Lightdash write it for you from the data itself, turn on an [AI agent](#ai-agent) instead.

## AI agent

<Info>
  AI-enhanced messages require the [AI agents](/guides/ai-agents) add-on, available for Cloud Pro and Enterprise plans. [View pricing](https://www.lightdash.com/pricing)
</Info>

Instead of a static message, Lightdash can write the delivery message from your data on **every send** — summarizing the results and calling out notable changes or trends, so recipients get the headline before they even open the attachment.

<Frame>
  <img src="https://mintcdn.com/lightdash/8kSAjR1i52f-xIJO/images/guides/how-to-create-scheduled-deliveries/scheduled-delivery-ai-agent.png?fit=max&auto=format&n=8kSAjR1i52f-xIJO&q=85&s=a3833ae718f6c415c72ee602ee7aa67e" alt="" width="1160" height="920" data-path="images/guides/how-to-create-scheduled-deliveries/scheduled-delivery-ai-agent.png" />
</Frame>

Under `Content > AI agent`, toggle on **AI-enhanced message** and edit the **Instructions** to tell Lightdash what to focus on. You can optionally pick an **AI agent** to write the message using that agent's tools, context, and knowledge instead of a plain summary.

## Editing and deleting your scheduled deliveries

Selecting a scheduled delivery from the list shows its details: schedule and format, next and last run, recipients, and an AI summary preview if you've turned one on. From here you can toggle the delivery active or inactive, jump to `Edit` to change its configuration, run it immediately with `Send now`, view its run history, or delete it with the trash icon.

<Frame>
  <img src="https://mintcdn.com/lightdash/8kSAjR1i52f-xIJO/images/guides/how-to-create-scheduled-deliveries/scheduled-deliveries-list-detail.png?fit=max&auto=format&n=8kSAjR1i52f-xIJO&q=85&s=cd823a5867f729b4a836ce48c5429c0a" alt="" width="944" height="744" data-path="images/guides/how-to-create-scheduled-deliveries/scheduled-deliveries-list-detail.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/mgg9xgxF21bIhPiv/images/guides/how-to-create-scheduled-deliveries/scheduled-deliveries-overview.png?fit=max&auto=format&n=mgg9xgxF21bIhPiv&q=85&s=e772231af521c58fc7ce5422754606b6" 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/y1N3QTBqIcVeABB2/images/guides/how-to-create-scheduled-deliveries/run-details-modal.png?fit=max&auto=format&n=y1N3QTBqIcVeABB2&q=85&s=80dfe043c667487fb7827153fc67b219" 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/mgg9xgxF21bIhPiv/images/guides/how-to-create-scheduled-deliveries/reassign-owner-single.png?fit=max&auto=format&n=mgg9xgxF21bIhPiv&q=85&s=0ed5f74ef478ae4316b0fc3b214627f6" 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/mgg9xgxF21bIhPiv/images/guides/how-to-create-scheduled-deliveries/reassign-owner-bulk.png?fit=max&auto=format&n=mgg9xgxF21bIhPiv&q=85&s=fbb5f97b63de1fa41e525fc432a22c7c" 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/6_8YPA7cuKDA_q3F/images/guides/how-to-create-scheduled-deliveries/msteams-select-template.png?fit=max&auto=format&n=6_8YPA7cuKDA_q3F&q=85&s=be944b5237628522e8f8d7ed93d6f40d" 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/6_8YPA7cuKDA_q3F/images/guides/how-to-create-scheduled-deliveries/msteams-template-flow.png?fit=max&auto=format&n=6_8YPA7cuKDA_q3F&q=85&s=3b2ddb608bc0afd23b4846acefd773f0" 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`.

## Sending to Google Chat

<Info>
  Google Chat is available when your organization has this destination enabled.
</Info>

You can send your Lightdash scheduled deliveries directly to a Google Chat space using an incoming webhook.

1. In Google Chat, open the space you want to send deliveries to
2. [Create a webhook](https://developers.google.com/workspace/chat/create-webhook) for that space and copy its URL
3. Paste the webhook URL into the Google Chat destination field in the scheduled deliveries form

You can test how it looks in Google Chat 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/m9_5aqBLRTvc9j-a/images/guides/how-to-create-scheduled-deliveries/project-default-time-zone-6934eca82e7b3a4e03ee345cf461d782.jpg?fit=max&auto=format&n=m9_5aqBLRTvc9j-a&q=85&s=f01178d9bab423225c35be23d5b4f017" 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>
