Skip to content

Widget Templates Reference

Complete reference for all seven built-in widget templates, their slots, supported sizes, and style options.

Stat

A single metric with optional label and change indicator. Best for KPIs and at-a-glance numbers.

Slots

SlotTypeRequiredDescription
labelstringYesWhat the metric represents
valuestringYesThe main value to display
changestringNoChange indicator (e.g., "+12.4%")

Supported Sizes

  • Compact
  • Standard
  • Expanded

Example Data Mapping

label: "Monthly Revenue"          (static)
value: {{ data.revenue.total }}    (dynamic, from data source)
change: {{ data.revenue.change }}  (dynamic)

Card

A content card with title, body, and optional tag. Best for alerts, updates, and status messages.

Slots

SlotTypeRequiredDescription
tagstringNoCategory or status label
titlestringYesCard heading
bodystringYesCard body text

Supported Sizes

  • Standard
  • Expanded

Example Data Mapping

tag: {{ data.priority }}
title: "Order #{{ data.order_id }} shipped"
body: "{{ data.item_count }} items on the way to {{ data.city }}"

List

An ordered list of items with optional status indicators. Best for tasks, feeds, and queues.

Slots

SlotTypeRequiredDescription
titlestringYesList heading
itemsarrayYesArray of list items
items[].textstringYesItem text content
items[].statusstringNoStatus indicator (e.g., "done", "pending")

Supported Sizes

  • Standard
  • Expanded

Example Data Mapping

title: "Today's Tasks"
items: {{ data.tasks }}         (array from data source)
items[].text: {{ item.name }}
items[].status: {{ item.completed }}

Table

Rows and columns for structured data. Best for dashboards, leaderboards, and monitoring.

Slots

SlotTypeRequiredDescription
titlestringYesTable heading
columnsarrayYesColumn header labels
rowsarrayYesArray of row data

Supported Sizes

  • Standard
  • Expanded

Example Data Mapping

title: "Service Health"
columns: ["Service", "Region", "Status"]    (static)
rows: {{ data.services }}                   (array from data source)

Chart

A bar chart for visualizing trends and comparisons. Best for time-series data and relative values.

Slots

SlotTypeRequiredDescription
titlestringYesChart heading
valuestringNoSummary value displayed alongside the title
barsarrayYesArray of data points
bars[].labelstringYesX-axis label for each bar
bars[].valuenumberYesNumeric value determining bar height

Supported Sizes

  • Standard
  • Expanded

Example Data Mapping

title: "Weekly Signups"
value: {{ data.total_signups }}
bars: {{ data.daily_signups }}
bars[].label: {{ item.day }}
bars[].value: {{ item.count }}

Image

An image from a URL with optional caption. Best for photos, charts, and visual content served by your API.

Slots

SlotTypeRequiredDescription
urlstringYesImage URL
captionstringNoText below the image

Supported Sizes

  • Compact
  • Standard
  • Expanded

Example Data Mapping

url: {{ data.chart_image_url }}
caption: "Generated {{ data.updated_at }}"

Text

A formatted text block. Best for digests, summaries, and message-style content.

Slots

SlotTypeRequiredDescription
eyebrowstringNoSmall text above the heading
headingstringYesMain heading
bodystringYesBody text

Supported Sizes

  • Standard
  • Expanded

Example Data Mapping

eyebrow: "Daily Digest"                    (static)
heading: {{ data.digest.title }}            (dynamic)
body: {{ data.digest.summary }}             (dynamic)

General Notes

  • Static values are hardcoded strings you enter in the dashboard
  • Dynamic values are mapped from data source fields using syntax
  • See the Liquid Templates reference for formatting and transformation options
  • All templates support dark mode automatically on the user's device

Ship native mobile experiences without building an app.