Skip to content

Reports

A report is what a room produces: a thread of blocks captured by the reporter, stored against a project and a channel. It’s not a single text field — it’s an ordered list of pieces the reporter assembled before sending.

Each report holds a blocks array. Every block is one of four kinds:

BlockWhat it captures
textA written message.
screenshotA captured image of the page.
audioA recorded voice note.
selectionA quote of text the reporter highlighted on the page, plus the element it came from.

A room can mix these freely — for example a text block describing a bug, a screenshot showing it, and a selection pointing at the exact element. A report must contain at least one block.

The blocks are validated on the way in, so reports stay bounded:

  • text — up to 10,000 characters per block.
  • selection text — up to 2,000 characters.
  • screenshot — up to 2 MB, image/png or image/jpeg.
  • audio — up to 10 MB and 5 minutes, audio/webm or audio/mp4.
  • A report holds between 1 and 50 blocks.

Every report has a status for triage. The statuses are:

  • new — the default for a freshly received report.
  • triaged
  • in-progress
  • closed

Alongside the blocks, a report can carry context about where it came from — captured automatically by the widget when available:

  • the URL the reporter was on,
  • the user agent and viewport size (rendered in the dashboard as e.g. Chrome / desktop / 1440×900),
  • recent console errors, if the SDK’s error hook was enabled,
  • arbitrary extra fields the host app attaches.

This context is what makes a report actionable without a back-and-forth: you can see the page, the browser, and the failing console output in one place.

When a report is received, the dashboard’s feed updates live — you don’t need to refresh to see a new report land in its channel.