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

# Custom reports: columns, charts, and matrix

> Build custom reports in Beebole — add columns for time, billing, and costs, group and filter data, and view results as a table, chart, or matrix.

Every report in Beebole is a custom report. You build the output by adding columns — entities like people and projects, and amounts like hours, billing, and costs — and Beebole groups and totals the data to match. The same report can display as a table, a chart, or a matrix.

<Info>
  Reports have no Save button. Every change — columns, filters, period, chart and matrix settings — is saved automatically and applied the next time the report runs.
</Info>

***

## Create a report

<Steps>
  <Step title="Open the Reports page">
    Click **Reports** in the left sidebar.
  </Step>

  <Step title="Start a new report">
    Click the **+** button or **New report** to open the report builder.
  </Step>

  <Step title="Choose a dimension">
    Select the type of record you want to analyze. Your choice determines the available columns and filters. See [Report dimensions](#report-dimensions) below.
  </Step>

  <Step title="Add grouping">
    Choose how to group your data — by project, person, tag, or time period. You can add multiple grouping levels for multi-dimensional analysis.
  </Step>

  <Step title="Select columns">
    Pick the data fields you want to display. Available columns depend on your chosen dimension and include time, financial, budget, and metadata fields.
  </Step>

  <Step title="Apply filters">
    Narrow the report to specific people, projects, tags, date ranges, or custom field values. See [Filtering your report](#filtering-your-report) below.
  </Step>

  <Step title="Run the report">
    Click **Run** to generate the report. Results appear in a table that you can sort by any column.
  </Step>
</Steps>

<Steps>
  <Step title="Open Reports">
    Click **Reports** in the sidebar.
  </Step>

  <Step title="Choose a folder">
    Select an existing folder in the Reports menu, or click **New folder** to create one.
  </Step>

  <Step title="Add the report">
    Click the **Add a report** button next to the folder name. Beebole creates a report named **New report**, opens it, and puts the name into edit mode — type a descriptive name.
  </Step>

  <Step title="Build the output">
    Add columns to define what the report shows — see the next section. The report re-runs as you change it.
  </Step>
</Steps>

***

## Add output columns

A report's definition is a row of column badges above the results. Click **Add a column…** to open the column menu, which is organized into two groups.

### Time and amounts

These columns carry the numbers. Each column type offers a choice of fields:

| Column              | Fields                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Time**            | **Hours**, **Billing**, **Hourly billing**, **Daily billing**, **Cost**, **Hourly cost**, **Daily cost**, **Margin**, **Margin %**, **Markup %**, **Days**, **Overtime (daily)**, **Overtime (period)**, **Overtime balance**, **Start time**, **End time**, **Business hours**, **Business hours remaining**, **Billable hours**, **Billable %**, **Billing ratio**, **Non-billable**, **Billed**, **Work from home**, **Comment**, **Status**, **ID** |
| **Expense**         | **Amount**, **Quantity**, **Expense billing**                                                                                                                                                                                                                                                                                                                                                                                                           |
| **Task**            | **Planned** — the planned effort of tasks                                                                                                                                                                                                                                                                                                                                                                                                               |
| **Time & Expenses** | **Billing total**, **Cost total**, **Profit total** — cross-record totals combining time and expenses                                                                                                                                                                                                                                                                                                                                                   |
| **Period**          | **Date**, **Week**, **Month**, **Quarter**, **Year** — splits results into time buckets                                                                                                                                                                                                                                                                                                                                                                 |

<Info>
  Billing, cost, and profit fields show data once [billing rates](/help/documentation/billing) and [cost rates](/help/documentation/costs) are configured, and require a subscription that includes those features.
</Info>

### Entities

These columns define what each row represents:

* **One entry per project category and task category**, named after the category (for example, **Clients**). For these hierarchical columns you also pick a level: **Root**, a named level, or **All levels**.
* **Person** — with fields such as **Name**, **ID**, **Email**, **Description**, **Role**, and **Managed by**.
* **Entity with time** — the project, task, or absence type a time entry was logged on, with **Full path** or **Name**.
* **Absence type** and **Expense type**.

Person, project, and task columns also offer your [tag](/help/documentation/tags) categories (with a level picker for multi-level tags) and any [custom fields](/help/documentation/custom-fields) visible on that entity type — so a custom field like a client reference or region becomes a regular report column.

### Arrange and refine columns

* **Reorder** columns by dragging their badges — order determines grouping.
* **Click a badge** to change its field, level, or category, or to **Remove** it.
* **Subtotal** — toggle subtotal rows for a grouping column; groups can collapse and expand in the table.
* **Hide empty values** — hide rows where the column is empty.
* Selecting a currency-based field adds a currency picker that applies to the whole report.

Multi-level grouping is just multiple grouping columns: for example, a tag column, then a project column, then a **Period: Month** column shows each team's projects month by month.

***

## Filter and scope the data

Filters and periods work the same on every report and are covered on the [Reports](/help/documentation/reports) page: set a date range per folder or per report, and filter by people, projects, tasks, tags, work location, or owner and status for tasks.

One scope is specific to time data: a report over time records can cover working time and absences together, or narrow to **Absences only** or **Working time only** — shown as a chip above the results that you can clear at any time.

***

## Chart view

Click **Chart** next to the report name to display results as a chart. **Table** and **Chart** can be open at the same time — the chart appears above the table.

### Switching chart type

Click the chart type picker to choose from 11 chart types:

| Chart type       | Best for                                                       |
| ---------------- | -------------------------------------------------------------- |
| **Bar**          | Comparing values across categories                             |
| **Line**         | Trends over time                                               |
| **Pie**          | Showing proportions of a whole                                 |
| **Area**         | Volume trends over time                                        |
| **Stacked bar**  | Comparing totals and part-to-whole across categories           |
| **Stacked area** | Cumulative volume trends with multiple series                  |
| **Horizontal**   | Bar chart with horizontal orientation — useful for long labels |
| **Scatter**      | Correlations between two numeric columns                       |
| **Radar**        | Multi-axis comparisons across categories                       |
| **Treemap**      | Hierarchical proportions using nested rectangles               |
| **Waterfall**    | Incremental increases and decreases in a running total         |

### Configuring chart axes

Once you select a chart type, use the axis controls to map your data:

* **Label axis** — Choose the column that supplies the category labels (e.g., project name, person, time period).
* **Value axis** — Select one or more numeric columns to plot (e.g., hours, billing amount).
* **Group by** — Add a second label column to split each bar or line into separate series.
* **Swap axes** — Click the swap icon to exchange the label axis and group-by column.

<Tip>
  Beebole automatically selects the best axes when you run a report. Adjust the axis controls to override the defaults and focus on the dimensions you care about.
</Tip>

### Adjusting chart height

Drag the resize handle at the bottom of the chart area to make the chart taller or shorter. The height is saved with the report so it is restored the next time you open it.

***

## Matrix view

Click **Matrix** next to the report name to pivot the results into a grid: one dimension on each axis and a metric in every cell, with row, column, and grand totals.

The controls above the grid configure it:

* **Rows** — the dimension down the side. Click the picker to choose, and use the second picker to add an optional second row dimension (the arrows button swaps the two, and **×** clears the second one).
* **Columns** — the dimension across the top.
* **Metric** — the number shown in each cell, derived from the report's numeric columns: hours, billing, cost, margin, planned effort, expense amounts, totals, and more.
* **Heat map** — shades each cell by its value, so the largest numbers stand out at a glance.
* The swap button (**Swap rows and columns**) flips the two axes in one click.

Axes come from the report's grouping columns — people, projects, tasks, absence types, expense types, tags — or from calendar periods (day or week), which turn the matrix into a calendar-style grid. The matrix needs at least one numeric column in the report definition, and your **Rows**, **Columns**, **Metric**, and **Heat map** choices are saved with the report automatically.

To download the grid, open the report's **⋯** action menu and choose **Export** > **Matrix (CSV)**, **Matrix (Excel)**, or **Matrix (PDF)**.

***

## Organize reports in folders

Folders group related reports in the Reports menu, and each folder's period and filters apply to every report inside — see [Reports](/help/documentation/reports) for those settings.

* Click **New folder** at the bottom of the Reports menu to add a folder.
* Each folder's **⋯** action menu offers **Duplicate**, **Rename**, **Filter**, **Share**, and **Delete**.
* To copy a report into another folder, open the report's **⋯** action menu, click **Copy**, then click **Paste** in the target folder's menu. **Duplicate** copies a report within its own folder, and the action menu can also move a report straight to another folder.

<Warning>
  Deleting a folder also deletes the reports inside it. Move reports you want to keep into another folder first using **Copy** and **Paste**.
</Warning>

***

## Related content

<CardGroup cols={2}>
  <Card title="Reports" icon="chart-simple" href="/help/documentation/reports">
    Folders, periods, filters, scheduled email delivery, and the Budget Status report.
  </Card>

  <Card title="Billing Rates" icon="file-invoice-dollar" href="/help/documentation/billing">
    Configure billing rates so billing and margin columns show data.
  </Card>

  <Card title="Cost Rates" icon="money-bill-trend-up" href="/help/documentation/costs">
    Configure cost rates so cost and profit columns show data.
  </Card>

  <Card title="Custom Fields" icon="list-check" href="/help/documentation/custom-fields">
    Define custom fields and use them as report columns.
  </Card>
</CardGroup>

***

## Frequently asked questions

<AccordionGroup>
  <Accordion title="Do I need to save my report?">
    No. Beebole saves every report change automatically — columns, filters, period, chart type, and matrix settings. There is no Save button; when you reopen a report, it runs with your latest configuration on current data.
  </Accordion>

  <Accordion title="Can other people see my reports?">
    Report folders in Beebole have an owner, and both reports and folders carry a **Share** action in their **⋯** menus for giving teammates access. Whoever opens a report, the results only include the projects and people that person's [role](/help/documentation/roles-authorisations) allows.
  </Accordion>

  <Accordion title="How many grouping levels can I use?">
    You can add multiple grouping columns — for example a tag, then a project, then a month column — and Beebole nests the rows in that order, with optional subtotals per level. There is no hard limit, but reports with many levels become harder to read.
  </Accordion>

  <Accordion title="Do custom fields appear in reports automatically?">
    Yes. Any [custom field](/help/documentation/custom-fields) visible on people, projects, or tasks is available as a field when you add a column for that entity — no extra setup needed in the report itself.
  </Accordion>

  <Accordion title="Is the chart or matrix saved with the report?">
    Yes. Beebole stores which views are open, the chart type, axis settings, and height, and the matrix rows, columns, metric, and heat-map choice with each report — everything is restored the next time you open it.
  </Accordion>
</AccordionGroup>
