Chapter 41 — GPS attendance
Not everyone walks past a terminal. Site staff, venue crews, people at a client's premises and anyone on a second office with no device need a way to say "I am here" that the company can trust. Operentra lets an assigned employee clock in and out from the portal when their phone is physically inside a fence around a company site, and keeps a record of every attempt, accepted or refused, so a "it would not let me" has an answer. This chapter is the sites, the people, the card and the log.
This chapter needs the Geo attendance plan feature (Enterprise); on other plans the menu entries are locked.
What this chapter covers
- 41.1 Attendance locations and radius
- 41.2 Assigning employees to locations
- 41.3 The employee's clock-in card
- 41.4 GPS attempts and every rejection reason
The concept
A GPS punch is a claim made by a device the company does not control, so the design question is where the trust sits. Operentra puts it on the server: the browser reports a position and how accurate it thinks it is, and the workspace decides whether that position is close enough to a site the employee is allowed to use. Three things follow. A fence is only as good as its radius, so each site carries its own. An accuracy limit keeps out the vague fixes a phone produces indoors or from wifi, which could place someone inside a fence they are nowhere near. And every attempt is kept, because the refused ones are the ones that get disputed.
How Operentra handles it
- Attendance Settings › Geo Attendance holds the master switch and the accuracy limit (Chapter 36).
- Attendance › Geo Locations defines the sites: name, coordinates, radius from 10 metres to 10 kilometres, an optional branch, Active or Inactive. Assignments on each site name the employees who may punch there; nobody else can.
- The portal card on My Attendance shows an assigned employee a Clock In or Clock Out button that knows which comes next, and today's times.
- A punch is checked in order: the switch, the assignment, the accuracy, the distance to the nearest assigned site, the shift, the day's state. The first failure is the reason recorded.
- Accepted punches are ordinary attendance with source GPS: graded by the shift and the rules like any terminal punch, never overwriting a regularized or Forced day.
- Attendance › Geo Punch Attempts lists every attempt with its outcome, reason, nearest site, distance, accuracy and coordinates.
- Who:
attendance.geo_manage(HR Manager) for sites and assignments;attendance.view_allfor the attempts; employees punch with their own login.
Walkthrough
Northwind has two sites defined and most of the company assigned to the first, but its Geo Attendance switch is off and nothing has ever been attempted, so the card is hidden in every portal. The walkthrough turns it on for one person.
41.1 Attendance locations and radius
Attendance › Geo Locations lists each site with its coordinates, radius, branch, status and how many employees are assigned, with View on map opening the point in Google Maps and Manage assignments beside it. Add Location asks for:

| Field | Notes |
|---|---|
| Name | "Head Office, Warehouse, Expo Venue" is the placeholder |
| Latitude, Longitude | Typed or pasted from a map, or filled by Use my current location from the device you are standing at the site with |
| Radius (m) | How far from the point still counts: 10 metres to 10 kilometres. The hint says it: a bigger radius for large venues. A small office might take 100, a yard or a venue more |
| Branch | Optional link for reporting |
| Status | Active, or Inactive to pause a site without losing its history |
Deleting a site removes it and its assignments; past attempts keep their history. Make a site at your own position with Use my current location and a radius of 100 before the next sections.
41.2 Assigning employees to locations
A site lets nobody punch until people are assigned to it. Manage assignments opens a dialog with a search by name or code and a checkbox per employee; the hint says only the selected employees can clock in and out at this site. Saving replaces the whole list, so unticking someone removes their access, and the toast counts what was saved. An employee can be on several sites and punches at whichever is nearest and within range.
Assign one test employee on a Punch Required shift (Chapter 35) to your new site; an Auto-Present shift would mark them present anyway, and a Punch Not Required shift refuses every punch.
41.3 The employee's clock-in card
With the switch on and an assignment, My Attendance (Chapter 85) gains a Location Clock-In card above the month: today's In and Out times when they exist ("No punch recorded for today yet" otherwise), and one button, Clock In or Clock Out, whichever is next. The card is hidden entirely while the company switch is off and for anyone on an exempt shift; an assigned employee whose assignment was removed sees "You are not assigned to any attendance location"; after the day is closed it says no punch is available today.
Pressing the button asks the browser for the location ("Getting your location…"), which needs HTTPS and the user's permission the first time; the card explains the three ways that fails (permission denied, position unavailable, timeout) and what to do. Then it sends the coordinates and the reported accuracy, and the server answers at once: "Recording…" then the new time, or the refusal with its reason, which for an out-of-range punch names the site and the distance. Because the button knows the next punch, nobody can clock in twice; a second In is refused as already recorded.
41.4 GPS attempts and every rejection reason
Attendance › Geo Punch Attempts keeps every attempt, filtered by date (the last seven days by default), employee and outcome: time, employee, In or Out, Accepted or Rejected, the reason, the nearest site, the distance from it, the GPS accuracy reported, and the coordinates. The reasons, in the order the server checks them:
| Reason | What happened |
|---|---|
| Geo attendance disabled | The company switch is off |
| Not assigned to any site | The employee is on no site's list |
| GPS accuracy too low | The phone's reported accuracy was worse than the limit in settings |
| Outside site radius | The nearest assigned site was farther than its radius; the message tells the employee the site and the distance |
| Punch-exempt shift | The employee's shift that day is Punch Not Required |
| Day finalized by HR | The day was regularized or Forced, so a punch cannot change it |
| Checkout window closed | An Out punch came after the shift's end plus the checkout grace; a regularization is the route |
| Already recorded | The day already had the punch, for example a second In |
An accepted attempt becomes a punch on the day with source GPS and the device's address in the log (Chapter 39); the day is graded with the shift's grace and the company's thresholds exactly as a terminal punch would be (Chapter 34). A refused attempt changes nothing and stays on this page, which is what to open when someone says it would not let them clock in.
What happens next
- The day appears in Daily Attendance with GPS as its source (Chapter 37); payroll reads it as any other day.
- The capture card on Attendance Settings reads Set up and ready for GPS once the switch is on, a site exists and someone is assigned (Chapter 36).
- Field visits (Chapter 42) use the same positioning for client check-ins and are a separate module with their own settings.
What the employee sees
The Location Clock-In card and its button when they are assigned, the browser's location prompt, and the accepted time or the refusal with its reason. They do not see the attempts page; their month shows the accepted punches as GPS days.
Common mistakes
- Switching GPS on and assigning nobody. The card never appears; the capture card says what is missing.
- A radius that fits the building and not the car park. Staff punch from where they stop; measure the fence from there.
- Raising the accuracy limit to stop refusals. A 500-metre accuracy accepts a fix from across the district; have the person step outside instead.
- Testing on HTTP. The browser will not share a location without HTTPS; the card says so.
- Expecting a punch to fix a regularized day. It is refused as finalized by design.
- Assigning someone on an Auto-Present shift. They are present anyway; the punch only matters on Punch Required.
- Reading an Out refused as checkout-window-closed as a lost day. The In stands; the Out is a regularization.
- Deleting a site to pause it. Set it Inactive; deletion drops the assignments.
Practice
Use your own trial workspace, not a customer's, and a phone.
- Switch on Geo Attendance in Attendance Settings and read the capture card's GPS row before and after.
- Add a site at your position with Use my current location and a 100-metre radius; open View on map.
- Assign one employee on a Punch Required shift; sign in as them on the phone, read the card, Clock In, then try Clock In again by reloading.
- Walk out of the radius and Clock Out; read the refusal, then read it again on Geo Punch Attempts with the distance.
- Lower the accuracy limit to 5 metres indoors and try once more; read the reason, then restore the limit.
Quiz
1. Where is a GPS punch judged, and against what?
On the server: the reported position and accuracy against the accuracy limit and the radius of the nearest site the employee is assigned to.
2. What is needed before an employee sees the clock-in card?
The company switch on, an assignment to at least one site, and a shift that is not Punch Not Required; the plan must include the feature.
3. In what order are the rejection reasons checked?
Switch, assignment, accuracy, distance, exempt shift, finalized day, checkout window, already recorded. The first failure is the reason kept.
4. What does an accepted punch become?
An ordinary punch on the day with source GPS, graded by the shift and the rules like a terminal punch, never overwriting a regularized or Forced day.
5. What does the attempts page hold that the day does not?
Every refused attempt with its reason, plus for every attempt the nearest site, the distance, the reported accuracy and the coordinates.