Custom dashboards

Custom dashboards

Custom dashboards let you track the metrics on your data that matter most to your team, beyond Monte Carlo's standard dashboards. Whether you're a data team lead monitoring key pipelines or an executive wanting a high-level summary of data health, you control what appears on the dashboard.

What you can do

Build dashboards with multiple widget types:

  • Chart — Visualize metrics over time with interactive time series charts
  • Single value — Display the most recent value of a metric at a glance
  • Table — View metrics in tabular format for easy comparison
  • Text — Add notes, descriptions, or markdown content for context
  • Monitor status — Show the current health of a selection of monitors

Monitors supported

  • Chart, Single value, and Table widgets support Table metrics and Metric monitor metrics
  • Monitor status widgets support all monitors

Configuration

  • Time filtering — Choose preset ranges (past day, 3 days, week, 2 weeks, 4 weeks) or set custom date ranges.
  • Widget sizing — Size each widget to 25%, 50%, 75%, or 100% width to fit your layout.
  • Existing metrics — Use your existing asset metrics (and soon metric monitor data); no need to create new monitors to get started.
  • Code mode — Edit a dashboard as JSON directly in the UI for advanced control (for example, setting the order of widgets). See the schema reference later in this documentation.

Access

  • Custom dashboards are available to all users with Dashboard Edit permissions.
  • Custom dashboards are created in Domains. Users must have dashboard edit permissions in a domain in order to edit the dashboard.

Custom Dashboard Code Schema

The dashboard code uses camelCase for all field names. The root structure contains two fields:

{
  "title": "string",
  "widgets": [...]
}

Root-Level Fields

FieldTypeRequiredDescription
titlestringYesThe name that appears in the dashboard list and header. Choose a descriptive name that helps users understand the dashboard's purpose.
widgetsarrayYesThe collection of visual components that make up your dashboard. Each widget displays specific data or content.

Widget Types

The CustomDashboardWidgetType enum defines four supported widget types:

TypeValueDescription
TEXT"TEXT"A static text widget for displaying markdown or plain text content. Useful for adding descriptions, instructions, or context to your dashboard.
SINGLE_VALUE"SINGLE_VALUE"Displays a single metric value prominently. Ideal for KPIs, current status indicators, or highlighting important numbers.
GRAPH"GRAPH"Renders time-series data as a line chart. Used for visualizing trends, patterns, and changes over time.
TABLE"TABLE"Displays data in a tabular format with configurable columns. Suitable for showing detailed records or monitor status lists.

Widget Structure

Each widget in the widgets array has the following structure:

{
  "type": "WIDGET_TYPE",
  "title": "string",
  "order": 0,
  "width": 1,
  "height": 1,
  "dataSources": [...],
  "options": {...}
}

Widget-Level Fields

FieldTypeRequiredDescription
typestringYesDetermines how data is visualized. Must be one of: "TEXT", "SINGLE_VALUE", "GRAPH", "TABLE". Choose based on what you want to communicate.
titlestringYesThe header text displayed above the widget. Should clearly describe what the widget shows.
orderintegerYesControls the layout sequence (0-indexed). Widgets with lower order values appear first. Use this to prioritize important information.
widthintegerYesControls horizontal space in grid units. Larger values create wider widgets for more detailed visualizations.
heightintegerYesControls vertical space in grid units. Larger values create taller widgets for graphs with more data points or tables with more rows.
dataSourcesarrayYesConnects the widget to actual data. Each data source represents a specific metric or monitor. Must be null or empty [] for TEXT widgets.
optionsobjectYesFine-tunes how the widget displays its data. Structure varies by widget type.

Data Source Types

The dataSources array contains objects that define where the widget gets its data. Each data source has a type field that determines its structure.

TypeValueDescription
METRICS"METRICS"Fetches metric data points from a time series. Used for numerical measurements over time.
MONITOR"MONITOR"Fetches monitor metadata including status, last run time, breach information, etc.

METRICS Data Source

Used to display time-series metric data from a specific metric time series.

{
  "dataSourceId": "string",
  "type": "METRICS",
  "timeSeriesId": "uuid-string"
}
FieldTypeRequiredDescription
dataSourceIdstringYesA local identifier you assign to reference this data source within the widget. Useful when distinguishing between multiple data sources.
typestringYesMust be "METRICS"
timeSeriesIdstring (UUID)YesThe UUID of the time series to fetch data from. Obtain this from the metrics metadata or monitor configuration.

MONITOR Data Source

Used to display monitor metadata such as status, last run time, and breach information.

{
  "dataSourceId": "string",
  "type": "MONITOR",
  "monitorId": "uuid-string"
}
FieldTypeRequiredDescription
dataSourceIdstringYesA local identifier you assign to reference this data source within the widget.
typestringYesMust be "MONITOR"
monitorIdstring (UUID)YesThe UUID of the monitor to fetch metadata from. Obtain this from the monitor's details page or API.

Widget Options

The options object structure varies depending on the widget type. Each widget type requires specific options.

TEXT Widget Options

Used for static text content display.

{ "content": "string" }
FieldTypeRequiredDescription
contentstringYesThe actual text to display. Use for instructions, descriptions, or contextual information.

SINGLE_VALUE Widget Options

Used to display a single prominent metric value.

{ "field": "string" }
FieldTypeRequiredDescription
fieldstringYesSpecifies which data field to highlight from the data source. Common values include "Value" for the primary metric value.

GRAPH Widget Options

Used to configure time-series graph visualization.

{ "showThresholds": true }
FieldTypeRequiredDescription
showThresholdsbooleanYesWhen true, displays threshold lines on the graph (e.g., warning/critical thresholds) to help users quickly identify when values exceed acceptable ranges.

TABLE Widget Options

Used to configure which columns appear in the table.

{ "fields": ["Field1", "Field2"] }
FieldTypeRequiredDescription
fieldsarray of stringYesDefines which columns to display and their order. Choose fields that provide the most relevant information for your use case.

Complete JSON Examples

TEXT Widget

A simple text widget for displaying static content or instructions.

{
  "title": "My Dashboard",
  "widgets": [
    {
      "type": "TEXT",
      "title": "Welcome Message",
      "order": 0,
      "width": 2,
      "height": 1,
      "dataSources": [],
      "options": {
        "content": "Hello World! This is a text widget."
      }
    }
  ]
}

SINGLE_VALUE Widget with METRICS Data Source

Displays a single metric value from a time series.

{
  "title": "KPI Dashboard",
  "widgets": [
    {
      "type": "SINGLE_VALUE",
      "title": "Current Row Count",
      "order": 0,
      "width": 1,
      "height": 1,
      "dataSources": [
        {
          "dataSourceId": "ds1",
          "type": "METRICS",
          "timeSeriesId": "c6d877eb-6579-4c2e-be02-8daa47c86c62"
        }
      ],
      "options": {
        "field": "Value"
      }
    }
  ]
}

GRAPH Widget with Multiple METRICS Data Sources

Displays multiple time series on a single graph for comparison.

{
  "title": "Metrics Comparison",
  "widgets": [
    {
      "type": "GRAPH",
      "title": "Row Count Trends",
      "order": 0,
      "width": 2,
      "height": 2,
      "dataSources": [
        {
          "dataSourceId": "ds1",
          "type": "METRICS",
          "timeSeriesId": "0eee08ea-c538-4168-9b32-11384de97bbf"
        },
        {
          "dataSourceId": "ds2",
          "type": "METRICS",
          "timeSeriesId": "101705ef-e063-4ab0-b9df-bbb8a20956db"
        }
      ],
      "options": {
        "showThresholds": false
      }
    }
  ]
}

TABLE Widget with MONITOR Data Source

Displays a table with monitor status information.

{
  "title": "Monitor Status Dashboard",
  "widgets": [
    {
      "type": "TABLE",
      "title": "Monitor Status",
      "order": 0,
      "width": 3,
      "height": 2,
      "dataSources": [
        {
          "dataSourceId": "ds1",
          "type": "MONITOR",
          "monitorId": "7f898441-b294-4d0f-bc5a-9c6df690a733"
        }
      ],
      "options": {
        "fields": ["Start", "End"]
      }
    }
  ]
}

Notes

  • All UUIDs must be valid UUID v4 format strings (e.g., "c6d877eb-6579-4c2e-be02-8daa47c86c62")
  • The JSON uses camelCase for field names (e.g., dataSources, dataSourceId, timeSeriesId, showThresholds)
  • When updating an existing dashboard, all widgets are replaced with the widgets defined in the JSON
  • The order field should be unique across widgets to ensure predictable layout