Skip to main content
A filter decides which records a report counts. With no filter, the report includes every record in the period.

How filters are structured

Filters are built from groups and conditions.
  • Conditions inside one group are joined with OR. Any one of them may match.
  • Groups are joined with AND. Every group must match.
That gives you one level of nesting, which is enough to express almost any question without becoming unreadable.
This reads: billable time on either of those two projects.

The parts of a condition

Every condition has four parts. Exclude negates that one condition before its group is combined. Exclude – Billable – is – true keeps everything that is not billable.

The ten operators

is any of and is none of take a list. When the field has a picker you tick several values. When it does not, type them separated by commas: draft, sent, overdue.

Number fields only get number operators

Some fields hold a number – an amount, a duration, a date. On those, only is greater than, is at least, is less than, is at most and is set are offered. is and is not are deliberately not available on a number field. They compare text against a number, so is would match nothing and is not would match everything, and both would look like a working filter while quietly giving the wrong answer. If you switch a condition from a text field to a number field, TimeTracker repairs the operator for you. It moves to is at least and clears the value. If the operator was already valid for both, your choice is kept.

What you can filter on

The filter field list is exactly the column list – every field of the report’s source that you may see and that the source can calculate. Cost and revenue fields do not appear for a role that cannot view them.

Time entries

Fields: Date, Day, Week, Month, Quarter, Year, Day of week, Member, Project, Task, Client, Billable, Approval status, Timesheet status, Invoice status, Source, Group, Manager, Job title, Employment type. Number fields: Date, Reported time, Labor cost, Revenue, Profit, Billing rate.

Expenses

Fields: the five date buckets, Member, Group, Category, Project, Client, Billable, Date, Approval status, Invoice status. Number fields: Date, Expense cost, Billable value.

Invoices

Fields: the five date buckets, Invoice, Client, Status, Date, AR aging. Number fields: Invoice (the number), Date, Invoice total, Subtotal, Discount, Tax, Paid, Outstanding.

Projects

Fields: the five date buckets, Project, Client, Status, Health. Number fields: Budget, Actual cost, Tracked value, Forecast margin, Invoiced.

Tasks

Fields: the five date buckets, Task, Assignee, Group, Section, Status, Priority. Number fields: Estimate (h), Tracked, Remaining (h).

Timesheets

Fields: the five date buckets, Status, Member, Period, Group, Manager, Employment type. Number fields: Submitted, Approved.

Time off

Fields: the five date buckets, Policy, Member, Group, Status, Unit. Number fields: Days, Hours.

Timecard

Fields: the five date buckets, Member, Status, Group. Number fields: Scheduled, Worked, Late, Left early, Over scheduled.
Counts and percentages are never filterable. A count belongs to a whole group, not to one record, so there is nothing on a single record to compare it against.

Pickers versus free text

Some fields hold an id behind the scenes – a member, a group, a project, a client, a tag. Typing a name against those would match nothing, so TimeTracker gives you a picker of real values instead. With is any of or is none of, the picker becomes multi-select. Each picker is permission-checked on the server. If your role may not read the list, the field falls back to a text box rather than showing an empty picker that would look like “there are none”.

How to add a filter

1

Open Filters

In the report builder, open the Filters section. With nothing set it reads: “No filters. The report includes every row in the period.”
2

Add a group

Click Add group. A bordered box appears with one starter condition.
3

Set the condition

Choose Include or Exclude, pick the field, pick the operator, then set the value.
4

Add an OR

Click Add condition inside the same group. The new row is joined to the one above with OR.
5

Add an AND

Click Add group again. The new group is joined to the previous one with AND.
6

Remove something

The X on a condition row removes that condition. The X at the bottom of a group removes the whole group. It only appears when there is more than one group.

Example

Priya Raman wants billable, unbilled work on Northwind Studio’s two Bluebird Coffee projects. All three groups must match, so the report shows only billable, uninvoiced time on those two projects. She adds the Uninvoiced time and Revenue columns and now has the money still on the table. To exclude one person from the same report, she adds a fourth group: Exclude – Member – is – Ana Ferreira.

Temporary filters in the viewer

A report you cannot edit still lets you change the filters. Those changes are temporary and never touch the saved report. A banner appears while a temporary filter is active:
Temporary preview You’re previewing with temporary filters. They won’t change this saved report.
Two buttons sit beside it. Reset clears the overrides. Save as new report keeps them as a fresh report, and only appears if you can create reports.

Permissions

You do not need a separate capability to filter. What you can filter on follows what you can see:
  • A cost field only appears if your role holds time.viewCost.
  • A billing field only appears if your role holds rate.viewBilling.
  • Roster fields only appear if your role can read the roster.
  • A picker only loads values your role is allowed to read.
The server re-checks every filter field on every run. A filter naming a field you may not see is refused, not silently ignored.

What happens next

Filters are part of the saved report, so they travel with it into exports and scheduled emails. A scheduled report runs its saved filters, not whatever you last previewed.

Common questions

Put each condition in its own group. Groups are joined with AND. Two conditions in one group would be OR.
They land in the same place for a single condition. Exclude is clearer when you want to negate a picker-based condition such as is any of, because you keep the list and flip the whole thing.
An amount is a number and the value box collects text. is would match nothing and is not would match everything. Use is at least or is at most instead.
Either the field’s value is the human text already – a job title, an employment type, billable – or your role may not read the underlying list.
No. Counts, distinct counts and percentages describe a group, not a record, so there is nothing to test per row. Filter on the underlying field instead.

Troubleshooting

Build a report

The whole builder, section by section.

Report sources

Which fields each source offers.

Grouping and pivots

Nest rows and read subtotals.

Date ranges and periods

The period is a filter too.

Report permissions

Why some fields never appear.