Apps · People

Leave & attendance

Who's off, who's in, and who's working when. Staff book their own time off and clock themselves in; managers approve, plan the week and read the month — all off the same set of records.

User guideApps › Leave & attendance

One app, two audiences

Everything below is one app, installed once. It splits cleanly into self-service screens — the two every team member gets — and manager screens, each unlocked by a specific permission. Nobody sees a screen they weren't granted.

ScreenWhat it's forNeeds
My leaveYour balances, your requests, booking time off.Access to the app
AttendanceYour own check in / out and breaks.Access to the app
ApprovalsThe pending-request inbox, plus who approves what.Approve leave
KioskA shared device the whole team taps to clock in.Manage attendance
RosterThe week grid — shifts, days off, swaps.Manage attendance
ShiftsWork-pattern templates: times, break, working days.Manage attendance
TabelThe monthly grid of days × people, and its corrections.Manage attendance
ConsoleLive overview: in now, pending, on leave today.Manage attendance
StaffWho is on the roster and how they work.Manage staff

Alongside those, the app's menu also carries plain record screens for the reference data — Locations, Holidays, Leave types, Leave requests and Timesheets. Those behave like any other table in your workspace and are governed by ordinary record permissions.

Set up before anyone books anything

Three things, in this order. The app installs with five leave types already created, so leave works the moment somebody is on the staff list.

  1. A location Under Locations. This is an office or site, and it carries the two things the rest of the app computes against: Time zone and Working week (a preset such as Mon–Fri or Mon–Sat). One is enough to start.
  2. At least one shift Under ShiftsNew shift, then set Start, End and Break (min). A shift is what "planned to work" means for the people assigned to it.
  3. Your people on the staff list Under Staff. Give each person a Location and a Shift. Somebody who isn't on this list has no schedule, doesn't appear on the roster or the tabel, and gets no attendance reminders.

Public holidays are optional but worth doing early: Holidays takes a Name, a Date, an optional Location and a Repeats annually flag. Holidays are excluded from leave day-counts and show as H on the roster and the tabel.

Leave types and what a balance means

Leave types is where every rule about an allowance lives. Each type carries:

FieldWhat it does
NameWhat staff pick from when requesting.
PaidA flag on the type. Recorded, not calculated against.
AccrualThe policy the type carries: Upfront (full entitlement on day one) or Monthly (accrues through the year).
Annual entitlement (days)The allowance. Leave it at 0 and the type is still requestable — it just has no balance card.
Carry-over cap (days)Recorded on the type.
Eligible after (months of service)A waiting period counted from the person's hire date. 0 means immediately eligible.
ColourThe dot beside the type on balances, requests and the team calendar.

The five types created on install are Annual leave (24 days), Unpaid leave (15 days), Sick leave, Maternity/Paternity and Business trip — the last three with no entitlement set. Treat those numbers as starting values and edit them to match your own policy; nothing in the app is hard-coded to them.

Balances are worked out, not stored

The number on a balance card is the leave type's entitlement minus the approved days that person has taken in the current calendar year. There is no stored running total to drift out of step, and no per-person override — change the entitlement on the type and every balance moves with it.

Booking time off

My leave is the screen every team member gets. It opens on their own balance cards — remaining out of entitlement, with how many days they've taken.

  1. Open the form Request leave, top right.
  2. Fill it in Leave type, Start date, End date and an optional Reason.
  3. Check the day count The line under the form counts up as you pick dates — N working days. That number is worked out on the server against the person's own schedule, so weekends and their location's public holidays are already excluded. It's the number the request is recorded with.
  4. Send it Submit request. The request is created as Submitted and the approval starts immediately — there is no separate "send for approval" step.

The request appears under My requests with a status badge: Draft, Submitted, Approved, Rejected or Cancelled. While it's still Submitted (or Draft) there's an × to cancel it; once a decision has been made, that's gone.

"Not eligible yet"

If a leave type has a waiting period, someone inside it sees Eligible from and a date instead of a balance, and Submit request stays disabled for that type. The date is their hire date plus the type's Eligible after (months of service). Fix it on the leave type, or on the hire date — see HR records for where hire dates live when both apps are installed.

Approving a request

Approvals needs the Approve leave permission. It lists every submitted request with who asked, the type, the dates, the working-day count and their reason.

  1. Approve Approve decides it there and then. The request flips to Approved and drops off the list.
  2. Or reject, with a reason Reject opens a Reason for rejection box. The reason is required — Confirm stays disabled until you type one. It's stored with the decision.

When there's nothing waiting the page says No pending approvals.

Who approves what

Routing is per leave type: sick leave can go to HR, unpaid to a director, annual to a line manager. Open Approval settings at the top of the Approvals page to see the current map — one row per leave type with its approvers listed.

  1. Start editing Configure approvers. This button needs the Manage leave policies permission; without it the panel is read-only and says Only leave managers can change who approves.
  2. Point each type at someone Every type gets its own block. Pick User or Role, then the person or role. Add approver adds another to the same type — any one of them can clear it.
  3. Save Save rewrites the routing for every type at once. A type you leave empty falls back to a workspace admin, so no type is ever left with nobody able to decide it.
Holding the permission isn't the same as being the approver

Approve leave opens the screen. Whether your decision is accepted is a second, server-side check against the approver configured for that request's leave type. Somebody who can see the queue but isn't on the list for that type will be turned down when they press Approve — that's the routing working, not a fault.

Clocking in and out

Attendance is the other screen everybody gets — their own clock, nobody else's. It shows today's total, a state dot reading Checked in, On break or Checked out, and the buttons for whichever state you're in:

  • Check in — starts a session.
  • Check out — closes it and banks the worked minutes.
  • Start break / End break — a pause inside an open session. A break doesn't close the session.

Today's sessions below lists each in/out pair with the time, the worked total and where it came from. You can check in and out more than once a day; the totals add up.

Making people be on site

A location can require proof of presence before a self-service check-in or check-out is accepted. Set it on the location record:

Check-in policyEffect
Off — check in from anywhereNo check. The default.
GPS — must be within the radiusUses Latitude, Longitude and Geofence radius (m).
Wi-Fi — must be on an office networkUses Office Wi-Fi (SSID or BSSID, one per line).
GPS or Wi-Fi — either passesEither leg is enough.
GPS and Wi-Fi — both requiredBoth legs must pass.

When a policy is on, the Attendance screen shows Requires presence at and the location name, so people know before they tap. The check is made on the server, and a rejection says what was wrong in plain words — how far away you are, or that you need to be on the office network.

A browser can only prove location, not network

Web browsers can share GPS but cannot read which Wi-Fi network you're on. If a location is set to Wi-Fi or both, people checking in from a desktop browser will not be able to satisfy it. Either use GPS / either for desktop staff, or have them clock in from the phone app or the kiosk. Kiosk taps skip the presence check entirely — the device is already at the office.

The shared kiosk

Kiosk (needs Manage attendance) is the board you leave open on a tablet or a spare machine by the door. Everyone clocks themselves from it; nobody signs in.

  1. Pick the site The dropdown at the top starts on All locations. Choose this device's location and the board narrows to the people assigned there.
  2. Leave it open Each person gets a tile with their name and two buttons, In and Out.
  3. Tap A green confirmation flashes — name — checked in — and clears itself after a moment, ready for the next person.

Kiosk taps are recorded against the tapped person, tagged with the fact they came from a kiosk, and land in exactly the same place as a self check-in. The board shows No staff at this location. when nobody on the staff list is assigned to the selected site.

Planning the week: the roster

Roster (needs Manage attendance) is a grid of your people across seven days, showing what each of them is actually planned to do — their default shift, plus any override, approved leave and public holiday, merged together.

  • A shift name and its times — the plan for that day.
  • Off — a rostered day off.
  • A / S / U / M / B — approved leave, by type.
  • H — a public holiday. · — a non-working day. — nothing planned.

Cells that differ from the default sit on a tinted background, and the legend under the grid spells all of it out. This week and the arrows move the window; the location dropdown narrows the rows.

Click any cell and you get the three edits managers actually make:

  1. Shift that day Pick a shift and press Apply. That one day now runs on that shift, whatever their default says. An override replaces any earlier one for the same day — you can't end up with a contradictory "off and working".
  2. Day off, optionally with a make-up day Set day off on its own marks the day off. Fill in a Make-up day (optional) date — and, if you want, a different shift, otherwise Same shift — and the button becomes Day off + make-up day: both days are written together and cross-referenced in their notes. A make-up shift counts as a working day even when it lands on a weekend.
  3. Swap with… Pick the other person and press Swap. Both people's plans for that day are resolved and written across, each noted as a swap. Two people who are already planned identically can't be swapped — there'd be nothing to exchange.

A Note (optional) box rides along with any of them, and an overridden cell gains Back to default to undo it.

Leave isn't edited here

Cells showing approved leave don't open. They're the outcome of an approved request, so change them where they came from — the request itself. The cell tooltip says so: Approved leave — manage it under Leave requests.

Shifts

Shifts (needs Manage attendance) edits each work pattern as a card. New shift adds one; every field saves as you change it.

FieldWhat it means
Start · EndThe shift window. An end earlier than the start is read as an overnight shift.
Break (min)Unpaid break, subtracted from the span.
Paid hoursWhat a planned day is worth. Leave it blank and the greyed-out placeholder shows what the times and break work out to.
LocationScope the shift to one site, or leave it on Any location.
ActiveUncheck to retire a shift without deleting it. The card goes dashed and faded.
Working daysMon–Sun chips. See below.

Working days is the setting worth understanding. Select none and the hint reads No days selected — inherits the location's workweek: the people on this shift work whatever days their site works. Select some and it reads This shift runs only on the selected days — those days replace the location's workweek for everyone whose default shift this is. A weekend crew set to Sat + Sun genuinely works Saturday and Sunday and is off Monday to Friday, everywhere the app does schedule maths: the roster, the tabel, attendance reminders, and leave day-counts.

A shift in use can't be deleted

If anyone's default shift points at it, or any roster row uses it, the bin is disabled and the card reads In use by N staff/roster record(s) — deactivate instead of deleting. Uncheck Active instead: it disappears from the pickers and the plans that reference it stay intact.

Staff setup

Staff (needs Manage staff) lists your workspace members and sets up how each of them works: Shift, Location, Employment, Hire date and an Active tick. Someone not yet on the roster shows a single button to put them on it, and Sync members at the top does the whole list at once.

With HR records also installed the page changes shape: people are added once, in HR records, so the bulk sync is replaced by Open HR Records, the per-person button reads Set up work, and Hire date and Employment render locked with a Managed in HR Records link straight to that person's profile. Shift and location stay editable here — they're this app's to own.

Admin

The switch is per person, not per page. A member who has no employee record still edits their own hire date here, because there's nowhere else for it to live. Hire date is the one that matters: waiting periods, balances and "not yet employed" days on the tabel all count from it.

The monthly tabel

Tabel (needs Manage attendance) is the month as a grid — one row per person, one column per day, then three totals: Days, Hours and Leave. Pick the month and year at the top, optionally filter to a location.

A cell holds either a number of hours or a letter:

CodeMeans
HHoliday
WWeekend
ODay off
AAnnual leave
SSick leave
UUnpaid leave
MMaternity/Paternity
BBusiness trip

Nothing here is typed in by hand to begin with. Each day is worked out from what the app already knows: approved leave first, then public holidays and non-working days, then a rostered day off, then the hours actually clocked — and if nobody clocked anything, the hours the shift planned. Days before somebody's hire date are left blank.

Correcting a day

Click any cell. A small editor opens with two mutually exclusive options and beats everything the computation decided for that day:

  • Hours — a number. The day counts as worked.
  • Code — one of O, H, A, S, U, M or B. (Weekend isn't offered; it isn't something you set by hand.)
  • Clear override — throws the correction away and the cell goes back to whatever the app computes.

Save writes it and the totals move with it. Only the days you actually touch are stored, so a correction never freezes the rest of the month.

Exporting and printing

Export CSV downloads exactly what's on screen — the same cells, the same three totals — named after the month and location, and opens straight in a spreadsheet. Print lays the grid out for A4 landscape with the legend underneath.

Print needs pop-ups allowed

Printing opens a separate window. If your browser blocks it the page says Allow pop-ups for this site to print. — allow pop-ups for your workspace and press it again.

Timesheets

Rebuild timesheets takes the month you're looking at and writes one summary row per person into Timesheets — worked days, worked hours, leave days — and tells you how many it updated. It's a roll-up of the tabel, so re-run it whenever the tabel changes.

A timesheet whose Status is Approved is locked: later rebuilds skip it and leave its numbers exactly as they were. That's how you freeze a month once it has been signed off.

The console

Console (needs Manage attendance) is the at-a-glance screen. Four counters across the top — Staff, In now, Pending and On leave today — over four panels:

  • In now — everyone currently checked in, with the time they started and how they clocked in. Empty reads Nobody checked in.
  • Headcount by location — how many staff each site has.
  • Pending approvals — the waiting requests. Each one is clickable and takes you to the Approvals queue.
  • Upcoming leave — approved leave that hasn't started yet.

Reminders

Two things nudge people without anyone having to chase them:

  • Leave starting tomorrow — anyone whose approved leave starts the next day gets a notification the morning before, linking to My leave.
  • Check in / check out — evaluated every few minutes against each person's planned shift, in their location's time zone: a nudge at shift start if they haven't checked in, one at shift end if they're still checked in, and one if a break has run past the shift's break allowance. A rostered day off cancels that day's nudges; a rostered shift replaces the default one's times. These arrive as push notifications on the phone app, so they need the push app installed and configured to be delivered.

Who can do what

Opening any of these screens needs access to the app. The manager screens need a permission on top, granted per role under Settings → Module Access. Admins pass everything.

PermissionUnlocks
Approve leaveThe Approvals queue and the approver map.
Manage leave policiesThe Configure approvers button on that page.
Manage attendanceKiosk, Roster, Shifts, Tabel and Console — and clocking anyone but yourself in or out.
Manage staffThe Staff page: putting people on the roster and setting their location, shift and employment.

My leave and Attendance carry no permission at all, deliberately: they only ever show you your own data, and locking them would leave people unable to book their own holiday. Background on the two permission systems is in Permissions & access.

Admin · a permission is not a record grant

Access to this app and permission to read its underlying tables are two separate things, and granting one does not grant the other. It doesn't matter for My leave, Attendance or Approvals — those screens are served directly by the app and work for someone who holds nothing else. It does matter for the screens that read the tables: Kiosk, Staff, Shifts, Console and the location filters on Roster and Tabel. If you delegate Manage attendance or Manage staff to someone who isn't an admin, give them record access to Staff, Locations and Shifts as well — or they'll open a page that works but looks empty.

When something goes wrong

What you seeWhat it means
No leave balances configured. No leave type has an entitlement above zero. Set Annual entitlement (days) on the types that should carry an allowance.
Not eligible yet — Eligible from date The type's waiting period hasn't elapsed for that person. Check the type's Eligible after (months of service) and their hire date.
Submit request stays greyed out Either the day count is zero — the whole span falls on non-working days or holidays — or the selected type isn't yet available to that person.
Only a pending request can be cancelled The request has already been decided. Cancelling is only possible while it's Draft or Submitted.
No staff at this location. On the Kiosk or the Tabel: nobody on the staff list is assigned to the selected location — or the account you're using can't read the Staff table.
In use by N staff/roster record(s) — deactivate instead of deleting The shift is referenced. Uncheck Active rather than deleting it.
A whole month is blank for one person Their hire date is after that month. Days before somebody was employed are deliberately left empty.
Allow pop-ups for this site to print. The tabel prints from its own window. Allow pop-ups for your workspace.

How this connects to the rest of your workspace

  • HR records owns people. With it installed, hire date and employment type come from the employee's record and this app follows them — and their profile gains a Time tab showing their work setup and recent leave. See HR records.
  • Onboarding is what happens before somebody's first shift — Onboarding.
  • The whole arc, hire to leaver, is laid out in Employee lifecycle.