Attendance in BeeHR is a set of daily records: one per person, per date, each carrying a status and — if somebody clocked in — times. Understanding where those records come from explains almost everything else about the module.
The three sources
Every attendance record is stamped with where it came from.
Self — the employee clocked themselves in from the phone app. This is the one that carries the most detail: check-in and check-out times, and optionally where they were and what kind of day it was.
Manual — somebody in HR recorded it, either correcting a day on the grid or marking a company holiday. This is the default for anything BeeHR didn’t receive from a device.
Imported — brought in from outside, for companies running a separate clock system or migrating from another product.
Self check-in has to be switched on before employees can use it — see Attendance Settings. With it off, everything is Manual, and attendance becomes something HR maintains rather than something that arrives.
The five statuses
Present, Absent, On leave, Holiday, and Weekend.
The grid shows these as coloured letters, one cell per person per day. What it shows for a day with no record at all is a dash, and the difference between a dash and an A is the single most important distinction in this module:
- Absent is a claim. Somebody was expected and did not come in.
- A dash is BeeHR admitting it has nothing for that day.
Only Absent feeds an absence deduction. A month of dashes costs nobody anything; a month wrongly marked Absent costs real money. It is worth being deliberate about which one you’re creating.
What a self check-in captures
When an employee clocks in from the app, the record can hold rather more than a time:
- Check-in and check-out times, as exact moments.
- Work type — Office, Remote, Client or Field, so a day working from a customer site is distinguishable from a day at a desk.
- Location, if the geofence is on: the coordinates, which fence they were in, and how far from it they were.
HR-entered records have none of that. They carry a status and nothing else, which is fine — a correction made three weeks later has no honest coordinates to record.
What BeeHR works out for itself
Some numbers aren’t entered anywhere; they’re derived from the times and the person’s shift.
Late minutes come from the shift’s start time plus its grace window. Worked hours come from the two punches, minus the shift’s break. Overtime is time past the scheduled end, beyond a grace period.
All of that only happens if track lateness and overtime automatically is on in Work Shifts. With it off, the times are recorded but nothing is calculated from them.
The rule underneath is that a shift is what makes a punch meaningful. 09:14 is early, on time or late depending entirely on which shift the person is on, which is why assigning shifts is worth doing before you rely on any of these figures.
What does not create attendance
Two things that reasonably look like they should, and don’t:
Approved leave. Approving a leave request updates the balance and the leave reports; it writes nothing into attendance. Those days stay dashes until somebody marks them.
The holiday calendar. Adding a public holiday records that the company is closed. It doesn’t put Holiday against anyone’s attendance — that’s the Mark Holiday button on the day panel.
Both are deliberate: the calendar and the leave list are what was planned, attendance is what was recorded, and BeeHR keeps them separate rather than assuming the plan happened. It does mean reconciling the two is a real part of month-end, particularly before you generate absence deductions.
Where to look
- The Monthly Attendance Grid — the whole company, a month at a time.
- The Attendance tab on an employee’s record — one person, several months.
- Correcting Attendance for a Day — fixing what’s wrong.