Reports
Group, aggregate and filter live submissions where they already are. A report is a saved question, not an export — it re-runs against current data every time somebody opens it, and can be pinned to the dashboard as a live widget.
Building one
A report belongs to exactly one published form, chosen when you create it
and fixed thereafter. Under Reports (report:read to view and
run, report:write to build), pick columns or build a grouped summary, add
filters, and watch the preview update as you go.
Reports are shared across your organisation rather than owned by one person, and they are not versioned: editing one changes it for everybody.
Alongside your form's own fields, six built-in columns are always available: submission number, name, workflow state, created, updated, and who created it. Computed fields are reportable too, marked as such in the picker.
Two shapes, and they are exclusive
A report is either a list — pick columns, get rows — or a summary — pick groupings, get one row per group with aggregates. Adding a grouping switches the report to the second shape and the chosen columns stop applying.
| Aggregate | Notes |
|---|---|
| Count of rows | The only one that needs no field. |
| Distinct values of | How many different values appear. |
| Sum of / Average of | Numeric fields only. |
| Smallest / Largest | Any ordered field. |
Date and date-time fields can be grouped into day, week, month, quarter or year buckets — this is how "submissions per month" is built. Several groupings can be combined.
Filters
| For | Operators |
|---|---|
| Text | is, is not, contains, does not contain, is any of, is empty, is not empty |
| Numbers | = ≠ > ≥ < ≤, between, is empty, is not empty |
| Dates | on, after, on or after, before, on or before, between, is empty, is not empty |
| Yes/no | is, is empty, is not empty |
Two behaviours worth knowing: contains ignores case, and is not deliberately includes records where the field was never filled in — "not approved" means exactly that, including the ones nobody has touched.
Filters are validated when you save and again when the report runs, and every problem is reported at once with the field named — "'Amount' is not text, so 'contains' does not apply".
Charts and the dashboard
A summary with exactly one grouping and a numeric result can be shown as a chart: a date bucket draws a line, anything else draws bars, up to eight series.
Pin a report and it becomes a live dashboard widget for everyone in the organisation, showing the first few rows and re-running on its own. Pins are organisation-wide, not personal, and keep the order you pinned them in.
Export
Export CSV needs the report:export privilege and a plan that
includes exporting; without the plan the button says so rather than failing after the click.
Text cells beginning =, +, - or @ are
prefixed with an apostrophe so a submitted value cannot execute as a formula in whoever's
spreadsheet opens it, and the file carries a byte-order mark so Excel reads it correctly.
Every export is recorded in the audit log before the bytes leave.
Limits
- Reports built in the interface return up to 200 rows; the display tells you when there are more.
- A report that runs longer than ten seconds is stopped and asks you to narrow it — an expensive question is not allowed to occupy the database indefinitely.
- Only the current revision of each submission is counted, and archived submissions never appear.
- Fields come from the form's live version. Submissions filled against an older version that never had a field show empty for it — nothing is invented for them.
Beyond reports
A report answers the question you asked. Each form's Insights page goes looking for the questions worth asking — server-computed statistics narrated by AI into ranked findings, with every count backed by a real query, plus outcome prediction from your own history. See AI & agents.