Skip to content
Stand with Ukraine flag

Report Templates

A report template defines what appears in the generated file. Templates are reusable — the same template can be scheduled for multiple customer groups or attached to multiple notification rules.

SettingOptions
FormatPDF — Print-ready document with full layout and charts.
CSV — Raw tabular data for analysis and export.
TypeReport — Standalone; generated on demand, scheduled, or triggered by a notification.
Subreport — Embedded within a master report.
  1. Navigate to Reporting ⇾ Templates.
  2. Click + Add report template ⇾ Create new report template.
  3. Enter a report template name.
  4. Select:
    • Format: PDF or CSV
    • Type: Report or Subreport
  5. Click Add.

The template opens in the Report Builder — a drag-and-drop editor where you compose the layout.

  1. Navigate to Reporting.
  2. Click + Add report template ⇾ Import report template.
  3. Upload the .json file and click Import.

Click the trash icon next to the template and confirm deleting.


The Report Builder is a drag-and-drop editor. Components are dragged from the Components library panel into the content area.

Each component includes one or more configuration sections, depending on the component type. Common sections include Data (data source, filters, series) and Layout (sizing, margins, alignment, background), along with additional settings specific to the selected component.

CategoryWhat it provides
Text & ImagesHeadings, rich text, images, dividers, page breaks — basic content and formatting blocks.
TablesStructured data from ThingsBoard (entity tables, alarm history, telemetry).
ChartsVisualizations of time series and categorical data (line, bar, pie, state, range, etc.).
DashboardEmbeds a snapshot of a selected ThingsBoard dashboard as an image.
SubreportIncludes a reusable report template section — generates content per entity context.
BrandingLogos, headers, footers, and theme elements for custom look and feel.
Reporting Info & LayoutMetadata and layout helpers (page number, total pages, creation timestamp, spacing and breaks).

Variables allow you to insert dynamic values (entity details, timestamps, data keys, etc.) into any text field (block, table header, chart label, etc.) within the report. They enable context-aware and personalized report content.

Type $ in any text field to open the variable picker and insert a dynamic value.

VariableDescription
${pageNumber}Current page number
${totalPages}Total page count
${reportCreatedTime}Report generation timestamp (yyyy-MM-dd HH:mm:ss)
${entityName}Technical name of the current entity in context
${entityLabel}Label of the current entity in context
${rowCount}Number of rows in a table component

Any telemetry key or attribute returned by a component’s data source is available as ${keyName}. For example, a device sending temperature exposes ${temperature}.


Report templates support all standard ThingsBoard entity aliases (as used in dashboards). See Entity aliases for the full list.

In addition, notification-triggered reports support the following aliases:

AliasResolves to
Originator entityThe entity that triggered the notification (e.g. the device that raised an alarm)
Owner of originator entityThe customer or tenant that owns the originator entity

TaskRecipe
Compare temperature across devices with a line chartTemperature comparison report
Snapshot a dashboard into a PDFEmbed a dashboard in a report
Generate per-device alarm sections using subreportsDaily alarms subreport
Send a PDF alarm report with a notificationAttach a report to a notification