HR module · User guide
Contracts, holidays, absences and teams in one place
The HR module keeps personnel data where the daily work is recorded: employment contracts, holiday allowances, public holidays, absences and teams. Staff file their own requests; approval happens from a shared queue.
The point where the effort pays off is at the end: an approved absence appears in the Activities module's report and offsets what would otherwise count as undertime. Nobody has to subtract holidays from target hours by hand.
The module requires the Activities module.
Where things live
The split follows the question of whom it concerns:
HR for employment contracts, Holiday for allowance and requests, Absences for everything else.Holiday requests, Public holidays, Absences and Absence requests — the view across all staff.Manage → Settings → Teams, the same list also next to the public holidays.Employment contracts
A contract records what the arithmetic needs: start and end, type of employment, weekly hours and the annual holiday allowance in hours. Documents can be attached.
Contracts are not overwritten but queued. From that history the module computes the allowance — which is exactly why it still adds up when someone changes their workload mid-year.
Holiday allowance
The allowance is kept in hours, not in days. That sounds unusual, but it solves the problem part-time workloads otherwise create: a holiday at 60 percent is not the same day as one at 100 percent — an hour is.
Everything else follows from that:
- Someone joining mid-year gets a prorated share, computed from the contract history rather than estimated.
- Whatever is left at the end of the year is rolled over.
- Holidays taken are deducted as soon as the request is approved.
A staff member sees their balance in the Holiday tab and files the request there. Approval or rejection happens from the queue under Manage → Holiday requests, where everyone's requests come together.
Public holidays
You maintain public holidays under Manage → Public holidays. There are three kinds, and the third is the reason three are needed at all:
| Kind | What for |
|---|---|
| Fixed date | A single day in a single year |
| Annual | The same calendar day every year — New Year, national holiday |
| Easter-based | An offset from Easter, such as Good Friday or Ascension |
Easter moves, and whoever does not calculate it adds four days by hand every year. The module works it out itself — with a built-in method and without the PHP extension calendar, which is missing on many servers.
A public holiday sets that day's target hours to zero. Nobody accumulates undertime through it, and nobody has to take it as a holiday.
Absences
Besides holidays there is everything else: military service, sickness, training. Which kinds exist you define yourself under Manage → Absences.
The difference to holidays is deliberate: an absence has no allowance. There is no number of hours to use up — sickness cannot be budgeted. Request, approval and rejection work exactly the same way.
Teams
A team is a named group of staff — Finance, Helpdesk, Field service. A name, optionally a description, and the members ticked.
The HR module does not use teams itself yet. They live here anyway, because membership is a fact about people and belongs next to contracts, holidays and absences. They were originally built inside the Dashboard module, which needed them — that was the wrong home, and they moved.
Other modules read them: the Dashboard offers a custom card only to the teams you pick.
Notifications
The module adds three checkboxes to FreeScout's own notifications page: time approvals, holiday requests and absence requests. For every staff member they start switched on, by email and in the browser.
Worth knowing
The Activities module is required
Without it there is no time tracking for an absence to be offset against — and then the HR module has no purpose. Activate it first.
Approved absences cannot be edited in the report
They appear there as their own labelled rows and cannot be edited like a time entry. What needs changing is changed on the request — otherwise there would be two truths about the same day.
A change of workload does not apply retroactively
The allowance is computed from the contract history. A new contract from 1 July therefore changes the second half of the year and not the first — which is correct, but surprising if you expect a single figure for the year.
Not getting anywhere with this? Support