> ## Documentation Index
> Fetch the complete documentation index at: https://docs.arcuserp.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Report Builder

> Build your own report without writing a query: start from a gallery report or from scratch, pick a data source, measures, groupings, dates, sort, and filters, preview it live, run it in full, and save it.

Use **Insights > Reports > Report Builder** when a report in the catalog is close but not
exactly what you need, or when you want a custom cut of your sales, receivables, shipping, or
customer data. You choose what to measure and how to break it down, and Arcus shows a live
preview as you go. When it answers your question, save it so you and your team can open it
again from **All Reports**.

## Before You Start

* You need **View Reports** to open the builder, preview, and run.
* **Export Reports** lets you save or update a report. Without it, **Save as** is turned off and a line under the buttons explains that saving needs that permission. You can still build and run.
* Every data source reads sales, shipping, receivables, or customer figures, and a data source is listed only when your role can read it. A source that reads financial data, such as receivables aging, needs **View Accounting**. If your role can read none of them, the page reads **No report subjects are available to you**, names the permission you would need, and offers **Back to Reports**.
* A report you build here cannot be emailed on a schedule yet. You can still open it, share it, and use it from the saved report page. To email a report on a cadence, schedule a built-in report from [Scheduled Reports](/support/reports/scheduled-reports).

## Open the Builder

You can arrive three ways:

* **Insights > Reports > Report Builder** from the deck or the command palette navigation search.
* **Build a report** at the top of **Insights > Reports > All Reports**.
* **Edit** on a saved report's page, which reopens that report here with its settings filled in.

A link that opens the builder carries the report definition in the address, so a copied link
opens the same report.

## Start From the Gallery

The builder opens on **Build a report** with the line **Start from a report you already have,
or from scratch.**

* **Start from scratch** opens an empty builder where you pick the data source, a measure, and a breakdown yourself.
* A card for each built-in report you can see, grouped by category. **Customize** opens that report in the builder, ready to change, with its first two measures, a first grouping, and a recent date range already chosen. **Open report** runs the report in the catalog instead.
* **Search the report gallery** narrows the cards by name, description, and category.

A note beside **Start from scratch** counts how many of the reports can be customized so far.
A report that cannot be customized has its **Customize** button turned off and a sentence under
the card saying why, for example that the report is hand-built over its own query, or that the
data behind it has no measures switched on in the builder yet. **Open report** always works.

If nothing matches your search you see **No reports match that search** with **Clear search**.
If the gallery cannot load you see **Could not load the report gallery** with **Retry**, and you
can still start from scratch.

## Build Your Report

Once you are building, the page has three panes: the data on the left, the result in the middle,
and your settings on the right. On a narrow window the three panes stack one above the other.

### Choose the data

1. Under **Data source**, pick what the report is about: **Sales by product (monthly)**, **Sales by product (daily)**, **Sales by channel**, **Sales by state**, **Accounts receivable aging**, **Shipping margin**, or **Customers (lifetime value)**. Only the sources your role can read appear.
2. Use **Search fields** to find a field by name.
3. Under **Measures**, click a measure to add it, and click it again to remove it. Hover or read the line beneath a measure for its definition. A measure marked **soon** is defined but not switched on yet; its reason shows beneath it and it cannot be picked.
4. Under **Break down by**, click a field to group the results by it.
5. Under **Filter by**, click a field to add a filter on it.

Some fields are held back on purpose, each with its reason shown beneath it:

* Fields that hold a raw internal ID cannot be used to group, and cannot be filtered unless there is a picker. The reason points you to the readable alternative, such as the product name or SKU, or the order number.
* A field that is an exact timestamp cannot be a grouping, because every row would be its own group. Use the date grain under **Advanced** instead.
* A cost or margin column that uses a different cost basis from the **Gross Margin** measure cannot be filtered, because the filtered figure would disagree with the one on screen. Use the **Gross Margin** measure instead.
* A few revenue columns can be filtered but carry a caption saying what they are, such as **ex-tax, live orders only** or **includes tax**.

### Set it up on the right

Your choices appear as cards on the right:

* **Summarize** lists the measures you picked with their definitions, and each has a remove button. If you change measures and a basis control no longer applies to all of them, a note explains that the basis control was removed and each measure now uses its own default basis. Choose **Got it** to dismiss it.
* **Group by** lists your groupings. Use **Move up** and **Move down** to change their order, and remove one with its remove button. **Include unattributed rows** (on by default) keeps rows that have no value for a grouping field and shows them as **Unattributed**. Turn it off to leave them out; the number of rows hidden is always stated above the results.
* **Date range** appears for data sources that have dates. Choose a range from **Today** through **Last 12 months**, or **Custom range**. Ranges are worked out in your entity's time zone, and a named range keeps moving: a saved report that uses **Last 30 days** shows the last 30 days each time it is opened. A monthly data source offers whole calendar months only, and the control says **Monthly report: whole calendar months only.**
* **Sort** lets you rank the rows. Choose **Sort by** a measure, a **Direction** (**Highest first** or **Lowest first**), and **Show only the top** 5, 10, 20, 25, 50, or 100 rows. You can also click a measure's column heading in the result to sort by it, and click again to reverse.
* **Filters** lists each filter with a condition and a value. Conditions include **is**, **is not**, **is greater than**, **is at least**, **is less than**, **is at most**, **contains**, **is any of**, **is none of**, **is between**, **is empty**, and **is not empty**, depending on the field. A yes or no field offers **Yes** and **No**, a list condition lets you add several values with **Add**, and an account field gives you a picker. A filter that is not finished is left out of the report, and the card says **Not applied yet** or **Add at least one value. Until then this filter is not applied.** so an unfinished filter is never mistaken for an empty result.
* **Advanced** (shown when the data source offers it) holds the **Basis** controls (such as revenue basis, tax, and history), the **Date grain** (**None (single total per group)**, or a grain such as monthly), and **Compare to** (**Previous period**, **Previous period (weekday-matched)**, **Previous month**, **Previous quarter**, **Previous year**, **Same dates last year**, or **Last year (weekday-matched)**). The header of the card reads **in use** when one is set. A date grain or a comparison needs a date range, and the card tells you so if you have not set one.

## Read the Result

Until you have picked a measure, the middle pane reads **Build your report** with **Pick something to measure, then choose how to break it down. A live preview appears here.**

After that, the preview updates a moment after each change and shows the first 100 rows.

* **Run** in the header runs the full report. It is turned off until a measure is picked (and a date range, when a grain or comparison needs one).
* **Table** shows the rows. Beside it, **Chart type** offers the chart types that fit your data, with a recommended one marked, and lists the others under **More (not available for this data)** with the reason each does not fit. If you pick a chart that needs at least one measure and a grouping you have not set, Arcus shows the values as a table and says so.
* **As of** shows when the figures were run. With a comparison, a chip names the comparison dates and each figure carries its change.
* Each money column states its basis in its heading, for example whether revenue is recognized and tax-exclusive.
* Notes above the results state anything that limits them: the preview cap, a ranking that covers only the preview rows (**Click Run to rank every row**), a result cut at the row cap, or the rows hidden by the unattributed setting.

If no rows match you see **No records match** with **No data for the current measures, filters, and date range.** and **Clear filters** when filters are on.

## Save the Report

1. Choose **Save as**. The button reads **Save** when you opened an existing saved report.
2. In **Save report** (titled **Update saved report** when you are updating), enter the **Report name**, an optional **Group** (pick one, **No group**, or **New group**), **Who can see it** (**Just me** or **This entity (shared)**), and an optional **Description**.
3. **Create a schedule after saving** is switched off and marked **Not available**, because a builder report cannot be scheduled yet.
4. Choose **Save** (or **Update**). You see **Report saved** or **Report updated**, and Arcus opens the saved report's page, where you can customize, share with specific teammates, save a copy, or **Edit** it again.

The status next to the report name reads **Draft** before the first save, **Unsaved changes** after you edit a saved report, and **Saved** once it is stored.

## Leave and Come Back

Your work is kept as a draft in your browser for the company you are in. If you return with
unsaved work, a banner says **You have unsaved work from a previous visit** with the report name;
choose **Restore it** to continue, or **Discard** to clear it.

Choosing **Gallery** (or the **Reports** link above the page on a narrow window) while you have
unsaved changes asks **Leave without saving?** and explains that the changes stay in the page address and are kept as a
draft but are not saved to your reports yet. Choose **Leave** or **Keep editing**. Closing the
browser tab asks for confirmation too.

## Messages You May See

The page explains a problem in plain words, with what to do next:

* **That date range is incomplete.**: pick both a start and an end date.
* **This report needs a date range.**: a date grain or a comparison is set, and both need a range.
* **Nothing is being measured yet.**: pick at least one measure.
* **That measure is defined but not switched on yet.**: pick an active measure.
* **That measure cannot be broken down over time.**: clear the date grain or choose another measure.
* **That measure cannot be added up across these groups.**: it is a balance or a ratio, so remove a grouping or pick another measure.
* **These measures are recorded at different time grains.**: run them as separate reports.
* **A filter is incomplete.**: give every filter a field, a condition, and a value, or remove it.
* **That basis is not offered for every measure you selected.**: remove the measure that does not support it, or choose a basis they share.
* **That data source is not available to you.**: pick one from the list or start from a gallery report.
* **You do not have permission to run this report.**: ask your administrator for access.
* **Could not load the report builder fields.**: the data sources could not load; reload the page.
* **This report could not run with the current settings.**: change the most recent thing you added.

## What Changes When You Use This Page

* **Previewing and running** read your data. They do not post, move stock, or change any record.
* **Saving or updating** stores the report definition, not its figures: the report runs fresh each time it is opened. It then appears under **My saved reports** on **All Reports**, and teammates see it there when you share it with the entity.
* Saving and updating a report are recorded in **Organization > Audit Log**.

## Common Scenarios

### I cannot find the measure I want

Check **Data source** first, since each source has its own measures. A measure marked **soon** is not available yet. If a source you expected is missing, your role may not include the permission it needs.

### I want the same report to email me every week

A builder report cannot be scheduled yet. Open the closest built-in report in **All Reports** and schedule that, or share your builder report with your team so they can open it themselves.

### My ranking looks wrong

If a note says the ranking covers only the preview rows, choose **Run** to rank the whole report.

## Related Articles

<CardGroup cols={2}>
  <Card title="All Reports" href="/support/reports/all-reports">
    Find, run, save, share, and open the reports you build here.
  </Card>

  <Card title="Analytics Dashboard" href="/support/reports/analytics">
    Review trends before deciding what to build.
  </Card>

  <Card title="Scheduled Reports" href="/support/reports/scheduled-reports">
    Email a built-in or saved report on a daily, weekly, or monthly cadence.
  </Card>

  <Card title="Roles and Permissions" href="/support/settings/roles-permissions">
    Grant View Reports, Export Reports, and View Accounting.
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.