# Dashboards and sharing

> Source: https://docs.clonepartner.com/using/dashboards/

<!-- sources: ui/src/views/DashboardDetailView.vue, ui/src/views/DashboardEditorView.vue, ui/src/views/PublicDashboardView.vue, ui/src/views/JobDetailView.vue, ui/src/components/dashboard/DashboardRenderer.vue, ui/src/components/dashboard/widgets/DashboardExplorerWidget.vue, references/envoy/dashboards.md -->

# Dashboards and sharing

A Dashboard is a widget page bound to a Job. It shows status, data, and progress to operators, collects configuration through input widgets, and can be shared with people outside the team through a public link. This page covers viewing, editing, and sharing Dashboards from the UI; writing dashboard YAML belongs to [Authoring dashboards](/building/authoring-dashboards/).

## Viewing a dashboard

Open a Job and select its Dashboard, or navigate to a Dashboard directly. The header shows the Dashboard name and description; the body renders the widgets defined in its YAML — headings, stats, progress, charts, tables, task progress, curated Data Explorer views, forms, field mappings, and action buttons. Multi-page Dashboards show a page switcher.

Widget data is fetched read-only from the server. Dashboards with a configured refresh interval reload widget data automatically and show a refreshing indicator; actions can also refresh specific widgets after they complete.

<!-- screenshot: dashboards-detail | A Job's Dashboard with stat, table, and task progress widgets rendered, and the Share link and overflow actions in the header -->

### Explorer widgets

Explorer widgets embed a curated Data Explorer view. Viewers can filter and page within the columns the author declared; the author's base query always applies and cannot be removed. When the author enables exports, the widget's **Export** menu offers **Current page as CSV**, **Export all as CSV**, and **Export all as NDJSON**.

### Forms and field mappings

Form and field-mapping widgets read and write the Job's configuration. Operators use them to set field mappings, stage selections, and other options that Tasks read on the next run. Each Job Run snapshots the configuration at start time, so later edits do not change what an earlier run recorded. The schema behind these inputs is defined by implementers — see [Job config: forms and field mapping](/building/job-config/).

### Actions

Action widgets run a Task, run the Job, or call an approved connector method. Every action asks for confirmation before dispatch, and completed actions can report status inline.

## To add a dashboard to a job

1. On the Job's detail page, select **Add dashboard** in the Dashboards section.
2. In the **Add dashboard** dialog, enter a **Name** and optional **Description**, and pick a **Start from** source — "You can start blank, copy an existing job dashboard, or use a template from the job template."
3. Select **Create**. The editor opens so you can review the YAML before sharing.

A dashboard template belongs to a Job Template; its YAML is snapshotted onto the Dashboard when the Dashboard is created. Editing the template later affects future Dashboards, not existing ones.

## To edit a dashboard

1. On the Dashboard, open the header **More actions** menu and select **Edit dashboard**.
2. The editor shows **Name** and **Description** fields and the dashboard YAML in a code editor. The header notes: "Edits affect only this job's dashboard snapshot."
3. Select **Save** to apply and return to the Dashboard.

The editor edits the Dashboard's own YAML snapshot — for what the YAML can contain, see the [Dashboard YAML reference](/reference/dashboards/) and [Authoring dashboards](/building/authoring-dashboards/).

To delete a Dashboard, open the **More actions** menu on the detail or editor page and select **Delete dashboard**, then confirm. Deletion is permanent.

<!-- screenshot: dashboards-editor | Dashboard editor with the Name and Description fields above the YAML editor and the Save button in the header -->

## To share a dashboard publicly

1. On the Dashboard, select **Create share link** (or **Share link** when one already exists).
2. The **Public share link** dialog shows the URL — "Anyone with this link can view the dashboard (read-only widget data)." Copy it with the copy button.
3. Send the link through an approved channel. To withdraw access, reopen the dialog and select **Revoke link**.

<!-- screenshot: dashboards-share-dialog | Public share link dialog showing the tokenized URL with copy and Revoke link buttons -->

### What anonymous viewers see

The public page requires no login. It renders the Dashboard name, description, any configured navbar links, and the widgets — but from a sanitized definition: connector call configurations, shared query internals, scope internals, and action dispatch details are never sent to the browser. Pages marked `public: false` in the YAML are omitted entirely, so operator-only diagnostics stay behind authentication. If the link has been revoked, viewers see "This share link is invalid or has been revoked."

Widget data on the public page is read-only. Two additional capabilities are gated separately:

- **Public inputs** (forms, field mappings): require both the server switch `ENVOY_PUBLIC_DASHBOARD_INPUT_ENABLED` (off by default) and `allow_public_input: true` in the dashboard YAML. Per-row transform editors on field mappings are operator-only and never appear on the public page.
- **Public actions**: require the server switch `ENVOY_PUBLIC_DASHBOARD_ACTIONS_ENABLED`, `allow_public: true` on the action, and placement on a public page. Public actions are deduplicated per widget, support cooldowns, and are audited.

Public viewing itself can be disabled deployment-wide with `ENVOY_PUBLIC_DASHBOARDS_ENABLED`. These switches are server configuration — see [Server configuration](/deployment/server-configuration/).

:::callout{type="danger"}
The share URL is a bearer credential: anyone who has it can view every public page of the Dashboard without logging in. Before sharing, view the link in a private browser session, confirm operator-only pages are absent, verify tables and exports are scoped, and make sure no credentials or internal identifiers render. Revoke the link when access should end.
:::

## Related

- [Authoring dashboards](/building/authoring-dashboards/) — write the dashboard YAML behind these screens
- [Dashboard YAML reference](/reference/dashboards/) — every key and widget type
- [Job config: forms and field mapping](/building/job-config/) — the schema behind input widgets
- [Jobs and job templates](/using/jobs/) — the Job a Dashboard is bound to
