This is the day-to-day heart of Punchwell. Staff clock in when they start and clock out when they finish; the system records the punch and works out the hours. Around that simple loop you can layer shift policies, rounding, grace periods, and automatic clean-up for forgotten punches — and at the end of the period the hours flow straight into your payroll export.
This page covers how punching works, every attendance rule you can configure, how managers fix a bad record, and how hours reach payroll. For the office-IP clock-in lock and GPS geofence, see Office-IP clock-in lock and GPS geofence.
Before anyone can clock in
Punch-in has three prerequisites, and they must be true in this order. This is by design, not a bug — each step depends on the one before it:
- The person has an employee role. Employees are WordPress users with the
hrm_employee(orhrm_manager) role. Adding someone under Punchwell → Employee creates their login. - They’re assigned to a department. Set this on the employee’s profile.
- Their department has a shift policy. A shift policy is the working-hours rulebook attendance is measured against.
If any step is missing, the punch is refused with a message like “You do not have an assigned department” or “You have not been assigned an attendance time-shift policy.” Work top to bottom and the clock turns on.
First-time setup, in order: create a Department → create a Shift policy and attach it to that department → add employees into that department. See Getting started for the full walkthrough.
Punching in and out
Once the prerequisites are met, employees clock in and out from whichever surface you’ve given them:
- In wp-admin — the Punchwell → Attendance screen shows a Punch In / Punch Out control.
- On a public page — with the front-end add-on, drop the
[hrm_clock]card on any page, or the full app via[hrm_attendance]. Staff never see the WordPress back-room. - On a phone — the mobile/PWA punch screen (
[hrm_gps_punch]), installable as an add-to-home-screen app over HTTPS. - On a shared tablet — the kiosk clock (
[hrm_kiosk]), where staff clock in with a short code plus a 6-digit PIN, no individual logins on the device.
How a punch works:
- Employee clicks Punch In. Punchwell records the timestamp and opens an attendance record for the day.
- Any enabled protections run first — the office-IP lock, GPS geofence, and clock-in time window are all checked. In Block mode an off-site or out-of-window punch is refused server-side; in Warn or Flag mode it’s allowed and noted.
- When the shift ends, the employee clicks Punch Out. Punchwell closes the record and computes worked time for that span.
Every protection applies identically no matter which surface the punch comes from — [hrm_clock], the kiosk, and the mobile screen all post to the same underlying punch action, so the rules can’t be sidestepped by switching screens.
Clock-out is never blocked. Location and time-window checks only ever gate the punch-in. An open punch can always be closed, so no one is ever stranded clocked-in because they walked off the network or out of the geofence.
Shift policies — the rulebook
A shift policy defines the expected working hours (start time and work hours) and is attached to a department. Attendance is then measured against it — present, late, absent, on leave, holiday, and overtime are all relative to the shift.
Key facts:
- A department has one active shift policy at a time.
- Shift policies are soft-deleted (set inactive) rather than erased, so historical attendance stays intact and accurate.
- The shift is what the attendance report compares each punch against to decide if someone was on time or late.
Manage shift policies under Punchwell → Attendance (add a time-shift policy, set the start time and work hours, attach it to the department) or via the relevant Punchwell → Structure screens for departments.
Attendance rules you can tune
All of the rules below live in Punchwell → Settings → Attendance. They all default to no-op — an existing site behaves exactly as before until you explicitly turn one on. Turn them on deliberately, one at a time, and verify on a test punch.
Rounding
Round each punch to a tidy boundary — for example, the nearest 15 minutes — so timesheets read cleanly and overtime math is predictable. A punch at 9:07 with 15-minute rounding records as 9:00 or 9:15 depending on your configured rule.
Grace periods
A grace window forgives small slips against the shift — for example, treating a punch a few minutes after the scheduled start as on time rather than late. Set the grace so honest, minor lateness doesn’t churn through your reports.
Debounce
Debounce ignores accidental double-taps on the punch button within a short window, so a nervous double-click doesn’t create a duplicate or instantly-closed record.
Auto clock-out (forgotten punches)
People forget to punch out. Auto clock-out closes a record that was left open, optionally enforcing a maximum-shift cap so a forgotten punch doesn’t accrue 18 hours overnight. When a shift is capped, Punchwell stores a consistent punch-out time so the record stays sane.
Heads-up: the maximum-shift cap defaults to 0 (off). Leave it at 0 unless you want a hard ceiling — a non-zero cap silently trims every punch-out longer than that many hours, which is rarely what you want unless you’ve decided on it.
Overnight / cross-midnight shifts
For shifts that cross midnight, enable the overnight option. Worked duration is derived automatically from the begin/end span, so a punch in at 10:00 PM and out at 6:00 AM records 8 hours rather than a negative or zero result.
Require an edit reason
Optionally require a reason whenever a punch is manually edited, so corrections leave an audit trail.
Fixing a bad record (manual punch edits)
The base plugin lets staff punch but does not, on its own, let a manager correct a punch. That’s the job of the Attendance Report add-on (hrm-attendance-report). See Attendance reports for the full add-on guide.
What it adds:
- Day-by-day reports — pull up any one employee’s punch history for a date range.
- Manual punch edits — when the clock and reality disagree (someone forgot to punch, or punched at the wrong time), edit or add a punch by hand. The system recalculates the hours after your change.
Who can do what:
- HR and managers (the
manage_attendancepermission) read everyone’s reports and fix records. - Employees can view their own history, read-only — they can never see others’ records or edit hours.
If you enabled Require an edit reason under Settings → Attendance, the edit screen will ask for one.
How hours flow to payroll export
At the end of a pay period the recorded hours feed the Payroll Export add-on (hrm-payroll-export). Nothing is re-entered by hand:
- Punchwell sums each employee’s worked time from the attendance records over your chosen date range.
- The Payout Report computes each person’s pay for their current pay period — weekly and daily overtime, double-time, and holiday pay where enabled — using their per-employee pay type (hourly or salary), rate, and frequency.
- You export a CSV (built-in Generic CSV, plus optional SurePayroll and Gusto connectors) to hand to your payroll provider.
So the attendance rules above are not cosmetic — rounding, grace, auto clock-out, and overnight handling all shape the hours that ultimately appear on the payout report and in the export. Clean punch data in means clean pay data out.
Punchwell exports payroll data — it does not move money. No direct deposit, no tax filing, no payment processing. You take the payroll-ready CSV to your payroll service. That’s deliberate: it keeps payment-processor and tax-custody risk out of your WordPress site. See Payroll export.
Troubleshooting
- “Can’t clock in” — check, in order: the person has the Employee/Manager role → is in a department → that department has an active shift policy.
- Punch refused even on-site — a location protection is in Block mode. Confirm the office IPs or geofence, and remember the office IP must be your public address, not a
192.168.x.xone. - Hours look short on every long shift — check the maximum-shift cap under Settings → Attendance; if it’s set above 0, it’s trimming punch-outs.
- Overnight shift shows zero or wrong hours — enable the overnight / cross-midnight option in Settings → Attendance.
- A forgot-to-punch-out record ran all night — that’s what auto clock-out is for; enable it (and optionally a sensible cap).
FAQ
Do rounding and grace periods change anything if I leave them at their defaults?
No. Every attendance setting defaults to no-op, so an existing site behaves exactly as it did before until you turn a rule on. Upgrading never silently changes how hours are calculated.
Can an employee edit their own punches?
No. Employees can view their own attendance read-only. Only HR and managers with the manage_attendance permission can edit or add a punch (via the Attendance Report add-on).
What happens if someone forgets to punch out?
If auto clock-out is enabled, Punchwell closes the open record for them, optionally capped at a maximum shift length. If it’s off, the record stays open until a manager corrects it on the report screen.
Will a location or time-window rule ever lock someone out from clocking out?
No. The office-IP lock, GPS geofence, and clock-in time window only gate the punch-in. An open punch can always be closed, so staff are never stuck clocked in.
Do overnight shifts need anything special?
Enable the overnight / cross-midnight option in Settings → Attendance. Worked time is then derived from the begin/end span, so a shift that crosses midnight totals correctly instead of returning zero.
How do attendance hours get to my payroll provider?
Punchwell sums worked time per employee for a date range, the Payout Report applies overtime/double-time/holiday and per-employee rates, and you export a CSV (Generic CSV, or the SurePayroll/Gusto connectors). Punchwell exports the data — it does not move money. See Payroll export.