If you build software that tracks employee GPS — even just at clock-in and clock-out — you have a legal problem most companies ignore.
The Problem
Under GDPR Article 13, every employee must sign a privacy notice before you collect their location data. In Germany, the Works Council (Betriebsrat) has co-determination rights under BetrVG §87. In France, the CNIL requires proportionality documentation. In Italy, you need a union agreement or Labour Inspectorate authorization under Article 4 of the Workers' Statute.
Most GPS time-tracking apps handle none of this. They give you the app, you install it on your team's phones, and the legal risk stays with you — the employer.
What We Built
We're GeoTapp, a field service management platform. When we added GPS clock-in to our TimeTracker app, we realized we couldn't just ship the feature and leave compliance to the customer. So we built it into the product:
When an admin invites an employee, the system automatically generates a personalized GPS privacy notice — with the company's name, address, and DPO contact.
The employee receives a link, opens it on any device, reads the full GDPR-compliant notice, and signs with one click. Digital signature with timestamp and IP.
GPS access is blocked until the notice is signed. The employee can install the app and set up their account, but they literally cannot clock in until the privacy consent is on file.
The signed PDF is archived automatically. The admin sees a green badge (signed) or amber badge (pending) next to each employee in the dashboard.
The notice adapts to the employee's language and local regulation. Italian workers see references to the Statuto dei Lavoratori. German workers see BDSG and BetrVG. French workers see CNIL guidelines. English workers see ICO guidance.
Why No One Else Does This
We looked at every major competitor — Connecteam, Clockify, Hubstaff, Jibble, Deputy, BuddyPunch. None of them generate the privacy notice. None of them block GPS access until it's signed. None of them archive the signed document.
They all have some variation of "it is the employer's responsibility to obtain consent" buried in their documentation.
The reason is simple: it's hard to implement correctly across multiple jurisdictions, and most product teams don't have someone who understands both employment law and software architecture. It's easier to punt it to the customer.
The Technical Implementation
For anyone building something similar, here's the high-level architecture:
-
Public consent page at
/privacy-consent?token=ABC123— no auth required, accessible from any device -
Firestore document in
companies/{id}/privacy_consents/{id}stores the signed consent with timestamp, IP, user agent, document version and language -
PDF generation server-side using the
pdfpackage, uploaded to Firebase Storage -
Invite document updated with
privacyConsentSigned: true— this is what the app checks before enabling GPS - Feature gate in the employee edit screen prevents admins from manually enabling tracker access if consent is missing
The consent texts are stored as structured data (not free-form strings) so they can be versioned and audited. If the privacy notice text changes, a new version is created and employees can be asked to re-sign.
The Business Case
This isn't just a compliance checkbox. It's a sales argument.
When a potential customer asks "what about GDPR?" — and in Europe, they always ask — most competitors say "that's your responsibility." We say "it's already handled. Your employees can't use GPS until they've signed. Here's the PDF."
That conversation closes deals.
Try It
If you're running a field service business and want to see how this works in practice:
- GeoTapp Flow — the management platform
- GeoTapp TimeTracker — the mobile app for field workers
- Free 14-day trial — no credit card required
We also published a ready-made GPS privacy notice template you can download as PDF — even if you don't use GeoTapp.
Built by a team that got tired of seeing field service companies get fined for a problem their software should have solved.



Top comments (0)