# Scheduled deliveries > Deliver a dashboard or chart on a recurring schedule to email, Slack, or a webhook — optionally only when a metric crosses an alert threshold. *[View this page in the Flax docs](https://flax-analytics.com/docs/automation-ai/scheduled-deliveries)* A scheduled delivery sends a dashboard or chart to people on a recurring cadence, so a report lands without anyone opening Flax. Optionally, attach an **alert** so a delivery only fires when a metric crosses a threshold. Set up personal deliveries from a dashboard's own delivery tab; admins oversee all of them at `/app/settings/automation`. ## What you can deliver Deliveries carry either a **dashboard** or a **chart** and send it over one of three channels: | Channel | Delivery | | --- | --- | | **Email** | The dashboard rendered inline, with a PDF attached and a link back to Flax. | | **Slack** | Posts to a Slack incoming webhook. | | **Webhook** | Signed HTTP POST to your endpoint. | Recipients are set by the delivery's **audience**: specific emails (custom), a team, or the whole organization. ## Cadence Schedules run on a structured cadence, interpreted in **UTC** — not raw cron: | Frequency | Fields | | --- | --- | | **Hourly** | Minute (0–59). | | **Daily** | Hour and minute. | | **Weekly** | Weekday, hour, and minute. | ## Alerts Attach an alert so a delivery fires only when a metric moves. An alert names a model and measure and a comparison against a threshold: | Operator | Meaning | | --- | --- | | `gt` / `gte` | greater than / or equal | | `lt` / `lte` | less than / or equal | | `eq` / `neq` | equal / not equal | When it runs, Flax evaluates a one-row query for the measure and only delivers if the comparison holds. ## When a report can't be rendered An email delivery renders the dashboard as its owner, under exactly their access. If that render fails — a slow warehouse, a timeout, a temporary outage — Flax **does not send a partial email**. A report that arrives without its preview and PDF looks like a report saying nothing happened, so instead the delivery is retried after 5, 15 and 45 minutes. If it still can't be built after that, nothing is sent for that run and the next scheduled run proceeds normally. A retry that would overrun the next scheduled run is skipped in favour of the fresher report. Some deliveries are text notices by design, and those are unaffected: **alerts** (which report a threshold, not a dashboard), resources that have no printable view, and organizations without the Export capability. They send a short notice with a link. Self-hosting: set `FLAX_ERROR_EMAIL` to receive a batched digest whenever a delivery gives up, along with any other application errors. ## Managing deliveries Create, pause, and delete deliveries at `/app/settings/automation`. Org admins see every delivery in the organization; team leads see their teams'. Each row shows the owner, resource, schedule, channel, next run, and an active/pause toggle. Personal "specific emails" schedules are created and edited from the dashboard they deliver. ## Related - [Actions](/docs/automation-ai/actions) — schedule and threshold triggers that run effects. - [Exporting charts](/docs/visualizations/exporting) — server-side rendering for downloads and embeds.