Skip to main content
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.
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.

Create a report

1

Open Reports

Click Reports in the sidebar.
2

Choose a folder

Select an existing folder in the Reports menu, or click New folder to create one.
3

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.
4

Build the output

Add columns to define what the report shows — see the next section. The report re-runs as you change it.

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.
Beebole report Margin by Client per Month with the column menu open, listing Expense, Period, Task: Planned, Time and Time & Expenses under Time and amounts, then Absence type, Activity, Client, Expense type, Internal, Main plan, Person and Time entity under Entities, over a highlighted empty column between Client: Name and Period: Month

The column menu, opened from Add a column… in a column header's menu; the new column's place is highlighted

Time and amounts

These columns carry the numbers. Each column type offers a choice of fields: A Task: Planned column, like a task category column such as Main plan, makes the report read planned tasks as well as time. Every task whose dates overlap the report period and that matches the report’s filters adds its planned hours, whether or not anyone logged time on it. Rows with no hours and no cost can then appear among your time rows. Leave both kinds of column out of a report that is only about logged time.
Billing, cost, and profit fields show data once billing rates and cost rates are configured, and require a subscription that includes those features.

Entities

These columns define what each row represents:
  • One entry per project category and task category, named after the category (for example, Client). For these hierarchical columns you also pick a level: Root, a named level, or All levels. On planned work, a project category column groups each task under the projects it is linked to, so a Client column next to Task: Planned totals the planned hours per client.
  • A task category column, named after its planning (for example, Main plan), also shows the details of each task: Owner, FTE% (the % FTE set next to the task’s owner, as a percentage), Planned (days), Planned (hours), Start, End, Assigned to (the task’s potential owners), and Status, besides Name, ID, and Description. These fields describe the whole task: Planned (hours) is all of its planned time, whatever the report period, and Planned (days) converts it at 8 hours a day.
  • Person — with fields such as Name, ID, Email, Description, Role, and Managed by.
  • Time entity — the project, task, or absence type a time entry was logged on, with Full path, Name, or ID.
  • Absence type and Expense type.
Beebole report column menu with Main plan clicked under Entities, its levels panel listing All levels and Main plan Level 1 to Level 5 with Level 1 selected, and the field list of that level: Assigned to, Contract, Department, Description, End, FTE%, ID, Location, Name, Owner, Planned (days), Planned (hours), Start and Status, then the Cost center custom field

The fields of a task category column: Main plan in the column menu, its levels, and the fields of its first level

Person, project, and task columns also offer your tag categories (with a level picker for multi-level tags). Picking one splits the rows by tag: for example, a Person column set to the Department tag category gives one row per department instead of one per person. The split works in time, expense, and task reports, and each record counts under the tags in force on its date. Someone who moved from one team to another mid-month has their hours before the move under the old team, and their hours after it under the new one. A planned task counts under the tags in force on its start date. Custom fields appear at the bottom of a column’s field list, so a custom field like a client reference or region becomes a regular report column. Each column offers the fields made visible for its type:

Arrange and refine columns

  • Drag a column’s badge to reorder the columns. The order determines the 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.
In the results table, each column header holds the same actions: point at it to open its menu, with Subtotal, Hide empty values, Add a column…, and Remove, or drag the menu’s top row by its grip to move the column.
Beebole report Margin by Client per Month in Table view, with the menu of the Client: Name column header open over the table, listing Subtotal, Hide empty values, Add a column… and Remove, next to the Period: Month and Time: Hours columns

The menu of the Client: Name column, opened from its header in the table

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.

Amounts in several currencies

Rates and expenses can be entered in different currencies, so a report that carries billing, cost, or expense amounts also carries a currency picker: the first currency-based column adds it to the column’s badge, preset to your default currency. Beebole converts every amount into that currency before totaling. Each time entry or expense is converted at the exchange rate of its own date, using the daily rates Beebole fetches from an exchange-rate service — so a euro rate on a January entry and a dollar rate on a June entry both land in the report’s currency at the rates that applied on those days. Pick another currency in the badge and the whole report is recalculated. The stored data never moves: a rate stays in the currency you entered it in, and changing your organization’s currency in Account Settings converts nothing either — it only changes the default the picker starts from.

Filter and scope the data

Filters and periods work the same on every report and are covered on the Reports page: set a date range per folder or per report, and filter by people, projects, tasks, tags, project categories or plannings, work location, the approval status of the timesheet, or owner and status for tasks. Every condition can include (is) or exclude (is not), except Approval status, which only offers is. What a filter covers is wider than the entity you name, so a report answers the question you meant:
  • Project, Project tag, and Project category filters include the project’s whole subtree, and also the time logged on tasks linked to those projects. Time your team booked on a task of the Acme project shows up when you filter on Acme, without adding a task filter.
  • Tag filters follow the tag hierarchy: a filter on a parent tag also matches the tags below it. And when a tag sits on a parent project, everything under that project is covered too.
  • Task and Planning filters follow the task, even when the time was recorded as project time. If a suggested entry had to be logged on a project because your timesheet does not accept time on that planning, the entry still counts as that task’s time here — and an is not condition still excludes it.
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. Beebole saves which views are open with each report, along with the chart type, the axis settings, and the chart height, and restores them the next time you open the report.
Beebole report Margin by Client per Month in Chart view, with Chart type set to Stacked bar, Label axis Client: Name, Group by Period: Month and Value axis Time: Hours, showing one bar per client stacked by month from January to September 2026

A stacked bar chart of hours per client, split by month

Switching chart type

Click the chart type picker to choose from 11 chart types:
Beebole report Margin by Client per Month in Chart view with the Chart type picker open on Stacked bar, listing Bar, Line, Pie, Area, Stacked bar, Stacked area, Horizontal, Scatter, Radar and Treemap over the stacked bar chart of hours per client

The chart type picker; scroll the list to reach Waterfall

Configuring chart axes

Once you select a chart type, use the axis controls to map your data:
  • Label axis — Choose the field that supplies the category labels (e.g., project name, person, time period).
  • Value axis — Select the numeric field to plot (e.g., hours, billing amount).
  • Group by — Add a second label field to split each bar or line into separate series.
  • Swap label axis and group by — Click the swap button to exchange the label axis and the group-by column.
Label axis and Group by open the same field list as the report’s columns, and Value axis its Time and amounts fields. Picking a field that is not a column of the report yet adds it as a column.
Beebole report chart controls: Chart type Stacked bar, Label axis Client: Name, the swap button, Group by Period: Month and Value axis Time: Hours, with the Label axis list open on Time and amounts and Entities, Client expanded to its levels and Name selected

The Label axis selector, open on the field the chart is labeled by

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.

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 hours, 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.
Beebole Matrix view of the Margin by Client per Month report with Rows set to Period: Month, Columns set to Client: Name, Metric set to Time: Hours and Heat map checked, showing hours for Acme Corp, Greenleaf Industries, Northstar Financial, Quantum Logistics and Silverline Retail from January to December 2026, shaded by value, with row and column totals

A matrix of hours per month and client, with the heat map on

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 and restored the next time you open it. 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 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, Paste (when you have copied a report), and Delete. Sharing is not in the menu — click Share next to the folder’s name, as described on the Reports page.
  • 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.
Beebole Reports menu with the action menu of the Current Month folder open, listing Duplicate, Rename, Filter, Paste and Delete, Paste being offered because a report was copied

A folder's action menu after a report was copied

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

Reports

Folders, periods, filters, sharing, exports, and the built-in reports such as Budget Status.

Billing Rates

Configure billing rates so billing and margin columns show data.

Cost Rates

Configure cost rates so cost and profit columns show data.

Custom Fields

Define custom fields and use them as report columns.

Frequently asked questions

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.
Only if you share them. Report folders in Beebole belong to the person who created them, and you share a whole folder — click Share next to the folder’s name and pick people or tags. Whoever opens a report, the results only include the projects and people that person’s role allows.
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.
Yes. Any custom field visible on people, projects, or tasks is available as a field when you add a column for that type. Fields visible for time records appear under the Time column, and fields visible for absence types under the Absence type column. No extra setup is needed in the report itself.
Every billing, cost, and expense amount is converted into the report’s currency — the one shown on the currency badge, preset to your default — at the exchange rate of the entry’s date, using daily rates Beebole retrieves from an exchange-rate service. Totals therefore add up in one currency even when people and projects carry rates in several. Change the badge’s currency to recalculate the report.
Add a Time column and pick Overtime (daily), Overtime (period), or Overtime balance, then group by person and, if useful, by Period. Overtime is measured against each person’s work schedule, so assign schedules first — without one, Beebole assumes a 24/7 schedule and reports no overtime.