# Actions > Automate Flax with trigger→effect actions — a control change, schedule, threshold, or button that fires webhooks, Slack, Discord, or email, with full run history. *[View this page in the Flax docs](https://flax-analytics.com/docs/automation-ai/actions)* Actions are Flax's automation framework. An action fires on a single **trigger** and runs an ordered list of **effects**. Use them to notify a channel when a metric crosses a threshold, to fan a dashboard control change out to an external system, or to give viewers a button that kicks off a follow-up. Manage them at `/app/settings/automation`. > [!IMPORTANT] > Actions never write to your data warehouse. They send notifications and call > allow-listed in-app operations only — there is no path from an action to a > warehouse write. ## Triggers | Trigger | Fires when… | | --- | --- | | **Manual** | A viewer clicks an action button on a dashboard. | | **Schedule** | A cadence elapses (hourly, daily, weekly — see [Scheduled deliveries](/docs/automation-ai/scheduled-deliveries)). | | **Threshold** | A measure crosses a comparison you set (`>`, `>=`, `<`, `<=`, `=`, `!=`). | | **Control** | A dashboard filter or parameter changes. | ## Effects An action runs its effects in order. Effects are isolated — if one fails the rest still run, and the run is marked *partial*. | Effect | What it does | | --- | --- | | **Webhook** | Signed HTTP POST (HMAC-SHA256 signature, SSRF-guarded, retried on 5xx). | | **Slack** | Post to a Slack incoming webhook. | | **Discord** | Post to a Discord incoming webhook. | | **Email** | Send email via Flax's mailer. | | **Flax action** | Run an allow-listed in-app operation. | Control triggers are limited to webhook, Slack, and Discord effects, and are debounced, so a burst of filter changes can't spam a channel. ## Run history Every fire is recorded. Open an action's **History** to see each run's overall status — success, partial, failed, or running — with per-effect results (success, failed, or skipped), the trigger, who triggered it, and timestamps. Runs are retrieved from `GET /api/actions/{id}/runs` and de-duplicated so a retry doesn't double-fire. ## Access and oversight An action has an **audience** that governs who it applies to and who can manage it: - **Custom** — owner-only. - **Team** — managed by a team lead or an org admin. - **Org** — managed by an org admin. Admins and team leads see the actions they oversee under "Shared actions you oversee". A manual or control run authorizes by the caller's view access to the dashboard, then runs the effects under the action owner's identity, rate-limited per user. ## Related - [Scheduled deliveries](/docs/automation-ai/scheduled-deliveries) — recurring deliveries and alerts. - [Interactivity](/docs/visualizations/interactivity) — the dashboard controls that fire control triggers. - [Webhooks](/docs/developers/webhooks) — receiving signed webhook effects.