Info Card
Flexible info card widget for ThingsBoard dashboards. Dynamic rows, title, subtitle and image URL are configured through datasource data key roles; static rows remain in widget settings. Includes glass style presets, auto-fit layout, optional row icons, hover-to-copy values, image positioning and custom CSS.
Info Card
Info Card displays a compact entity profile or status card using the latest values from ThingsBoard data keys. It can show a dynamic title, subtitle, image, and information rows from telemetry, attributes, or entity fields, plus optional static rows configured directly in the widget settings.
Use it for person cards, device overview cards, asset information panels, smart building dashboards, SCADA screens, and operator UI panels.
Features
- Dynamic title, subtitle, image URL, and info rows from datasource data keys.
- Static rows for fixed text such as department, location, support contact, or asset ID.
- Data-key-specific configuration for labels, icons, order, prefixes, suffixes, fallback values, and empty-value handling.
- Auto-fit, vertical, and horizontal layouts.
- Auto-fit image frame with responsive placeholder icon.
- Dark glass, light glass, and custom appearance presets.
- Optional row icons.
- Optional copy-on-hover action for row values.
- Scoped custom CSS using the
:cardroot selector.
Widget type
This widget is a Latest values widget. It reads the most recent value of each configured data key and updates when ThingsBoard pushes new values.
Data keys
Add one datasource and then add the data keys you want to display. Each data key can be telemetry, an attribute, or an entity field supported by ThingsBoard Latest values widgets.
The widget uses the Info Card role setting of each data key to decide how that key is used.
| Info Card role | Purpose | Expected value |
|---|---|---|
Info item row | Adds a row to the card content | Any text, number, boolean, or formatted value |
Main title | Uses this key as the main card title | Text, for example a name or device label |
Subtitle | Uses this key as the card subtitle | Text, for example a job title, device type, or status |
Image URL | Uses this key as the image source | Public URL, ThingsBoard-accessible image URL, or base64/data URL |
Only the first data key assigned to Main title, Subtitle, or Image URL is used for that role. All keys assigned to Info item row are rendered as rows.
Recommended data key examples
For a person profile card:
| Key | Type | Suggested role | Notes |
|---|---|---|---|
fullName | Attribute / entity field | Main title | Person or user name |
jobTitle | Attribute | Subtitle | Position or role |
photoUrl | Attribute | Image URL | Profile image URL |
department | Attribute | Info item row | Department row |
email | Attribute | Info item row | Email row, useful with copy-on-hover |
phone | Attribute | Info item row | Phone row, useful with copy-on-hover |
location | Attribute | Info item row | Office, floor, room, or zone |
employeeId | Attribute | Info item row | Employee or badge ID |
For a device or asset card:
| Key | Type | Suggested role | Notes |
|---|---|---|---|
name | Entity field | Main title | Device or asset name |
type | Entity field | Subtitle | Device or asset type |
imageUrl | Attribute | Image URL | Device photo, icon, or equipment image |
status | Telemetry / attribute | Info item row | Online, offline, alarm, maintenance, etc. |
serialNumber | Attribute | Info item row | Serial number |
firmware | Attribute | Info item row | Firmware version |
battery | Telemetry | Info item row | Add % as suffix when needed |
location | Attribute | Info item row | Site, area, room, GPS label, or zone |
Data key settings
Each data key has its own Info Card settings.
Common setting
| Setting | Values | Default | Description |
|---|---|---|---|
Info Card role | Info item row, Main title, Subtitle, Image URL | Info item row | Defines how this data key is used by the card. |
Main title settings
Visible when Info Card role = Main title.
| Setting | Type | Default | Description |
|---|---|---|---|
Fallback title | Text | Empty | Used when the title data key has no value. Leave empty to hide the title when data is missing. |
Subtitle settings
Visible when Info Card role = Subtitle.
| Setting | Type | Default | Description |
|---|---|---|---|
Fallback subtitle | Text | Empty | Used when the subtitle data key has no value. Leave empty to hide the subtitle when data is missing. |
Image URL settings
Visible when Info Card role = Image URL.
| Setting | Type | Default | Description |
|---|---|---|---|
Fallback image URL | Text | Empty | Used when the image data key has no value. Leave empty to show the placeholder icon. |
Info item row settings
Visible when Info Card role = Info item row.
| Setting | Type | Default | Description |
|---|---|---|---|
Icon | Material icon name | info | Icon displayed next to the row when row icons are enabled. Examples: email, phone, place, business, badge. |
Label override | Text | Empty | Custom row label. If empty, the widget uses the data key label or data key name. |
Order | Number | 100 | Sorting order. Lower values appear first. |
Prefix | Text | Empty | Text added before the value, only when the value exists. |
Suffix | Text | Empty | Text added after the value, only when the value exists. |
Empty value placeholder | Text | -- | Text shown when the value is missing and the row is not hidden. |
Hide this row when value is missing | Boolean | false | Hides this row when the value is empty. |
Widget settings
Layout
| Setting | Values | Default | Description |
|---|---|---|---|
Layout mode | Auto-fit content, Vertical, Horizontal | Auto-fit content | Controls the card layout. Auto-fit chooses a layout based on widget proportions and may wrap rows into columns on wide widgets. |
Hide dynamic rows when value is missing | true / false | false | Globally hides dynamic data-key rows with missing values. Static rows still use their own empty-value placeholder. |
Appearance
| Setting | Values / range | Default | Description |
|---|---|---|---|
Style preset | Dark glass, Light glass, Custom | Dark glass | Base visual style. |
Background | CSS color | #444444C0 | Custom preset only. Card background color. |
Border radius | CSS size | 16px | Custom preset only. Card border radius. |
Border color | CSS color | #E4E4E4E6 | Custom preset only. Card border color. |
Border width, px | 0–8 | 2 | Custom preset only. Card border width in pixels. |
Show row icons | true / false | true | Shows or hides icons next to info rows. |
Copy value on item hover | true / false | true | Shows a copy icon on row hover. Clicking it copies the displayed row value and briefly shows a check icon. |
Title font size | CSS size | 28px | Main title font size. |
Subtitle font size | CSS size | 16px | Subtitle font size. |
Content font size | CSS size | 15px | Info row value font size. |
Card padding | CSS size | 16px | Internal card padding. |
Advanced: Custom CSS | CSS | Empty | Custom preset only. Use :card as the root selector. |
Font weights are optimized for readability: title uses 700, row labels use 700, and row values use 500.
Image
| Setting | Values | Default | Description |
|---|---|---|---|
Show image | true / false | true | Shows or hides the image area. |
Image frame mode | Auto-fit frame, Fixed rounded square, Fixed circle, Fixed square | Auto-fit frame | Controls image sizing and shape. |
Image position | Start edge, Center, End edge | Center | In vertical layout: left / center / right. In horizontal layout: top / center / bottom. |
Placeholder icon | Material icon name | person | Icon shown when no image URL is available or the image fails to load. |
Fixed image size | CSS size | 148px | Used only by fixed image modes. |
Auto-fit frame uses the available image area and keeps the text area usable. The placeholder icon scales with the image frame size.
Static items
Static items are configured in the widget settings and do not require datasource data keys.
| Setting | Type | Default | Description |
|---|---|---|---|
Icon | Material icon name | info | Row icon. |
Label | Text | Label | Row label. |
Value | Text | Value | Static row value. |
Prefix | Text | Empty | Text added before the value when it exists. |
Suffix | Text | Empty | Text added after the value when it exists. |
Empty value placeholder | Text | -- | Text shown when the static value is empty. |
Order | Number | 100 | Sorting order. Lower values appear first. |
Value handling
- Dynamic rows use the latest value from each configured data key.
- Numeric values respect the ThingsBoard data key decimals and units configuration when available.
- Prefix and suffix are applied only when a real value exists.
- Missing values show the configured empty-value placeholder, unless the row is hidden.
- Copy-on-hover copies the displayed row value, including prefix and suffix.
Value ranges
This widget does not apply built-in semantic ranges, thresholds, or color-coded value bands. All incoming values are displayed as text. Use data key labels, prefixes, suffixes, ThingsBoard decimals/units, or custom CSS to adapt the presentation.
For configuration values, use these ranges:
| Setting | Supported range / values |
|---|---|
Border width, px | 0–8 |
Order | Any numeric value; lower values appear first |
Layout mode | Auto-fit content, Vertical, Horizontal |
Image frame mode | Auto-fit frame, Fixed rounded square, Fixed circle, Fixed square |
Image position | Start edge, Center, End edge |
| Boolean switches | true or false |
| CSS size fields | Valid CSS sizes such as 14px, 1rem, 80% |
| CSS color fields | Valid CSS colors such as #444444C0, rgba(255,255,255,0.6), or named colors |
Example configuration
- Add the widget to a dashboard.
- Select a single entity datasource, for example a Device, Asset, or Entity alias.
- Add data keys such as
fullName,jobTitle,photoUrl,email,phone, andlocation. - Open each data key settings panel and assign an
Info Card role. - For info rows, set icon, label override, order, prefix, suffix, and empty-value behavior.
- Use static items for fixed values that should not come from telemetry or attributes.
- Adjust layout, image mode, and appearance in the widget settings.
Custom CSS
When Style preset = Custom, use :card as the scoped root selector.
:card { backdrop-filter: blur(14px);}
:card .tb-info-card-title { text-transform: uppercase;}
:card .tb-info-card-item-value { letter-spacing: 0.01em;}Troubleshooting
- If the image does not appear, check that the
Image URLdata key contains a browser-accessible URL or a valid data URL. - If the title or subtitle is empty, check that a data key has the correct role and that the key has a latest value or fallback text.
- If a row is missing, check
Hide dynamic rows when value is missingand the per-keyHide this row when value is missingoption. - If rows appear in the wrong order, adjust the
Ordervalue in data key settings or static item settings. - If icons do not render, verify that the icon names are valid Material icon names.
Share Your Widget with the Community
Built a custom widget? Export it as a JSON from ThingsBoard and publish it to the IoT Hub through a simple 4-step wizard (Upload, Listing, Readme, Review & Submit). Share it with thousands of ThingsBoard developers worldwide and get featured in the catalog.