Offline attendance
No signal is not an excuse. It is also not a problem.
Staff check in and out with no connection at all. The punch, the GPS fix and the selfie sit on the phone and upload themselves later, stamped with the time they actually happened.
Sound familiar?
- The site is a basement, a lift shaft, or a village with one bar of 2G
- Your app shows a spinner and the worker gives up and walks in
- Punches that do sync land at the wrong time, whenever the phone found signal
- You end the month re-entering half a roster by hand from a WhatsApp thread
- Somebody worked out that turning aeroplane mode on lets them punch in from home
How offline attendance actually works
The punch completes offline
No spinner, no retry screen. The employee taps check in, sees it confirmed, and gets on with their day. Whether the network was there is our problem, not theirs.
Stamped when it happened
Each queued punch carries its own capture time and keeps it. Sync at 6 pm, recorded at 8:02 am. Payroll reads the hours worked, not the hours uploaded.
Clock-spoof protected
The time does not come from the phone clock, so changing it does nothing. We anchor to the server clock and count forward on a monotonic timer the user cannot move.
Survives a dead battery
The queue is stored on the device, not held in memory. Force-close the app, restart the phone, run the battery flat. The punch is still there on next launch.
Never double-counted
Every punch carries a unique id and the database refuses a second copy of it. A flaky connection retrying nine times still produces exactly one attendance record.
Nothing disappears quietly
A punch that cannot sync is flagged to the employee and the owner, not deleted. If it never lands, at least somebody knows to enter that day by hand.
Why the timestamp is the hard part
Storing a punch offline is easy. Almost any app can drop a row in local storage and post it later. The part that decides whether you can pay people from the result is which time gets written down.
The obvious answer, read the phone clock, is the wrong one. A phone clock is set by whoever is holding the phone. If the recorded time is whatever the device says, then aeroplane mode plus a clock change is a check-in from bed at any hour you like, and the more remote your sites are the more attractive that becomes.
So Shiftelio does not read the wall clock. It remembers the last moment it heard the real time from our servers and adds elapsed time measured by a counter that only moves forward and ignores anything the user does to the clock. Fully offline, for as long as the app stays running, the capture time is honest by construction.
That covers the common case. The awkward case is a phone that was force-closed and cold-started with no chance to re-check the server time. There we fall back to the device clock corrected by the last known difference, mark the punch as having come from the weaker source, and let the server do the deciding. On arrival it compares the claimed time against the last moment that device was genuinely online. A punch claiming to predate that is not accepted at face value; it is clamped and flagged for you to look at.
None of this asks the employee to do anything differently. They tap a button in a basement and it works. The point of the machinery is that the number it produces is one you can put in a payslip.
Questions owners ask about offline mode
Can employees mark attendance without internet?
Yes. A check-in or check-out made with no connection is stored on the phone itself and uploaded automatically the moment any signal returns. The employee sees the punch confirmed straight away, exactly as they would online, and does not have to remember to do anything later.
Which time is recorded, the time they punched or the time it synced?
The time they punched. A queued punch carries its own capture time, and that is the time written to the record when it syncs. A worker who checks in at 8:02 am in a basement with no signal is recorded at 8:02 am, even if the phone only reaches the network at 6 pm.
What stops someone changing their phone clock to fake an offline check-in?
The capture time does not come from the phone clock. Shiftelio anchors to the last time it heard the server clock and counts forward using a monotonic timer, which ignores any change the user makes to the wall clock. The server then independently checks the result against the last time that device was known to be online and flags anything that does not add up.
What happens if the phone is switched off before the punch syncs?
Nothing is lost. The queue lives in the phone browser database, not in memory, so it survives the app being killed, the phone restarting, and the battery dying. It resumes on next launch.
Could a punch sync twice and create a duplicate day?
No. Every queued punch carries a unique request id and the database enforces uniqueness on it, so replaying the same punch can never produce two records. This matters more than it sounds: a retry loop on a flaky connection would otherwise double somebody payroll.
What if a punch never syncs at all?
It is never silently deleted. After a week of failed attempts it is flagged rather than dropped, and shown to both the employee and the owner so the day can be entered by hand. A day someone actually worked must not disappear because their phone had no signal.
Does offline mode work with GPS and selfie verification?
Yes. Coordinates and the selfie are captured and stored with the punch while offline, and upload with it. Verification is not skipped just because the network was.
Is offline mode a paid add-on?
No. It is included in every Shiftelio plan, starting at 999 rupees a year. Offline attendance is not a feature we would sell separately, because in most of the places our customers work it is not optional.
Included from 999 rupees a year. Offline is not an add-on.
All platform features ·Multi-site attendance ·Workers without a smartphone ·Plans and pricing
Get started free