---
title: Attendance
description: What the Attendance module records, how it differs from Time tracking, and when a workspace needs it
order: 1
---

Attendance records presence - clock-in, breaks, and clock-out - as timestamped punches.
Time tracking records what a person worked on. The two modules are independent: either
runs without the other, and turning one off never touches the other's data.

## Attendance or Time tracking

| | Attendance | Time tracking |
|---|---|---|
| Records | Presence: in, break, out | Hours against a project work item |
| Primary screen | Clock | My week |
| Typical user | Hourly, on-site, shift-based staff | Project teams billing or costing work |
| Projects | Never asked for | Required for every entry |

Turn Attendance on under **Workspace settings → Workspace → Modules**. Kiosk sits below it
and cannot be switched on until Attendance is. Hiding a module keeps its data; re-enabling
restores everything exactly as it was.

## What gets recorded

Every clock action writes an immutable **punch**. Punches are never edited or deleted,
even by an admin. A correction adds new records that explain the change and leaves the
originals in place, so the history shows both what was recorded and what was later
decided. Erasing a departed person is the single exception, and it scrubs the free text on
their punches rather than the instants.

Alongside the punch ledger, SquadBear keeps a **shift** for each work session with the
worked and break totals already calculated. That is what the screens and the API read, so
opening a history does not replay months of raw punches.

## Expected time

A day's expected time comes from the person's work schedule, minus any approved leave for
that date. A public holiday sets expected time to zero for everyone, schedule or not.

Without a work schedule, expected time reads as a dash and no short-day or over-schedule
exception is raised. Set a schedule under [Work schedules](/docs/leave/work-schedules/).

Work schedules define daily *durations* and working days, not start and end times, so
exceptions compare worked hours against expected hours rather than flagging lateness.

## Reconciling with project time

When both modules are on, **Time tracking → My week** shows an Attendance strip for today.
A difference raises no exception - presence covers non-project work. The strip writes no
time entry itself, and clocking out never creates, overwrites, or approves project time.

## Worked example

Northlake runs both modules. Bartek clocks 8h 15m today and logs 6h 30m against projects,
so his strip reads:

> **1h 45m not allocated**
>
> 8h 15m attendance recorded · 6h 30m described by project time. These records stay
> independent.

**Allocate remaining** opens the log-time modal with 1h 45m pre-filled; nothing is written
until he saves.

## Scope

Attendance stores worked, break and expected minutes per shift. Pay, overtime entitlement
and regulatory compliance sit outside its scope. Break mode is **manual** or **none** - an
employee starts and ends their own break. The web clock records punches; with the Kiosk
module on, so does a shared tablet reading a card (NFC) or a rotating QR badge.

> [!AGENT]
> Show my attendance for the last two weeks, with worked, break and expected time for each day.

## Related

- [Using the clock](/docs/attendance/clock/) - the day-to-day employee flow.
- [Attendance review](/docs/attendance/review/) - the manager queue and corrections.
- [Kiosk](/docs/attendance/kiosk/) - clocking in from a shared tablet.
