Cart

← All guides

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.

In hours the holiday allowance, not in days
Three kinds public holidays fixed, annual or Easter-based
Request submit, approve, reject
Offset an approved absence cancels out undertime

Where things live

The split follows the question of whom it concerns:

In your own profileThree tabs are added: HR for employment contracts, Holiday for allowance and requests, Absences for everything else.
Under ManageHoliday requests, Public holidays, Absences and Absence requests — the view across all staff.
In the settingsManage → 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:

KindWhat for
Fixed dateA single day in a single year
AnnualThe same calendar day every year — New Year, national holiday
Easter-basedAn 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

Good to know

Frequent questions

Everything you should know about our modules, licences, updates and support before you buy.

Why does my purchased FreeScout module show an expiry date?

With your purchase you get the module plus twelve months of support, security updates and new features. The expiry date shown refers to those included services — not to your right to use the module at all.

What happens when my licence expires?

The module you have installed keeps working. Once the licence has expired, though, no new security or feature updates arrive and the included support can no longer be used.

You decide for yourself whether to renew the licence or to keep using the installed module without further updates, at your own responsibility.

Others promise lifetime updates. Why don’t you?

Technologies, security requirements and dependencies keep changing. What works reliably today can be outdated or unsupported tomorrow. Good software therefore needs continuous care, testing and development.

Rather than tie you to a permanent subscription, we leave you the choice: renew your licence, or keep using the installed module without further updates, at your own responsibility.

Do I need your LaStore module?

No, but the LaStore module connects your FreeScout instance with the modules you bought, and it brings several advantages:

  • installation with one click
  • automatic detection of available updates
  • easy updating right inside FreeScout
  • verification of the package signature
  • protection against module packages altered or tampered with unnoticed

Our modules do not use the normal update process, because it is not secure. The LaStore module verifies each of our modules before updating. An attacker therefore cannot deliver forged, dangerous updates. Without this module the verification is up to you, and it is a manual process.

without LaStorewith LaStore, autopilot offwith LaStore, autopilot on
learns about new versionsnoyes, dailyyes, daily
installsby hand from the portalat the press of a buttonovernight, without you
verifiedby you, via shasum -a 256yesyes
Do I really get the complete source code?

Yes. Our modules are provided under the AGPL-3.0 licence. The module as delivered contains the complete source code, which you can inspect and adapt within the terms of that licence.

On how many FreeScout instances may I use the module?

One licence covers one active FreeScout instance. Two free server moves are included on top of that.

If an old server is no longer in use, the system releases its activation automatically after 90 days. An instance that is unreachable or already deleted is therefore not counted against your licence for good.

Can I return a module I bought?

You have a 14-day right of return. It ends as soon as you activate the module — not already when the licence key is delivered to you.

So activate the module only once you have finally decided to use it. For consumers in the EEA, the statutory provisions on the right of withdrawal for digital content apply in addition.

Who issues my invoice?

Payment is handled by Paddle. Paddle acts as Merchant of Record and therefore as the seller. That is why Paddle appears as the issuer of the invoice, and possibly also as the payee on your card or bank statement.

Does a module need other FreeScout modules?

That depends on the product. Some modules work entirely on their own and offer additional features when other modules are present. Others have hard dependencies.

The slot finder, for example, strictly needs the Calendar module, because the available appointments are worked out from the calendars kept there.

Required and optional dependencies are stated on each product page.

What can I do if something doesn’t work?

We test our modules carefully. Even so, a feature may not behave as expected in a particular environment.

Every module comes with a detailed guide. If that does not get you any further, you can open a support ticket. Describe the problem briefly and the steps you have already taken — we are glad to help.

Pay securely, worldwideYour payment is handled securely by Paddle. You can pay from anywhere in the world, comfortably in your own currency — proper invoicing included.
Open, auditable, adaptableThanks to AGPL-3.0 you get the complete source code. You can audit the software, adapt it yourself and keep running it independently.
Two server moves includedYour FreeScout instance is moving? You can transfer your licence to a new server up to twice, free of charge, and keep using the module there.
Install once, stay current by itselfWith our LaStore module for FreeScout you install what you bought with a single click. Available updates are checked and installed automatically.

Play video

Playing establishes a connection to YouTube.

View image