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
| Field | Type | Required | Description |
|---|---|---|---|
title | string | Yes | The name that appears in the dashboard list and header. Choose a descriptive name that helps users understand the dashboard's purpose. |
widgets | array | Yes | The 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:
| Type | Value | Description |
|---|---|---|
| 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
| Field | Type | Required | Description |
|---|---|---|---|
type | string | Yes | Determines how data is visualized. Must be one of: "TEXT", "SINGLE_VALUE", "GRAPH", "TABLE". Choose based on what you want to communicate. |
title | string | Yes | The header text displayed above the widget. Should clearly describe what the widget shows. |
order | integer | Yes | Controls the layout sequence (0-indexed). Widgets with lower order values appear first. Use this to prioritize important information. |
width | integer | Yes | Controls horizontal space in grid units. Larger values create wider widgets for more detailed visualizations. |
height | integer | Yes | Controls vertical space in grid units. Larger values create taller widgets for graphs with more data points or tables with more rows. |
dataSources | array | Yes | Connects the widget to actual data. Each data source represents a specific metric or monitor. Must be null or empty [] for TEXT widgets. |
options | object | Yes | Fine-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.
| Type | Value | Description |
|---|---|---|
| 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"
}| Field | Type | Required | Description |
|---|---|---|---|
dataSourceId | string | Yes | A local identifier you assign to reference this data source within the widget. Useful when distinguishing between multiple data sources. |
type | string | Yes | Must be "METRICS" |
timeSeriesId | string (UUID) | Yes | The 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"
}| Field | Type | Required | Description |
|---|---|---|---|
dataSourceId | string | Yes | A local identifier you assign to reference this data source within the widget. |
type | string | Yes | Must be "MONITOR" |
monitorId | string (UUID) | Yes | The 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" }| Field | Type | Required | Description |
|---|---|---|---|
content | string | Yes | The 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" }| Field | Type | Required | Description |
|---|---|---|---|
field | string | Yes | Specifies 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 }| Field | Type | Required | Description |
|---|---|---|---|
showThresholds | boolean | Yes | When 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"] }| Field | Type | Required | Description |
|---|---|---|---|
fields | array of string | Yes | Defines 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
orderfield should be unique across widgets to ensure predictable layout
Updated about 2 hours ago
