HR reporting tools: headcount, turnover and absence
Choose HR reporting software by the reports you need, their definitions, access and export options. Compare Breathe, BambooHR and Zoho People, with a fictional workforce example.
In this guide
- Which HR reporting tool should a small business choose?
- Define five reports before asking for a demo
- Compare built-in reports with advanced analytics
- Headcount and FTE: count the same workforce
- Turnover: make the average-headcount method explicit
- Absence: use scheduled time and a defined leave type
- Check access, exports and when the data refreshes
- Use the same seven checks in every software demo
- Shortlist the workflow and price the retained package
Which HR reporting tool should a small business choose?
Start with the reports your team must produce: headcount, starters and leavers, turnover, absence and the next actions due. Choose a tool that can reproduce the agreed numbers for the right dates and people, then give each reader the appropriate view and a usable export.
Breathe documents named operational reports, BambooHR distinguishes standard reporting from its Elite custom dashboards, and Zoho People separates report scopes and analytics. The useful choice depends on your definitions, retained package and data workflow; a longer feature list does not establish the best fit.
This guide focuses on selecting software for a UK small-business reporting brief. The example below is fictional. It does not claim that these products have been trialled with employee records or that a report determines what action to take about an individual.
Define five reports before asking for a demo
For the underlying person records, login accounts and linked documents, use the employee database buying guide before comparing the report outputs.
| Report | Decision it supports | Definition to agree |
|---|---|---|
| Headcount and FTE | How many employees and how much contracted capacity are in scope? | Snapshot date, worker types, active-status rule and full-time reference hours. |
| Starters and leavers | What changed between two workforce snapshots? | Effective start and departure dates; distinguish internal transfers from leaving the organisation. |
| Turnover | How much employee movement occurred in this period? | Which exits count, average-headcount method and period; identify voluntary-only rates separately. |
| Absence | What scheduled capacity was unavailable? | Sickness versus other leave, hours versus days, approved records and scheduled-time denominator. |
| Tasks and exceptions | Which onboarding, review or data-quality items need attention? | Due date, owner and status; distinguish overdue from missing information. |
Keep the population and date range beside every result. Six rows in a people export might include a contractor; a count of employees may therefore be different. A report about hours worked is also a different measure from contracted FTE.
Compare built-in reports with advanced analytics
| Product | Documented scope | Buying check |
|---|---|---|
| Breathe HR | Named headcount, turnover and absence reports; report access varies by role. | Reproduce your population, date filters and export. Confirm required roles and features in the actual plan. |
| BambooHR | Built-in and custom HR reports; Custom Dashboards & Analytics is an Elite package feature. | Do you need an operational report or the advanced dashboard capability? Quote the package that provides it. |
| Zoho People | My, Team and Organization report scopes; Analytics and Advanced Analytics are distinct routes. | Identify the exact reporting route, permissions, connected data and refresh timing. |
Breathe’s headcount documentation describes worker-type splits and monthly CSV output. BambooHR’s reporting overview describes built-in and custom reports; its custom dashboard FAQ places that capability in Elite and says it complements standard reporting.
Zoho People’s report guide lists employee-information, attendance and leave reports and explains the three access scopes. Its Analytics documentation describes a separate analytics path and specific restrictions. These are product boundaries, not an equal-feature ranking or a complete price quote.
Headcount and FTE: count the same workforce
Use this fictional September 2026 roster. A start date is included. First excluded date is the first date the person is no longer active in this example; it is deliberately not an undefined vendor “leaving date”. E03 is therefore included through 19 September and excluded from 20 September. Count employees only for the employee metrics. C01 is retained as a separate contractor record.
| ID | Worker type | Start date | First excluded date | Weekly contracted hours | Active on 30 Sep? |
|---|---|---|---|---|---|
| E01 | Employee | 2025-01-01 | None | 40 | Yes |
| E02 | Employee | 2025-01-01 | None | 20 | Yes |
| E03 | Employee | 2025-01-01 | 2026-09-20 | 40 | No |
| E04 | Employee | 2025-01-01 | None | 32 | Yes |
| E05 | Employee | 2026-09-10 | None | 40 | Yes |
| E06 | Employee | 2026-09-25 | None | 24 | Yes |
| C01 | Contractor | 2025-01-01 | None | Outside employee FTE | Yes |
There are 4 employees on 31 August and 5 on 30 September. The closing employees total 156 contracted hours a week. Against this example’s assumed 40-hour full-time reference, closing FTE is 3.90. Five people and 3.90 FTE are both correct for different questions. Neither is the number of hours actually worked.
C01 makes the closing count of active people six if contractors are included. The complete roster contains seven historical records. A chart showing five, six or seven needs its population and status filter explained before it can be reconciled.
Turnover: make the average-headcount method explicit
The employee movement reconciles as 4 opening + 2 starters − 1 leaver = 5 closing. An internal department transfer would not add another employee or a company leaver in this example.
For a simple endpoint-average illustration, average headcount is (4 + 5) ÷ 2 = 4.50. One leaver ÷ 4.50 × 100 gives 22.22% for September. That is a monthly result for this tiny fictional workforce, not an annual rate or a market benchmark.
A daily average uses a different denominator. Counting active employees on each of September’s 30 calendar dates gives 136 employee-days, or 4.5333 average employees. The corresponding rate is 22.06%. This daily headcount calculation includes calendar dates; it is separate from scheduled working hours.
Breathe’s turnover guide describes leavers divided by average employee count and offers breakdowns by department, leaving reason and worker type. It does not establish that our endpoint method reproduces its averaging implementation. Ask the vendor how the selected report treats the averaging interval, exit date and worker types before comparing percentages.
Absence: use scheduled time and a defined leave type
The following inputs are assumed roster hours for the same fictional employees during September, including their part-month service. They are supplied for the exercise, not calculated from a UK workday calendar. Sickness and holiday are separate, non-overlapping hours within scheduled time. C01 is outside this employee calculation.
| Employee | Scheduled hours | Sickness hours | Holiday hours |
|---|---|---|---|
| E01 | 160 | 8 | 16 |
| E02 | 80 | 4 | 0 |
| E03 | 104 | 0 | 0 |
| E04 | 128 | 0 | 8 |
| E05 | 120 | 8 | 0 |
| E06 | 24 | 0 | 0 |
| Total | 616 | 20 | 24 |
For the specified sickness-hours rate, 20 ÷ 616 × 100 = 3.25%. Combining the 24 holiday hours with sickness would instead give 44 ÷ 616 × 100 = 7.14%. That is a broader leave measure and needs a different label.
Breathe’s absenteeism documentation includes leave and sickness and describes a days-based calculation. Our hours-based sickness example is not a claimed reproduction of that report. When employees have different schedules, confirm how the software handles days, partial days, non-working time and leave types. Do not compare the two percentages as if they measured the same thing.
Check access, exports and when the data refreshes
A useful test includes the report’s intended reader. An administrator’s successful export does not establish that a line manager can obtain the same result, or should see every field. Breathe’s report-permission guide distinguishes line-manager, HR, finance and administrator access. Verify the proposed role with fictional records and the smallest field set needed for the task.
Keep report date, filters, population and generation time with an export. Breathe’s export guide explains downloading reports; its headcount guide separately identifies CSV table output. Check that identifiers, dates, decimal hours and column meanings survive your intended spreadsheet workflow. A chart image alone is not a reconciliation file.
Refresh timing is a separate check from the reporting feature name. Zoho’s Analytics documentation says attendance sync occurs after the configured pay period, or at month end for unmatched pay periods; it does not provide daily attendance sync on that analytics route. It also excludes Performance-service analytics reports on that route. These restrictions should not be extended into a claim that every standard Zoho report is delayed or unavailable.
Correct one fictional source record, regenerate the report and record when the correction appears. Test both the visible dashboard and export. Ask how historic reports behave after a manager, department or record changes.
Use the same seven checks in every software demo
- Set the scope: September 2026, employees only, explicit date rules and the same seven fictional records.
- Reconcile snapshots: four opening employees, five closing employees and 3.90 closing FTE using a 40-hour reference.
- Explain movement: two starters and one leaver; changing a department must not create a company exit.
- Inspect the formula: show the turnover denominator and why it differs from the endpoint-average or daily-average illustrations if it does.
- Separate absence types: reconcile 616 scheduled hours, 20 sickness hours and 24 holiday hours without labelling all leave as sickness.
- Review access: compare the proposed administrator and manager views, export permissions and fields. Record any extra role or package requirement.
- Repeat after a correction: export the scoped data, change a fictional source value and note refresh timing and historic effects.
For each check, record the product, retained plan, report name, filters, expected value, observed value and unresolved question. This is a proposed evaluation, not a completed trial or an assertion that a product passed it.
Shortlist the workflow and price the retained package
Choose a named report when it gives the right repeatable result with suitable access and exports. Evaluate custom reporting when you need a supported extra field or grouping. Evaluate advanced analytics when the required cross-source analysis or dashboards justify the setup, ownership and data-refresh work.
Ask for reporting scope, user roles, employee bands, required modules, analytics access, setup and ongoing maintenance in one written quote. A base HR subscription does not establish every dashboard capability or a UK payroll licence.
Use the Breathe HR versus BambooHR comparison for employee bands and quote boundaries, or Zoho People versus Factorial for the wider HR workflow. For applications and the hired-person handover, read the HR recruitment and ATS guide. The HR directory provides the broader shortlist.
Frequently asked questions
What should an HR reporting tool include?
Start with defined headcount, starters and leavers, turnover, absence and task or exception reports. Confirm the date range, worker population, formulas, access, export fields and refresh timing in the actual package.
Is employee headcount the same as FTE?
No. Headcount counts people in a defined population at a date. FTE expresses contracted hours against a stated full-time reference. The fictional guide example has five closing employees and 3.90 FTE using a 40-hour reference.
How is employee turnover calculated?
A turnover rate divides defined leavers by average headcount for the same population and period, then multiplies by 100. State how the average is calculated. The guide’s endpoint-average and daily-average examples deliberately give different results and are not annualised.
Should holiday be included in a sickness absence rate?
A sickness-only rate and an all-leave rate are different measures. Define the included leave types and scheduled-time denominator. The fictional example has 20 sickness hours out of 616 scheduled hours, or 3.25%; including holiday changes both the meaning and result.
Does BambooHR include custom dashboards in every package?
The reviewed Custom Dashboards & Analytics FAQ places that capability exclusively in Elite and says it complements standard reporting. Do not confuse this package boundary with the broader availability of built-in and custom HR reports.
Does Zoho People analytics refresh attendance every day?
The reviewed Analytics documentation says attendance sync occurs after the configured pay period, with month-end sync for unmatched pay periods. It does not provide daily attendance sync on that route. Check the exact reporting route rather than applying this limitation to every standard report.
Put the guide into practice
Explore human resources tools, then compare your shortlist.
Explore the category →