Building Reports
How to create, edit, version and retire reports with the Folio Editor.
Overview
A Folio report is built in the Editor, reached from the Folio Reports tab. You choose an object, a format and the fields, and a live preview beside you shows real rows from your org as you go. The preview is the report itself, run against a small slice of your data, so what you see while building is what readers get.
Building reports needs the Flourish Folio: Admin permission set. See Setup.
The gallery
Folio Reports opens on a card for every report.
| On a card | |
|---|---|
| Name and status | Published for a report in service, Archived for one taken out of service. |
| Object | The object the report is built on. |
| Description | The report's description, if it has one. |
| Version | The version readers currently see, such as v2. |
| Last run | When anyone last opened the report, or Never run. |
Active and Archived across the top switch between reports in service and those you have archived. Search reports… matches on the report's name or its object.
Click a card to open the report as readers see it. The header then offers:
| Editor / Viewer | Switch between editing the report and viewing it. |
| Go to Definition | Opens the report's Folio Definition record in a new tab. Its Unique Name is what you need to place the report on a page. |
Reports in the breadcrumb takes you back to the gallery. The address bar follows you, so a link copied from it opens the same report, and a link copied while editing opens the Editor.
Creating a report
- On the gallery, click + New Report. The Editor opens empty.
- Type a name over Untitled report in the header.
- Under Report On, pick the object the report is about.
- Under Format, pick one of the four formats below.
- Add fields until the preview shows what you want, then click Save.
| Format | What it shows | You need |
|---|---|---|
| Tabular | A plain list of records, one row each. | At least one column. |
| Summary | Records grouped under a heading per value, with a subtotal for each group and a grand total. | At least one column and a group row. |
| Matrix | A grid: one grouping down the side, another across the top, and one number in each cell. | A measure, a group row and a group column. |
| Scorecard | One row per record, each column a number gathered from a related object, such as won revenue, open cases and contact count per account. | A row label and at least one measure. |
Changing the object clears the report, since its fields no longer apply. Changing the format keeps your fields, filters and groupings, with one exception: switching to Matrix keeps only one column, the first summarized one, because a matrix shows a single number per cell.
The Outline
The Editor's left rail has three tabs: Outline, Filters and Style. Outline is the report's structure, and shows only the sections that apply to the format you chose.
Picking fields
Every Add button opens the same field picker. Type to search. A field marked › is a lookup: click it to step into the related record's fields, so you can add the account name to an opportunity report, and ‹ Back steps out again. A ✓ marks a field already added.
Folio reaches related records through lookups only, upward from the object the report is on. A report on Accounts cannot list each account's opportunities as columns; a scorecard is how you bring numbers up from related records.
Columns
The fields shown for each record. Drag a column to reorder it, and use × to remove it.
Each column has a Σ button to summarize it:
| Summary | Offered for |
|---|---|
| Not summarized | Any field. The default. |
| Count, Count Distinct | Any field. |
| Sum, Average, Min, Max | Number, currency and percent fields. |
A summarized column is what fills subtotals, grand totals and charts. On a tabular report it adds a totals row at the bottom; on a summary it adds a subtotal under each group as well.
Number fields also have a # button for their format: Decimals, Currency code, Prefix and Suffix. Currency code takes a three-letter code such as USD.
On a matrix, this section is called Measure and takes exactly one field, which is the number in every cell. It defaults to Sum for a number field and Count otherwise, and it cannot be left unsummarized.
Group Rows
What a summary groups by, or what runs down the side of a matrix. The arrow beside it sets whether groups run ascending or descending.
A date field gets a Group dates by control:
| Option | Groups read as |
|---|---|
| Exact date | The date itself. |
| Day | 2026-06-19 |
| Month | 2026-06 |
| Quarter | 2026-Q2 |
| Year | 2026 |
Quarters and years are calendar ones; there is no fiscal grouping. Date and time fields are grouped by their date in GMT, so a record stamped late in the evening in the Americas can land on the next day.
A report groups by one field. The Editor lets you add more than one group row, but only the first is used and the rest have no effect on the report.
Group Columns
Matrix only. The field whose values become the matrix's columns. It works exactly like Group Rows, date grouping included.
Sort
The report's default order, up to three fields, each ascending or descending. The first one wins and the others break ties. With no sort, records come back in the database's own order.
On a summary, groups always follow their own direction from Group Rows, and Sort orders the records inside each group. Matrix and scorecard reports have no Sort section, since their order comes from their groupings.
Chart
Summary and matrix only. Turn on Show a chart to draw one above the table. It needs a summarized column to plot, and says so until there is one.
| Setting | |
|---|---|
| Chart type | Summary: Bar, Horizontal bar, Line, Pie, Doughnut. Matrix: Bar (grouped), Stacked bar, Line. |
| Measure | Summary only. Which summarized column to plot. On a matrix the one measure is used, and the Editor shows it along with Bars by (the group row) and Series by (the group column). |
| Title | Optional. Left blank, it reads like "Amount by Industry". |
A summary chart always plots the report's grouping, so there is no separate choice of what to plot it by.
Pie, Doughnut and Stacked bar need a Sum or Count. Those charts show parts of a whole, and averages, minimums, maximums and distinct counts do not add up to one. The Editor leaves them out of the list for any other measure and tells you why. If you had one chosen and switch the measure to an average, the report draws bars, and switching back restores your choice.
How readers use a chart is in Reading Reports.
Row Label and Measures (scorecard)
A scorecard has its own two sections in place of the ones above.
Row Label is the field that names each row, such as the account name. Its arrow sets the row order. There is one row per record of the object the report is on.
Measures are the columns. Pick a related object from Add a measure from…. The list shows every object that looks up to yours, with the lookup it uses, such as "Opportunities (via Account ID)". Each measure then has:
| Σ | How to summarize: Count and Count Distinct for any field, plus Sum, Average, Min and Max when the related object has a number field. |
| Field | What to summarize. Record Count counts the related records. |
| Name | The column heading. Required. |
| # | Number format, as for columns. |
| + Filter this measure | Conditions on the related object alone, such as only opportunities with Stage equal to Closed Won. They work like the Filters tab. |
Add the same object more than once to count it different ways: open cases and closed cases are two measures on Cases with different filters.
The totals row at the bottom rolls up the rows above it: sums and counts add, averages are averaged across rows, and minimums and maximums take the extreme.
Details
Description is shown on the report's card in the gallery. Row limit caps how many records a summary lists under its groups; its subtotals and totals still count every matching record. A tabular report loads every matching record as the reader scrolls, so Row limit does not cut it short.
Filters
The Filters tab decides which records the report covers. Its count shows on the tab.
Click + Add filter…, pick a field, then an operator and a value, and click Done. Each filter collapses to a one-line summary you can click to edit. With no filters the report covers every record the reader can see.
| Field type | Operators |
|---|---|
| Text, email, phone, URL, lookup | Is Equal To, Is Not Equal To, Contains, Does Not Contain, Starts With, Is Blank, Is Not Blank |
| Number, currency, percent, date | Is Equal To, Is Not Equal To, Is Greater Than, Is Less Than, Is Greater Than or Equal To, Is Less Than or Equal To, Is Blank, Is Not Blank |
| Picklist | Is Equal To, Is Not Equal To, Is Blank, Is Not Blank |
| Multi-select picklist | Contains, Does Not Contain, Is Blank, Is Not Blank |
| Checkbox | Is Checked, Is Not Checked |
Filter Logic
All filters must match, unless you say otherwise. Once there are two or more, turn on Combine conditions with custom logic and type an expression such as 1 AND (2 OR 3), using AND, OR, NOT and parentheses.
The numbers refer to the badge on each filter. Only a finished filter gets a number, so a filter you have not completed is skipped and cannot be referred to. An expression that refers to a missing number or does not parse shows an error under the box, and the report cannot be saved until it is fixed.
Date Filter
A single date range, applied on top of everything else. Pick a Date field, then a Range:
Today, Yesterday, This week, Last week, This month, Last month, This quarter, Last quarter, This year, Last year, This fiscal quarter, This fiscal year, Last N days… and Next N days… (with a Number of days), or Custom range… (with From and To).
The fiscal ranges follow your org's fiscal year settings.
Style
The Style tab changes how the report looks and what readers can do with it.
Appearance
| Setting | |
|---|---|
| Brand color | The color of the title banner, the group bands and single-series charts. A hex value such as #3D2170. |
| Density | Comfortable or Compact rows. |
| Cell border color | Draws grid lines between cells in this color. Blank for the default light row lines. |
| Hide the record-count / format subline | Removes the line under the title that reads like "120 records · Summary". |
| Freeze the first column | Summary and scorecard. Keeps the first column in view when a wide report scrolls sideways. Tabular reports always do this. |
Header Strip adds label and value pairs under the title, such as Owner and Region. Use + Add row for each one. A blank value shows as a dash.
Utility Bar decides which tools readers get above the report: Export, Interactive filter and Chart toggle, and under Export, which file types. Leaving everything on is the same as not restricting anything. Where a report is placed can narrow these further but never widen them; see The Utility Bar setting. The Folio Reports tab and the Folio Definition record page always show every tool, since those are admin views.
Preview
The Preview card runs the report as you build it and refreshes a moment after each change. It shows up to 50 records, which its subtitle says. Run in the header, or Refresh preview on the card, runs it again against current data.
Until the report has what its format needs, the card says what is missing, such as "Add a group row to preview the summary."
The preview runs as you, with your own access, even on a report marked Run Elevated.
Saving
Save saves the report. There is no separate publish step: saving the live version changes what readers see the next time they open it.
The report needs a name, and whatever its format requires. If something is missing, Not ready to save says what, for example "A matrix needs a group column."
Save as New makes a copy as a separate report, with its own card and its own history. The original is untouched.
The first save gives the report its Unique Name, made from its name: lower case, spaces turned into hyphens, punctuation dropped, so "Won Revenue by Industry" becomes won-revenue-by-industry. If that is taken, a number is added. Renaming the report later does not change it, which is what keeps pages that show the report by its unique name working.
Versions
Save always changes the version you are on. A new version exists only when you ask for one.
While editing a saved report, the header has a version picker and two buttons:
| + Version | Copies the version you are on into a new one and opens it in the Editor. The new version is live immediately: readers see it from now on. |
| Make Active | Makes the version you are looking at the live one again. Use it to roll back. |
The picker lists every version, with (active) beside the one readers see. Picking another opens it in the Editor without changing what readers see, until you click Make Active.
To try out a change without readers seeing it, use Save as New instead, and copy your change back once it works.
Archiving and deleting
Both act on the whole report, every version of it. Hover over a card to find them.
Archive takes the report out of service. It leaves the gallery for the Archived list, and pages that show it by its unique name stop showing it. Restore on the Archived list brings it back as it was. Archive is the safe way to retire a report.
× deletes the report after a confirmation. Folio cannot bring a deleted report back. For about 15 days the records sit in the org's Recycle Bin, where an admin can undelete them, but the report returns under a changed unique name and has to be renamed by hand before any page finds it again.
Folio cannot tell you where a report is used. A report placed on a Lightning page, a Flow or a site simply stops appearing when it is archived or deleted, with no warning beforehand. Check where it is placed before you remove it.
Things the Editor does not set
A few presentation options exist but are not in the Editor yet: coloring cells by rule, coloring individual column headers, fixing column widths, choosing which columns readers can sort, and PDF page sizing. They are set by editing the report's JSON directly, described in Report JSON. The Editor keeps them when you save, so hand-edited options survive later edits.