Skip to main content
Open Reports to manage report schedules, generation history, and reusable templates.

Create a report

Select New report. The workbench has three steps, and a preview on the right shows the structure of the report as it takes shape.
1

Content and scope

Enter the Report name and its Purpose. Choose the Source type, a dashboard or a saved view, and the Data source. Set the Data range: the previous 1 hour, 24 hours, 7 days, or 30 days, the previous calendar day, week, or month, or Custom.
2

Generation schedule

Choose the Generation frequency: every hour, every 6, 12, or 24 hours, or every 7 days, and the Report timezone. Advanced cron accepts a cron expression, but runs every 24 hours for now; prefer an interval.
3

Delivery

Add Delivery targets: an email address, an HTTPS webhook URL, or an S3 path, each with its own delivery result. Choose the Generated format. Turn off Enable after saving to save the report paused.
Select Save and enable. Export now generates a report at once without waiting for the schedule. The actions of a report are View, Edit, Share, Enable or Pause, and Delete schedule.

Choose content

A report uses a dashboard or saved view as the source. Templates define a reusable source type, format, and content defaults; a schedule binds the template to a concrete resource. Built-in template patterns include platform health, RUM experience, alert review, SLA compliance, and saved-query exports.

Choose a format

PDF and PNG require the headless renderer. Configure [scheduled_reports.renderer] with a reachable web base URL. The server validates generated file signatures instead of returning placeholder content. CSV, JSON, and SVG currently contain report metadata rather than executed dashboard or saved-view rows.

What a PDF or PNG report contains

A PDF or PNG report holds the dashboard or the saved view and nothing of the surrounding web UI: no navigation, no toolbar, and no menus. The page states what the report covers, then shows the dashboard or the rows of the saved view.
  • Page size. The page is as wide as the renderer viewport and as tall as the content, so a PDF has one page and neither a panel nor a table row is split across pages. Content beyond 16,000 pixels of height is cut off in a PNG and continues on the next page in a PDF.
  • Appearance. Reports use the light theme. The language and the date and time format follow the preferences of the user that the report is rendered as.
  • Time range. The report covers the Data range. Previous 24 hours and Previous 7 days end at the moment of rendering. Previous calendar day, Previous calendar week, and Previous calendar month are whole days, weeks, and months in the report timezone; a week starts on Monday.
  • Timezone. The header, the chart axes, and the _timestamp column show times in the Report timezone. The field lists every IANA time zone with its UTC offset. Search by name to find one.
  • Failures. A report produces no file when the dashboard or the saved view cannot be loaded, the statement of a saved view fails, or the page does not finish loading data within 15 seconds. Export now returns the reason, and a scheduled run stores the reason in the delivery record of each recipient.

Dashboard

The page starts with the dashboard title and description, followed by the time range, the timezone, the value of each visible variable, and the generation time. The panels follow in the layout of the dashboard. With the Custom data range, the panels use the last hour.

Saved view

The page starts with the name of the saved view, followed by the time range, the timezone, the stream when the view names one, the number of rows, and the generation time. The statement follows under the name of the query language, and then a table with the rows that the statement returns.
  • Time range. With the Custom data range, the statement runs over the Default window of the saved view, ending at the moment of rendering.
  • Rows. The table holds at most 200 rows. When a SQL statement returns more, the row count reads First 200 only. A PromQL statement runs as a range query, and the points of each series are sampled evenly to fit 200 rows.
  • Columns. The table has one column for each column of the result and is never wider than the page; long values wrap. Apart from _timestamp, values appear as returned. A missing value appears as —.
  • Stream. A SQL statement runs with the Stream of the saved view. A view without a stream uses the first logs stream that allows queries, the same as Open on the Saved views page. The report fails when the workspace has no such stream.
  • Empty result. A statement that returns no rows still produces a report. The report states that the time range has no rows.

Schedule and deliver

Configure the data range, an every:<n><s|m|h|d> interval, output format, and one or more recipients. Although the API field is named cron, five-field cron expressions are not parsed; an unrecognized value currently falls back to a 24-hour interval. Recipient kinds are:
  • webhook, which POSTs the generated bytes to an HTTP(S) URL;
  • s3, which writes to an object-key prefix in MoleSignal’s configured object store;
  • email, which currently validates and records the address but does not send SMTP mail.
Each recipient has an independent delivery record with status, attempt count, and error details. Pause a schedule without deleting the configuration.
Do not rely on the current email recipient for delivery. Use a webhook or configured object-store prefix until scheduled-report SMTP delivery is wired.

Access used by a scheduled report

A scheduled PDF or PNG delivery renders the report page as the signed-in user who last saved the report. The report shows what that user can read at the time of the run.
  • Where to see the user. Open a report in Reports. The footer of the dialog shows Runs as and the name of the user. A user without reports.schedule opens the report with View and sees the same line.
  • Saving. Every save sets the user, including a save that only enables or pauses the schedule. A user with reports.schedule takes over a report by saving the report. When a report runs as another user, the dialog states next to Save changes that the report runs with your access after you save, and the switch in the Schedules list states the same.
  • API. A scheduled report returns the user as run_as_user_id, and the display name and email of the user as run_as_user. run_as_user is null when the report has no user or the user account no longer exists.
  • Checks at each run. The run fails when the user can no longer sign in to the organization: the account is disabled or deleted, the membership is removed, or the organization is disabled. The run also fails when the user can no longer read the dashboard (dashboards.read) or the saved view (saved_views.read), or, for a saved view, can no longer query streams (streams.query). The delivery record of each recipient names the user and the reason.
  • API tokens. A report saved with an API token has no user to run as, because a token carries the access of one role and not the access of the user who issued the token. PDF and PNG deliveries of such a report fail until a signed-in user saves the report. CSV, JSON, and SVG deliveries render no page and need no user.
  • Session. The session that the headless browser uses is valid for 10 minutes and is removed from the browser after the page is printed.
Export now and Share render the report as the user who makes the request.

Export and share

Use Export now to generate a download from a saved report. Use Share to create an authenticated, cross-workspace, or restricted public share. Public reports can require a password and can be blocked from CSV download by workspace policy.

Permissions

  • reports.read views schedules, templates, and history.
  • reports.create creates reports.
  • reports.edit updates content and delivery.
  • reports.schedule enables, pauses, or runs schedules.
  • reports.delete removes reports.

Resource sharing

Learn how public links, cross-workspace grants, expiration, and revocation work.
Last modified on October 26, 2026