Attendance status codes reference
Every attendance status code in AttendFirst (Present, Late, Half day, Absent, On leave, Holiday, Weekend) and the exact rule for how each is assigned.
Updated 2026-04-22
Every day in the AttendFirst attendance management system resolves to exactly one status. The status drives reports, payroll exports, the leave calendar, and the monthly dashboard chart. Here are all seven attendance status codes and the precise rules that decide which one applies.
Status codes
| Status | CSV code | Color | When it applies |
|---|---|---|---|
| Present | present | Green | First check-in within the shift’s late grace window and total work time at or above the half-day threshold. |
| Late | late | Amber | First check-in is after shift start plus the late threshold, but total work time still at or above the half-day threshold. |
| Half day | half_day | Amber | Total work time across all sessions is below the half-day threshold. |
| Absent | absent | Red | Zero check-ins on a working day with no approved leave. |
| On leave | on_leave | Blue | Day falls inside an approved leave request. |
| Holiday | holiday | Blue | Date is on the company holiday list. |
| Weekend | weekend | Gray | Day of week is disabled in the company work schedule. |
Evaluation order
Given a date for an employee, AttendFirst evaluates rules top-to-bottom and stops at the first match:
- If an approved leave covers the date → On leave.
- Else if a company holiday covers the date → Holiday.
- Else if the day of week is disabled in the work schedule → Weekend.
- Else if there are zero sessions for the date → Absent.
- Else if total work time is below the half-day threshold → Half day.
- Else if the first session started after shift start plus the late threshold → Late.
- Else → Present.
Manual attendance entries set the status directly, skipping this evaluation.
Session types vs status
Session types (Work, Lunch Break, Site Visit, etc.) are separate from status. Sessions marked as break types contribute to break time instead of work time. A day where someone checks in at 09:00, takes a 1-hour lunch break, and checks out at 18:00 is:
- Total elapsed time: 9 hours
- Break minutes: 60
- Work minutes: 480
- Status: Present
Status transitions
Some statuses can change. Here’s what triggers a re-computation:
| Change | New status |
|---|---|
| Admin approves a leave for a day marked Absent | On leave |
| Admin cancels an approved leave | Recomputed from rules (usually Absent) |
| Admin adds a manual entry with a specific status | That status, marked as admin-edited |
| Admin adds a holiday for a past date | Past records are not recomputed |
The general principle: future and current-day statuses are dynamic; past statuses stick unless an admin explicitly edits them.
Frequently asked questions
Can a day be both Late and Half day?
No. They are mutually exclusive. Half day is evaluated before Late in the resolution order, so if total work minutes fall below the half-day threshold, the day is Half day regardless of when the employee arrived.
What status does an optional holiday show?
If the employee applies for leave on an optional holiday and it’s approved → On leave. If they don’t apply and don’t work → Holiday. If they work anyway → Present (optional holidays don’t block check-in).
Why is a day marked Absent when the employee was on an approved leave?
Check the leave request’s date range. On-leave records are created only for working days inside the range. Holidays and weekends inside the range stay as Holiday or Weekend. Also check the leave state: a Rejected or Cancelled request does not produce on-leave records.
The dashboard shows “Weekend” for a Saturday but we worked. Why isn’t it Present?
Saturday is disabled in your work schedule. Either enable it (see Working hours and shifts) or add a manual Present entry for that specific date (see Manual attendance).
Related docs
- Working hours and shifts. The shift settings that drive Late and Half day thresholds.
- Leave requests. How On leave status is produced.
- Holidays. How Holiday status is produced.
- Manual attendance. The admin override that skips the evaluation order.
Frequently asked questions
Can an AttendFirst day be both Late and Half day?
No. They are mutually exclusive. Half day is evaluated before Late, so if total work minutes fall below the half-day threshold, the day is Half day regardless of when the employee arrived.
What status does an AttendFirst optional holiday show?
If the employee applies for leave and it is approved → On leave. If they do not apply and do not work → Holiday. If they work → Present. Optional holidays do not block check-in.
Why is a day marked Absent when my employee was on approved leave?
Check the leave request date range. On-leave records are created only for working days inside the range. Holidays and weekends inside the range stay as Holiday or Weekend. Also verify the leave was Approved, not Rejected or Cancelled.
Why does AttendFirst show Weekend when we worked that Saturday?
Saturday is disabled in your work schedule. Either enable it in Settings → Work Schedule, or add a manual Present entry for that specific date.
How many attendance statuses does AttendFirst have?
Seven: Present, Late, Half day, Absent, On leave, Holiday, Weekend. Every day for every employee resolves to exactly one.