Time Tracking Management

Flowtly Editorial Team6 minUpdated

Flowtly provides managers with two interfaces to oversee and manage employee time tracking: the Calendar View and the Table View. Both views are available to users with the roles ROLE_WORKING_HOURS_VIEWER or ROLE_WORKING_HOURS_MANAGER, and can be toggled via the switch in the top-right corner of the Work Time module.

The Calendar View offers a monthly overview of logged hours, displaying project names and time allocations directly on each calendar day. This view is especially useful for reviewing individual or project-level workload patterns and spotting gaps or inconsistencies over longer timeframes.

The Table View provides a bi-weekly matrix of daily logged time versus expected working hours, displayed across all selected employees. This layout is designed for quick comparisons, team-level tracking, and identifying missing entries at a glance.

While employees use the Calendar View primarily to log their own time, managers benefit from enhanced functionality in both views - including filters, details, editing permissions (when applicable), and summary insights.

Role-Based Access Behaviour of Calendar View

With the role ROLE_WORKING_HOURS_VIEWER, your access to see other employees time entries is limited to reviewing the time logged only for the projects to which you are personally assigned. Employees with the role ROLE_WORKING_HOURS_MANAGER can review accurate working hours records for any employee and any project in the organisation. ROLE_WORKING_HOURS_MANAGER grants users the ability to view and modify time entries for any employee. Users can locate a specific employee using filters, navigate to the relevant day, and click the Edit button on the corresponding time entry to make modifications.

What You See in the Calendar View

The Calendar View provides managers with a month-long overview of time entries logged by selected employees - by default across the entire organisation. This view is ideal for quickly scanning how work is distributed, spotting missing entries, and understanding project engagement over time.

Each calendar day displays all time entries from all selected employees and/or projects with the total hours per project, per day.

For example, if three employees logged time for different projects on April 23rd, the calendar will display a stacked list showing each project and the corresponding time entries for that day - making it immediately visible how much effort was spent, by whom, and on what. Managers can hover over or click into any day cell to open a detailed breakdown of that day's entries. The modal includes:

  • The employee name

  • The project name

  • The logged time

  • Any description or notes

A pencil icon (if the manager has ROLE_WORKING_HOURS_MANAGER) to edit details.

Role-Based Access Behaviour of Table View

The visibility and functionality in this view depend on user roles:

  • Users with only ROLE_WORKING_HOURS_VIEWER can switch to the table view, but will only see time entries for projects they are assigned to. They cannot expand user rows or edit entries.

  • Users with ROLE_WORKING_HOURS_MANAGER can view the table for all users and projects and are allowed to edit time entries, but cannot expand user rows to see the breakdown and project rates.

  • Users who have ROLE_PROJECTS_MANAGER in addition to viewer or manager roles can expand rows to see detailed per-project breakdowns.

  • When both ROLE_WORKING_HOURS_MANAGER + ROLE_PROJECTS_MANAGER are assigned, the user gets full access: view and edit for all time entries, across all users and projects, including drill-down views and rate redirection is it's missing for an employee.

What You See in the Table View

This view displays a calendar-style grid of all employees (or filtered selections) and their daily work time entries. Each cell in the grid shows two values:

  • The logged time for the day (e.g., 8:00)

  • The expected working time for that day (usually 8:00, but reduced or empty on weekends, holidays, days outside the employee's agreement, or based on time-off)

Users can scroll horizontally through the weeks and vertically across all employees. You will see a gray-striped background for weekends and holidays. If a user has a public holiday, the expected time will not be displayed, and the cell is visibly dimmed. However, time entries are not blocked for any day.

Expanding Employee Rows for Project Breakdown

Managers with the appropriate permissions (see Role-Based Access Behaviour of Calendar View) can expand a user's row by clicking the arrow next to their name. When expanded, the system reveals:

  • Projects the user logged time against

  • The logged amount per project

  • Hourly rates (if set)

  • Warnings when rates are missing

Each project row will show the logged time and associated rate for that project, or a red warning: "Missing hourly rate" if no rate is configured. Clicking on the red warning will redirect the manager directly to the rate setting page for that project–employee combination. This provides a convenient shortcut for PMs to resolve rate gaps during time reviews.

Viewing and Editing Logged Time Details

Hovering and clicking on any non-empty time cell opens a detailed modal for that time entry, that includes date, project name, logged time duration and description. A pencil icon (visible only for users with ROLE_WORKING_HOURS_MANAGER) gives possibility to edit the time or description. Users without edit permission can still view this modal for insight into what was logged, but cannot modify its contents.

Moving a time entry to another project

Editing a time entry includes the project it is logged against, so changing that field moves those hours from one project to the other rather than copying them. It is the usual way to correct time that was logged in the wrong place.

Flowtly refuses the move when the project the hours are leaving has been invoiced. The entry stays exactly where it was and nothing is saved. The message on screen is the general error notice rather than an explanation of the rule, so if a project change will not save and the rest of the entry edits normally, invoicing on the original project is the first thing to check.

Two details decide whether you will be refused:

  • The check is on the project the hours are leaving, never the one they are going to. Moving hours onto a project that has been invoiced is not restricted.
  • Any invoice line raised for that project counts, not only lines billed in hours. A project invoiced once for a fixed-price milestone refuses the move as well, because Flowtly does not record which individual entries a given invoice line was built from and will not guess.

Only a change of project is affected. The duration, the description and the date on an invoiced project's hours stay editable as they always were - an invoiced project does not become read-only.

If the hours genuinely belong elsewhere, treat it as an invoicing question rather than a time-tracking one: the figures on an issued invoice were derived from that project, so speak to whoever manages invoicing for it before the underlying time is moved.

Filtering Options

At the top of the both views, you can apply dynamic filters to narrow down the data:

  • Employee filter - Filter the logged time entries by selecting specific employees. If you can review other people's time, the page opens on everyone you are allowed to see; Only me next to the filter switches to your own time in one click, and clicking it again returns everyone. Users who track only their own time always see just themselves.

  • Project filter - Filter the entries by specific projects/phases. This is useful for tracking the progress and time allocation across different projects. By default, all projects are selected.

  • Combination of filters: For more precise review, managers can apply both filters simultaneously. This allows them to see time logged by selected employees on selected projects, providing a detailed overview of resource allocation and project timelines.

Filters apply as soon as you tick a person or project - there is no Apply button. The selected people, projects and month are part of the page address, so reloading the page keeps them and you can share a link to the exact view.

Export Options

At the top right, you will find a single Export Report button.

Clicking this button opens a dialog where users can see export parameters:

  • Date range
  • Include sub-projects (only shown when the project filter is in use)
  • Group by and, once a first level is chosen, Then by — Team member, Project or Task
  • Report type — Type 1 (detailed) or Type 2 — Client summary of services
  • File format (PDF, CSV or XLSX), for Type 1. An XLSX has the same columns as the CSV, with numbers stored as numbers so they can be summed straight away, and the same entry limit as the CSV.
  • Remember these settings

Exports reflect the applied filters and grouping options, making them useful for internal audits or client billing reports.

Which grouping options you are offered

The dialog offers only the levels your current selection can actually be split by, because a grouping the selection cannot support would quietly give you a flat list instead:

  • Team member appears when the export covers two or more people.
  • Project appears when it covers two or more projects — ticking Include sub-projects can be what makes that true.
  • Task is always available.
  • Then by appears once Group by is set, and never repeats what you chose there.

When Task is the only level your selection supports, the dialog says so, rather than leaving you a control you can change to no effect.

The two report types

  • Type 1 (detailed) lists every entry, and you choose PDF, CSV or XLSX.
  • Type 2 — Client summary of services is the priced summary for the client, with the rate and net amount on each line. It is PDF only, so the format control is replaced by a note saying so.

The names changed from Internal (detailed) and Client — summary of services; what each report contains did not.

The structure preview

Beside the export options, the dialog shows a Preview of the report, marked Structure only: it shows the report's shape, not its finished pages. You see each group with its number of entries and hours, the first entries of the first group followed by a line such as … 12 more entries, and the grand total. For Type 2 — Client summary of services the preview also shows the rate and net amount of each line, and the total net.

The line at the top sums up the export. For Type 1 it reads, for example, ≈ 4 pages · 3 members · 5 groups: the number of pages is an estimate, and the members are the people whose time the export contains. For Type 2 it shows the net amount instead, for example ≈ 2 pages · net 71 550,00 PLN.

If a group would start on the last lines of a page, a page break is inserted before it so that its heading stays with its rows. The preview draws this as a dashed Page break before this group · it would have split line, and a note beside the options names the group and the page.

The preview follows every change you make to the dates, the selection, the report type and the grouping. If nothing was logged in the range for the people and projects you selected, it says so and Download stays disabled until you widen the range or change the selection. If the preview cannot be loaded, you can still download the report, or choose Reload preview. For a very large export the preview counts only the first entries and says so; the file you download still includes them all.

Remembering your settings

Tick Remember these settings before you download, and the report type, the grouping and the file format are reused the next time you open the dialog. They are kept per person and per organisation, so they follow you to another browser or computer. When something is remembered, the box opens already ticked.

The date range and the people and projects you selected are never remembered, because they describe one export rather than how you work. To forget what was stored, untick the box and download.

If a remembered grouping does not fit the selection you have open (you remembered Team member, then Project, say, and the export covers one person and one project), the dialog says so and names the levels it could not use, instead of quietly giving you a flat report. The grouping applies again as soon as your selection supports it.

Previous exports, and comparing one with today's hours

Every timesheet you download is kept, so the Export Report dialog also shows a Previous exports list under the export options. Each row names the day it was exported, who exported it, and a short summary of what it covered — how many people, and how it was grouped.

Two things you can do from a row:

  • Download the file again. You get the original file, exactly as it was sent, not a fresh export of today's hours.
  • Compare with current hours. This is the useful one when somebody queries an invoice.

Exports are kept from the moment this feature arrived, so the list starts empty and fills as you export. Files downloaded before then are not in it.

What the comparison shows

Compare with current hours puts three versions of the same timesheet side by side, one entry per row:

  • Live now — the hours as they are logged today.
  • As adjusted — the hours as the report presented them, if that export was produced from a reviewed draft. Blank for an export that had no adjustments.
  • Exported — what the file you sent actually said.

A row that has changed since the export is marked, with a note spelling out the difference: exported 2:30, now 3:00. That is the answer to "the file says one thing and the system says another" — it tells you which entry moved, and by how much.

Two rows read differently, and the distinction matters:

  • No longer available — the entry is not readable now. It may have been deleted, or it may simply be outside what you are allowed to see. The comparison does not say which, and its hours are left out of the "Live now" total rather than counted as zero. When any row is in this state, the comparison says how many, so a total that does not appear to add up is explained rather than puzzling.
  • Added after the export — the entry is logged now, inside the range and filters the export covered, but it was not in the file.

The exported file itself never changes. The comparison only ever tells you what has happened since.

How grouping reads in each report

  • CSV - with a grouping method chosen, each row names the project or the person it belongs to, spelled the same way as in an ungrouped export.
  • Type 2 (PDF) - choosing Team member or Project as the grouping method groups the priced lines accordingly. Each group lists its lines with rate and net amount, ends with a subtotal, and the report ends with the grand total. A person's group never merges lines from different projects.
  • Client heading - when every line in the client report belongs to one client, the report opens with that client and who ordered the work, whether or not it is grouped. A report covering several clients has no single client heading.
  • Project names on lines - when the report is not grouped by project, each line starts with its project: Project · description.
  • Time without a person - entries that have no person are collected under a No person group.

How large an export can be

An export always holds every entry that matches your selection; it is never cut short. A selection that is too large is refused instead, and the dialog shows the reason so you can adjust it:

  • Number of entries. A PDF can hold up to 10,000 time entries and a CSV up to 50,000. Above that, choose a shorter date range or fewer people or projects. Because a CSV holds more, a Type 1 selection too large for a PDF may still export as a CSV.
  • Length of the period. The date range can cover at most one year. For a longer stretch, export it in parts.

Exporting a whole project, phases included

The project filter matches the projects you picked and nothing beneath them, so selecting a parent project on its own returns only the hours logged directly against that parent. For a project split into phases, that is usually close to nothing — the hours sit on the phases.

Tick Include sub-projects to pull in every phase below the projects you selected, at any depth. Combined with Group by → Project and the CSV format, this answers "how many hours went into this project, and where did they go" in a single file: one row per phase, covering every employee who logged time.

Two things worth knowing:

  • The option only descends. Selecting one phase adds that phase's own sub-phases, never its parent or its sibling phases.
  • It is off by default, so an export you already rely on keeps returning exactly what it returned before.

When you filter by employees or projects, the values in the summary bar below the calendar and table will update accordingly. "Planned hours", "Days off", "To be filled", and "Logged hours" values will show the total sum for the selected employees.

Hours worked for specific project can be also reviewed by "Go to hours view" functionality described in the Projects List article.

What the "Days off" figure counts

"Days off" is leave time, expressed in whole days — the leave recorded in the period divided by the employee's contracted working day, rounded to the nearest whole day. It is not a count of the entries on the calendar beside it, and the two can legitimately differ.

Three things follow from that, and they are the ones worth knowing before comparing the figure with the calendar:

  • A part day counts as part of a day. Four hours of leave against an eight-hour contracted day is half a day, so on its own it rounds to 1; two half days also read as 1. A short absence of an hour or two rounds down and does not move the figure at all, though it still appears on the calendar.
  • Bank holidays are not counted here. A public holiday is not an absence the employee took — it lowers "Planned hours" instead, which is where its effect belongs.
  • Pick up days and remote days are not counted here either. A day in lieu draws on its own allowance rather than annual leave, and a remote day is a working day. Both are still drawn on the calendar, because the calendar shows everything recorded against the day.

So a month whose only entry is a pick up day shows that day on the calendar and reads "Days off: 0". That is the figure working as intended: nothing was taken from the leave the figure measures.

The figure carries the note "Counted in whole days" beneath it, so the unit is visible on the screen itself.

Where planned hours come from

Planned hours are derived from each employee's agreement rather than from a fixed working day. The weekly working time set on the agreement is spread across working days to give the expected time on each day cell, and the agreement's start and end dates decide which days are counted at all.

This is most visible for people who are employed for only part of the period on screen:

  • An employee who joins mid-period is planned from their start date onward, and the days before it carry no expected time.
  • An employee whose agreement has ended is planned only up to that end date. A period that falls entirely after they left shows no planned hours for them.
  • An employee employed for the whole period is planned across all of it, at their contracted weekly hours.

Agreement types that do not drive system calculations, such as a letter of intent or a work experience record, do not set expected time. Where an employee has no agreement at all - a contractor paid by the hour, for example - a standard full working day is used instead, so their days stay visible for review rather than reading as zero.

Example use cases

  • Monitor Team Workload: A project manager needs to quickly identify which team members haven't logged their full expected hours for the current week to follow up and ensure balanced workloads.
  • Client Billing Reporting: An administrator needs to generate a detailed timesheet for a specific project's client billing for the past month, grouped by employee and exported as a PDF.
  • Project Budget Review: A finance user wants to check if all hourly rates are configured for employees working on a particular project and easily navigate to set missing rates before invoicing.
  • Resource Allocation Insight: A team lead wishes to review how time is distributed across different projects for their direct reports over a quarter, using the Calendar View to spot trends and make informed staffing decisions.

Related tutorials

Related terms