Skip to Content
Odoo Menu
  • Sign in
  • Try it free
  • Apps
    Finance
    • Accounting
    • Invoicing
    • Expenses
    • Spreadsheet (BI)
    • Documents
    • Sign
    Sales
    • CRM
    • Sales
    • POS Shop
    • POS Restaurant
    • Subscriptions
    • Rental
    Websites
    • Website Builder
    • eCommerce
    • Blog
    • Forum
    • Live Chat
    • eLearning
    Supply Chain
    • Inventory
    • Manufacturing
    • PLM
    • Purchase
    • Maintenance
    • Quality
    Human Resources
    • Employees
    • Recruitment
    • Time Off
    • Appraisals
    • Referrals
    • Fleet
    Marketing
    • Social Marketing
    • Email Marketing
    • SMS Marketing
    • Events
    • Marketing Automation
    • Surveys
    Services
    • Project
    • Timesheets
    • Field Service
    • Helpdesk
    • Planning
    • Appointments
    Productivity
    • Discuss
    • Approvals
    • IoT
    • VoIP
    • Knowledge
    • WhatsApp
    Third party apps Odoo Studio Odoo Cloud Platform
  • Industries
    Retail
    • Book Store
    • Clothing Store
    • Furniture Store
    • Grocery Store
    • Hardware Store
    • Toy Store
    Food & Hospitality
    • Bar and Pub
    • Restaurant
    • Fast Food
    • Guest House
    • Beverage Distributor
    • Hotel
    Real Estate
    • Real Estate Agency
    • Architecture Firm
    • Construction
    • Property Management
    • Gardening
    • Property Owner Association
    Consulting
    • Accounting Firm
    • Odoo Partner
    • Marketing Agency
    • Law firm
    • Talent Acquisition
    • Audit & Certification
    Manufacturing
    • Textile
    • Metal
    • Furnitures
    • Food
    • Brewery
    • Corporate Gifts
    Health & Fitness
    • Sports Club
    • Eyewear Store
    • Fitness Center
    • Wellness Practitioners
    • Pharmacy
    • Hair Salon
    Trades
    • Handyman
    • IT Hardware & Support
    • Solar Energy Systems
    • Shoe Maker
    • Cleaning Services
    • HVAC Services
    Others
    • Nonprofit Organization
    • Environmental Agency
    • Billboard Rental
    • Photography
    • Bike Leasing
    • Software Reseller
    Browse all Industries
  • Community
    Learn
    • Tutorials
    • Documentation
    • Certifications
    • Training
    • Blog
    • Podcast
    Empower Education
    • Education Program
    • Scale Up! Business Game
    • Visit Odoo
    Get the Software
    • Download
    • Compare Editions
    • Releases
    Collaborate
    • Github
    • Forum
    • Events
    • Translations
    • Become a Partner
    • Services for Partners
    • Register your Accounting Firm
    Get Services
    • Find a Partner
    • Find an Accountant
      • Get a Tailored Demo
    • Implementation Services
    • Customer References
    • Support
    • Upgrades
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +32 2 290 34 90
    • Get a Tailored Demo
  • Pricing
  • Help
  1. APPS
  2. Attendances
  3. Face Kiosk Attendance v 16.0
  4. Sales Conditions FAQ

Face Kiosk Attendance

by ERP Heritage https://www.erpheritage.com.au/
Odoo
v 16.0 Third Party 75
Download for v 16.0 Deploy on Odoo.sh
Apps purchases are linked to your Odoo account, please sign in or sign up first.
Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies • Attendances (hr_attendance)
• Discuss (mail)
• Employees (hr)
Community Apps Dependencies Show
• Attendance Suite Base
• EH HR Platform Core
• EH HR Compatibility
Lines of code 4006
Technical Name eh_hr_face_kiosk
LicenseLGPL-3
Websitehttps://www.erpheritage.com.au/
Versions 16.0 17.0 18.0 19.0
You bought this module and need support? Click here!
Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies • Attendances (hr_attendance)
• Discuss (mail)
• Employees (hr)
Community Apps Dependencies Show
• Attendance Suite Base
• EH HR Platform Core
• EH HR Compatibility
Lines of code 4006
Technical Name eh_hr_face_kiosk
LicenseLGPL-3
Websitehttps://www.erpheritage.com.au/
Versions 16.0 17.0 18.0 19.0
ERP Heritage · HR Platform
Face-match attendance kiosk for Odoo 16

Face Kiosk Attendance

Turn any tablet into a self-hosted face clock-in kiosk that lives entirely inside your Odoo 16 database.

Free · LGPL-3Odoo 16 CommunitySelf-hostedv1.0.0
In-browser 128-dim embedding
Embedding-only transport
Server-side cosine match
Per-company template scope
Consent withdrawal cascade

Why this module

Face Kiosk Attendance

Privacy by design

Raw images never hit the server

The device computes the 128-dimension embedding locally and sends only that float array. Templates require a granted face consent record, and withdrawing consent deactivates every template in the same transaction with an audit log entry.

Self-hosted

No subscription, no cloud round-trip

The whole flow lives inside your Odoo 16 database. Any modern browser on the local network becomes a kiosk through a public shell page at /eh_hr/kiosk/<site_code>, paired by a device token, with no app to install.

Honest scope

Convenience, not anti-spoofing

This identifies an enrolled face to make clocking in fast. It is not a liveness or anti-spoofing control: a printed photo or a screen can match, and a modified client can submit any embedding. We say so plainly so you deploy it for the right job.

Day in the life

Morning shift change at a warehouse site

Staff walk up to a wall-mounted tablet showing the kiosk shell. Each person looks at the camera, the browser builds an embedding locally and posts it with the device token. The server cosine-matches against active templates for that company, sees no open attendance for the matched employee, and writes a check-in. If a per-site geofence is enabled, an off-site browser is rejected before any match runs. A low-confidence near-miss raises an attendance exception for a manager to review rather than silently clocking the wrong person. Every attempt, pass, and post lands in the kiosk audit log.

Edge cases

The cases most modules quietly ignore.

In the shipped code today, each one a place where a cheaper module silently does the wrong thing.

Consent withdrawal

Withdrawing a face consent deactivates every active template tied to it in the same transaction and writes a cascade entry to the audit log, so a later compliance review can prove what was deactivated and when.

Retention expiry

A retention-sweep cron extends to face data: when a consent record expires, its active templates are deactivated in the same sweep, keeping stale biometrics out of the match pool.

Stolen device token

The match endpoint is DB-backed rate-limited per token (or per client IP), so a leaked kiosk token cannot hammer the endpoint. Requests without a valid active device token return 401.

Cross-company match

Templates are scoped by the device company. The match search filters on company_id, so a face enrolled in one company can never match at another company's kiosk.

Low-confidence near-miss

When the best match sits above the configured distance threshold, no attendance is posted; instead a low-confidence identity attendance exception is raised for review, and the miss is logged.

Consent integrity

A template cannot be created or reactivated unless its consent record is type face, belongs to the same employee, and is in granted state. The embedding is validated as a numeric JSON array of the declared dimension.

Geofence with no fix

If a site enforces a geofence and the client sends no usable coordinates, the match is refused with a geofence_required reason and the failure is logged rather than falling through to a match.

What is inside

Built to do the job, end to end.

  • eh.hr.face.template model. Stores the JSON embedding, declared dimension, model identity and version, capture method, quality score, company, and a required link to a granted face consent record. Validations enforce numeric arrays and consent type and employee match.
  • Match and shell controllers. A public POST endpoint at /eh_hr/kiosk/face/match authenticated by an X-EH-Kiosk-Token header, plus a public kiosk shell page at /eh_hr/kiosk/<site_code> that serves face-api.js and the kiosk assets with an mtime-based cache-busting version stamp.
  • HR-admin enrolment wizard. An OWL-driven multi-sample capture wizard that grants or reuses a face consent, requires an explicit consent acknowledgement, and stores three to five samples per employee as individual templates for varied lighting and angles.
  • Employee integration. hr.employee gains a computed face-enrolled flag driven by active template existence, an active-template count, and actions to open enrolment or review templates per employee from the employee form.

Honest about the edges

What this does not do, so nothing surprises you.

  • Not an anti-spoofing or liveness control: a printed photo or a screen showing an enrolled face can match, and a modified client can submit any embedding. Use it for convenience, not to prove who physically attended.
  • face-api.js is not bundled. The model files are sizable and operators may want a specific release, so you run the one-time setup in static/lib/face-api before the kiosk works.
  • Match accuracy depends on the device camera, lighting, and enrolment quality. Three to five samples in varied conditions are recommended for reliable matching.
  • The match runs a linear cosine scan over active templates per company. This is fine for dozens to low hundreds of employees per site; very large populations (roughly 2k+ templates) would want a vector index.
  • Requires the eh_hr_attendance_base and eh_hr_core suite modules and Odoo's hr_attendance. It is part of an attendance suite, not a standalone drop-in.
  • The kiosk shell is a public page secured by a device token from the pairing flow, not by an Odoo login. Treat device tokens as credentials.
Search

face recognition attendance odoo 16, biometric clock in odoo, kiosk attendance odoo, face api js odoo, contactless attendance, no badge attendance, self hosted face kiosk, employee time clock odoo 16, tablet attendance kiosk, consent gated biometric attendance, geofenced clock in, hr attendance face match

ERP Heritage

Production-grade Odoo accounting, built to an engineering bar and documented honestly. Support: info@erpheritage.com.au
Developed by Odoo Customisation Services

v1.0.0 · LGPL-3 · Odoo 16 Community

Please log in to comment on this module

  • The author can leave a single reply to each comment.
  • This section is meant to ask simple questions or leave a rating. Every report of a problem experienced while using the module should be addressed to the author directly (refer to the following point).
  • If you want to start a discussion with the author, please use the developer contact information. They can usually be found in the description.
Community
  • Tutorials
  • Documentation
  • Forum
Open Source
  • Download
  • Github
  • Runbot
  • Translations
Services
  • Odoo.sh Hosting
  • Support
  • Upgrade
  • Custom Developments
  • Education
  • Find an Accountant
  • Find a Partner
  • Become a Partner
About us
  • Our company
  • Brand Assets
  • Contact us
  • Jobs
  • Events
  • Podcast
  • Blog
  • Customers
  • Legal • Privacy
  • Security

Odoo is a suite of open source business apps that cover all your company needs: CRM, eCommerce, accounting, inventory, point of sale, project management, etc.

Odoo's unique value proposition is to be at the same time very easy to use and fully integrated.

Website made with