Attendance and Leave Management for Small Teams
A practical attendance and leave system for small teams — one-click check-in by default, verified mode only when needed, a clear leave approval flow, tamper-proof records, timezones and privacy done right.
Attendance and leave management for small teams works best with the least friction that still produces trustworthy records: one-click web check-in on any device by default, a stricter "verified" mode (office network, GPS range or an on-site code) only where proof of presence is needed, and a leave request → approve flow where nobody approves their own leave. Stamp records with the server's clock, show "today" in each viewer's timezone, and limit who sees what.
What small teams actually need
A small team's questions are simple:
- Who's working today, and who's off?
- When did someone start and finish? (For hourly staff, overtime rules or client billing.)
- Is my leave approved?
- How many days has each person taken this year?
A heavyweight HR suite answers these and fifty others, at the cost of setup, training and per-seat pricing. A lighter tool that people actually use beats a complete one that half the team ignores. Every requirement below is judged by one test: will people still do it on a busy Monday?
Check-in: default to one click
The best attendance data comes from the easiest check-in. One button, on any device, no app to install, no location prompt. The moment check-in needs a VPN, a specific phone or three taps, people forget, and the data becomes fiction that someone fixes by hand at month end.
LetRelay's default is exactly that: Check in when you start, Check out when you finish. Checking out is never blocked — a person who forgot to check out yesterday shouldn't be stuck today.
Verified mode: only when you need proof
Some organizations genuinely need to know someone was on site: shift work, security-sensitive locations, labour agreements that require it. For those, offer a verified mode as an opt-in setting, not the default:
- Office network — check-in allowed only from the office's IP range.
- GPS range — the browser's Geolocation API reports position, and check-in is allowed within a radius of the office (a geofence).
- On-site code — a rotating code displayed at the office (time-based one-time passwords, the same mechanism as authenticator apps, defined in RFC 6238) that must be entered to check in.
Be honest about the limits. Browser geolocation can be imprecise indoors and can be spoofed by a determined person; codes can be photographed and shared. Verified mode raises the effort of faking attendance; it doesn't make it impossible. Combine methods where it matters, and don't use location tracking where trust would do. In LetRelay, verified mode is a per-organization setting that admins switch on under Locations.
Tamper-proof records
Attendance data is only useful if nobody can quietly edit it. The rules LetRelay enforces in the database, not the UI:
- Times come from the server's clock, not the device's. A phone set to the wrong time — or deliberately changed — can't move a check-in.
- A record closes once. After check-out, the times can't be edited by the employee. Corrections go through HR, visibly.
- Users can't write attendance rows directly. The check-in action writes them; database policies refuse direct inserts or updates from the client.
This is the same principle as the rest of LetRelay's security model: enforce rules where they can't be bypassed.
Whose "today"?
A deceptively tricky bug: the attendance "today" list computed from the server's midnight. For a server in one timezone and a team in another, "today" starts at the wrong hour — people who checked in at 8 am appear under yesterday, or vanish from today's list for part of the morning.
The fix is to compute day boundaries in the viewer's timezone. The browser reports its IANA timezone (via Intl.DateTimeFormat().resolvedOptions().timeZone), the server passes it into the query, and "today" means midnight-to-midnight where the reader is. Times are stored in UTC and displayed in each viewer's zone. LetRelay fixed exactly this in 2026; a team spanning Kathmandu and California now reads the same records correctly on both sides.
Leave: a clear request → approve loop
Leave requests fail in email because nobody knows whether they were seen. A simple flow fixes it:
- Request. The employee picks the type (vacation, sick, personal, unpaid, other), the dates, a half day if needed, and a reason.
- Route. The request goes to the people allowed to approve it — in LetRelay, the person's team lead or director, someone with HR access, or an admin.
- Decide. An approver approves or rejects with an optional note. Nobody can approve their own leave, enforced in the database.
- Visible status. The requester sees pending, approved or rejected, and can withdraw a request while it's still pending.
Two database rules make it trustworthy: a new request is always filed as pending (a client can't submit one pre-approved), and the approver's identity and time are stamped by the database, not sent by the app.
Balances and policies
Leave entitlements vary by country, contract and company policy, so keep the tool's role modest: count days taken per type per year, and show them next to the request. Let HR own the policy. For reference, in the United States the Family and Medical Leave Act gives eligible employees up to 12 workweeks of unpaid, job-protected leave in a 12-month period, and covers private employers with 50 or more employees; other countries have their own statutory minimums. A small-team tool should record leave accurately, not interpret law.
Privacy: scope who sees what
Attendance and leave are personal data, and sick leave can reveal health information, which laws like the EU's GDPR treat as a special category requiring extra care.
- Individuals see their own records.
- Team leads and directors see the people they oversee.
- HR sees the organization, for leave administration.
- Everyone else sees at most "on leave today", not the reason.
Enforce this with row-level security so a direct API call can't read a colleague's sick-leave reason. Collect only what you need (GDPR's data-minimization principle is good practice everywhere): if you don't need GPS coordinates stored after the check-in is verified, don't store them.
Notifications: once, to the right person
Approvers get one notification when a request needs them; requesters get one when it's decided. A reminder if a request is still pending the day before it starts. That's all. Frequent pings teach people to mute the channel, and then the one notification that matters is missed. The same rule appears in first-response playbooks: fewer, better-timed alerts.
Rolling it out
- Turn on simple check-in for a pilot team for two weeks.
- Move leave requests into the tool at the same time — this is where people feel the benefit fastest.
- Only then decide whether verified mode is needed, based on real problems, not hypothetical ones.
- Publish who approves what, so nobody wonders where their request went.
If your team already uses a request desk, attendance and leave living in the same place means one login and one notification centre. The broader rollout advice is in onboarding a team to a new help desk tool.
FAQ
What's the simplest attendance system for a small team?
A one-click web check-in and check-out on any device, with times from the server's clock. Add verification only if you have a concrete need for proof of presence.
Should attendance require GPS?
Only if the organization genuinely needs on-site verification. GPS can be imprecise and spoofed, adds friction, and is sensitive personal data. Make it opt-in and store no more location than needed.
Who should approve leave requests?
The person's lead or manager, HR, or an admin — and never the requester themselves. The system should enforce that, not just suggest it.
How do I handle attendance across timezones?
Store times in UTC, compute "today" in each viewer's own timezone, and display every time in the viewer's zone.
Sources
Building Relay — the internal request desk with AI triage and SLA tracking.
Run your internal requests on LetRelay
AI triage, SLA-tracked queues, and bottleneck analytics — the help desk your team actually likes. Free to start.
Keep reading
HR Service Desk: Handling Employee Requests Without the Inbox
How an HR service desk works — categories for pay, leave, contracts and benefits, privacy that's enforced not promised, targets that respect deadlines like payroll, self-service for policy questions, and the metrics HR can use.
Free Help Desk Software: What You Actually Get
What free help desk plans typically include and leave out — seats, SLAs, automation, AI, reporting, data export — the hidden costs, and a checklist to evaluate any free plan before your team depends on it.
Internal Help Desk Satisfaction Surveys That Tell You Something
How to measure satisfaction with an internal help desk without annoying everyone — one question after resolution, a follow-up only on bad scores, response rates, CSAT vs effort vs NPS, and turning answers into changes.