# Filter, sort and group reports by a custom field

**Category:** [Time Tracking](https://help.totalctrl.app/hc/totalctrl/totalctrl-help-center/en-US/categories/time-tracking)
**Updated:** 2026-08-06

## Filtering

Go to **Time Tracking › Reports**. Alongside the date range, project, member and billable filters there is one control per custom field:

- **Picklists, yes/no and dates** match exactly.

- **Text, number and URL** fields match on “contains”, so a partial reference finds the entry.

- **Multi-select** matches when the option you chose is one of the values stored.

Reports default to the **last 30 days**. Widen the dates when you need more.

## Sorting

Every column header in the Entries table sorts, including the custom-field columns. Click once for descending, again for ascending.

Entries with **no value** for the field you are sorting by always sort **last**, in both directions. A blank is not the smallest value, it is the absence of one, and a report that opens with forty empty rows has buried its own answer.

## Grouping

Set **Group by** to a custom field and the breakdown becomes one row per value — hours, billable hours, entry count and billable amount for each. This is how you answer “how much of this month went to Discovery versus Build”. Entries with no value are grouped under *(not set)*.

**Multi-select fields can be filtered but not grouped.** One entry holds several options, so grouping by one would count its hours under every option it carries and show a total larger than the hours actually worked. A wrong total is worse than a missing breakdown, so those fields are left out of the Group by list.

## Export

**Export CSV** gives you the entries behind the report with every custom field as its own column, using the same filters and the same sort as the table on screen. Multi-select values are joined with commas in the cell.

## Getting good reports

- Use **picklists** for anything you will group by.

- Mark a field **required** on the templates where it matters — an optional field produces a large *(not set)* row and a report nobody trusts.

- Keep option lists short. Twenty options is a list nobody reads and a breakdown nobody can act on.

---

## Related Articles

- [Track your time](https://help.totalctrl.app/hc/totalctrl/totalctrl-help-center/en-US/articles/track-your-time)
- [Create a custom field](https://help.totalctrl.app/hc/totalctrl/totalctrl-help-center/en-US/articles/timetracking-create-custom-field-1)
- [Templates, and giving one to a project](https://help.totalctrl.app/hc/totalctrl/totalctrl-help-center/en-US/articles/timetracking-field-templates)
- [Custom fields in the API and AI tools](https://help.totalctrl.app/hc/totalctrl/totalctrl-help-center/en-US/articles/timetracking-custom-fields-api-1)
- [Configure project billing and budgets](https://help.totalctrl.app/hc/totalctrl/totalctrl-help-center/en-US/articles/project-billing-and-budgets)

---
[← Back to TotalCtrl Help Center](https://help.totalctrl.app/hc/totalctrl/totalctrl-help-center/en-US/)