KaelioDocs

Dashboards

Build and share interactive dashboards with widgets, charts, and real-time data.

Dashboards let you combine multiple visualizations into a single view. You arrange widgets on a flexible grid, connect them to live data, and share the results with your team or publicly via link.

Creating a dashboard

Click New Dashboard from the Dashboards section. Provide a name, an optional description, and choose a scope:

ScopeVisibilityWho can edit
PersonalOnly youYou
CompanyAll users in your organizationAdmins only

The dashboard opens in edit mode with an empty first page, ready for widgets.

Pages

Dashboards support multiple pages to organize different views or report sections. Page tabs appear at the bottom of the dashboard.

  • Add a page with the + button
  • Rename a page by double-clicking its tab
  • Reorder pages by dragging tabs
  • Delete a page from its context menu (at least one page must remain)

Widgets

Widgets are the building blocks of a dashboard. Each widget displays data from a SQL query as a chart, table, or metric card.

Widget types

The following widget types are available:

TypeBest for
Metric CardSingle KPI values with trend indicators
Bar ChartComparisons across categories
Line ChartTrends over time
Area ChartCumulative trends
Pie ChartProportional breakdowns
WaterfallSequential value changes
BoxplotStatistical distributions
Data TableSortable, filterable tabular data
Title / SubtitleSection headings and text

Adding widgets

Use the quick bar at the bottom of the editor to select a widget type, then drag on the grid to place it. You can also use the AI option to describe what you want in plain English — the agent generates the SQL query, selects the right chart type, and configures the visualization.

Configuring widgets

Click a widget in edit mode to open the settings panel:

  • AI tab — describe what you want and let the agent generate the configuration
  • Manual tab — write a SQL query and map columns to chart axes, values, and labels
  • History tab — browse previous versions and roll back if needed

Widgets support formatting options for numbers, currencies, percentages, and dates. Data tables offer per-column formatting, sorting, search, and CSV download.

Arranging widgets

Drag widgets to reposition them on the grid. Resize from any edge or corner. By default, widgets auto-stack vertically. Switch to free placement mode from the tools menu for absolute positioning.

Keyboard shortcuts:

  • Arrow keys — nudge selected widget
  • Delete — remove widget
  • Ctrl+D — duplicate widget

Dashboard inputs

Inputs are dashboard-level filters that let viewers parameterize widget queries without editing SQL. Each input defines a variable that widgets can reference, so changing an input value refreshes every widget that uses it. Two input types are available: Date Range and Tree Select.

Input selections are saved per user — each person sees their own filter values when they open the dashboard.

Adding an input

In edit mode, click the Add dashboard input button in the toolbar above the widget grid. Choose Date Range or Tree Select, then configure the input in the settings panel. Inputs appear as interactive buttons in the dashboard toolbar.

Date Range

A date range input lets viewers pick a time period. The popover provides quick-select options (Last 7 days, Last 30 days, This month, Last month) and custom date pickers for precise control. You can type dates directly or use the calendar.

Enable the comparison range to add a secondary period for year-over-year or month-over-month analysis. When enabled, a comparison badge (for example, "vs 1m") appears on the input button.

FieldDescription
TitleLabel displayed on the input button
VariableName used in widget SQL (for example, dateRange1)
Comparison rangeOptional secondary period: None, Previous month, or Previous year

Tree Select

A tree select input lets viewers pick one or more values from a hierarchical list. The popover includes a searchable tree with checkboxes and an optional hierarchical selection mode where selecting a parent automatically selects all its children.

The tree data comes from a SQL query (or Python code) that you configure in the input settings. The query must return rows with columns for a unique key, a parent key (to build the hierarchy), and a display name.

FieldDescription
TitleLabel displayed on the input button
VariableName used in widget SQL (for example, filter1)
Key fieldColumn that uniquely identifies each row
Parent key fieldColumn referencing the parent row's key (use null for root items)
Name fieldColumn shown as the display label
Data sourceDatabase connection used to run the query
SQLQuery that returns the tree data
Search placeholderPlaceholder text shown in the search box
Hierarchical selectionWhen enabled, selecting a parent selects all children

Referencing inputs in widget SQL

Widgets reference dashboard inputs using {{variableName}} syntax in their SQL queries. Use the variable name you assigned when configuring the input.

SELECT product, SUM(revenue)
FROM sales
WHERE region IN {{region}}
  AND sale_date >= {{dateRange.start}}
  AND sale_date <= {{dateRange.end}}
GROUP BY product

When a tree select input has multiple selected values, the {{variable}} expands into a list automatically, so WHERE region IN {{region}} becomes WHERE region IN ('US', 'EU', 'APAC').

When a viewer changes an input value, all widgets whose SQL contains that variable refresh automatically.

Variable names default to filter1, filter2 for tree selects and dateRange1, dateRange2 for date ranges. You can rename them to something more descriptive like region or reportPeriod in the input settings.

User variables

Dashboard SQL can also reference the viewer's security properties using {{user.X}} syntax. These variables are populated automatically from the properties configured in Admin > Users > Security Properties and are available in both widget SQL and tree-select data SQL.

VariableSource
{{user.email}}Custom property from the user's profile
{{user.department}}Custom property from the user's profile
{{user.tenant_id}}Built-in: the user's organization
{{user.role}}Built-in: the user's assigned role

Any key defined in a user's security properties is available as {{user.key_name}}. Nested properties use dot notation — for example, {{user.location.region}}.

Using in widget SQL

SELECT product, SUM(revenue)
FROM sales
WHERE sales_rep_email = {{user.email}}
GROUP BY product

Each viewer sees only their own sales data. The placeholder is converted to a prepared statement parameter at runtime — values are never inlined into the SQL string.

Using in tree-select data SQL

Tree-select inputs can use {{user.X}} variables in their data query to personalize which filter options appear for each viewer:

SELECT DISTINCT department AS key,
       department AS name,
       NULL AS parent_key
FROM employees
WHERE manager_email = {{user.email}}

This shows only departments managed by the current viewer. When a tree-select query uses user variables, submitted selections are validated server-side against the authorized result set — any unauthorized values are silently removed.

Combining with dashboard inputs

User variables and dashboard input variables coexist in the same query. The user.* namespace is reserved for security properties; all other variable names come from dashboard inputs.

SELECT product, SUM(revenue)
FROM sales
WHERE region IN {{region}}
  AND sale_date >= {{dateRange.start}}
  AND sale_date <= {{dateRange.end}}
  AND sales_rep_email = {{user.email}}
GROUP BY product

Write {{user.X}} placeholders without surrounding quotes. The system handles quoting and type conversion automatically via prepared statements.

User variables are only available to authenticated viewers. Dashboards shared via public links do not have access to {{user.X}} variables.

Presets

You can save the current input selection as a named preset for quick access. Presets appear in a panel inside each input's popover, so you can switch between common filter combinations (for example, "Q1 2025" or "US Region") with one click. Presets are stored per dashboard and available to all viewers.

Sharing with preset inputs

When you share a dashboard via a public link, you can pre-select input values so viewers see the data you intend. Viewers can still change inputs on their end — their selections are reflected in the URL and don't affect other viewers.

Edit and preview modes

Toggle between modes with Ctrl+E or the toolbar buttons.

Edit mode shows the grid background, lets you add and configure widgets, and requires saving changes. Preview mode is the clean, read-only view where the dashboard copilot (AI assistant) is available for asking questions about the data.

Save changes manually with Ctrl+S or the Save button. Undo (Ctrl+Z) and Redo (Ctrl+Shift+Z) are available while editing.

Sharing

Click Share in the toolbar to create a public link. Options include:

  • Link expiration — never, 7 days, 30 days, or 1 year
  • Custom alias — human-readable label to track who the link was shared with
  • Preset input values — share with specific filters pre-selected
  • Embed mode — generate a URL for embedding in external sites, with options to show or hide the logo and page tabs

Access protection

You can optionally restrict access to shared dashboards:

  • Email domain restriction — require viewers to verify their email address via a one-time code (OTP). Only addresses matching the specified domain (e.g., @company.com) are accepted.
  • Password protection — require viewers to enter a password before accessing the dashboard.

These two options are mutually exclusive — a share link uses either email verification or password protection, not both.

When a viewer opens a protected link, they see an authentication form. For email-protected links, they enter their email, receive a 6-digit verification code, and submit it. For password-protected links, they enter the password directly.

After successful verification, the viewer receives a session token stored in their browser. This token lasts 30 days, so they do not need to re-authenticate on every visit.

Changing protection settings

If you change the protection settings on a share link (for example, updating the required email domain or changing the password), all existing viewer sessions are automatically invalidated. Viewers must re-authenticate with the new credentials.

You can revoke share links at any time.

Cloning and promoting

You can perform two actions on existing dashboards:

  • Clone a dashboard to create a personal copy with all its pages and widgets
  • Promote a personal dashboard to company scope (admin only) — this makes it visible to all users but restricts editing to admins

Auto-refresh

Configure a refresh schedule in dashboard settings:

ScheduleBehavior
DisabledManual refresh only
HourlyRefreshes every hour
DailyRefreshes once per day
WeeklyRefreshes once per week

Use the Refresh button in the toolbar for an on-demand refresh at any time.

On this page