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. Employees
  3. Visitor Management v 16.0
  4. Sales Conditions FAQ

Visitor Management

by ERP Heritage https://www.erpheritage.com.au/
Odoo
v 16.0 Third Party 36
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 • Discuss (mail)
• Employees (hr)
• Attendances (hr_attendance)
Community Apps Dependencies Show
• Attendance Suite Base
• EH HR Platform Core
• EH HR Compatibility
Lines of code 3587
Technical Name eh_hr_visitor
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 • Discuss (mail)
• Employees (hr)
• Attendances (hr_attendance)
Community Apps Dependencies Show
• Attendance Suite Base
• EH HR Platform Core
• EH HR Compatibility
Lines of code 3587
Technical Name eh_hr_visitor
LicenseLGPL-3
Websitehttps://www.erpheritage.com.au/
Versions 16.0 17.0 18.0 19.0
ERP Heritage · HR Platform
Front-desk visitor sign-in

Visitor Management

One reception tablet, two flows: the kiosk that runs attendance also signs visitors in, with NDA capture, host email, and an audit trail.

Free · LGPL-3Odoo 16 CommunityLGPL-3v1.0.0
Reuses the attendance kiosk tablet
Host email on arrival
NDA text snapshotted per visit
Optional consented photo
Per-company end-of-day auto sign-out

Why this module

Visitor Management

One device

No second tablet to buy

Visitor sign-in is served on /eh_hr/visitor/<site_code> from the same kiosk device, paired with the same token the attendance kiosk uses. One reception tablet runs both flows.

Provable consent

The NDA you showed is the NDA on file

The exact NDA prose and photo-consent text shown at the kiosk are copied onto each visitor record at sign-in time, so a later audit reads what the visitor actually accepted rather than today's setting.

Privacy by default

The kiosk never dumps your staff list

Host lookup is a throttled typeahead that needs two characters and returns at most ten names scoped to the device's company. The bootstrap call returns purposes and NDA text but never the employee directory.

Day in the life

A contractor and a courier arrive within the same minute

The courier taps Sign in, picks Delivery, types two letters of the host's name, selects them from the short list, and is in; the host gets an arrival email with the visit number. The contractor picks Contractor, which requires both NDA and photo: the site terms appear on screen, the contractor ticks accept, the consent line shows above the camera, they capture a photo, and sign in. Both records store the NDA and consent text exactly as displayed. At 6pm the hourly cron sees the contractor still on site, reads the company timezone, and auto-signs them out with a marker on the record. A year later the daily sweep deletes both rows, photo and NDA snapshot included, because retention lapsed.

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.

Per-company timezone

The auto sign-out cron evaluates each company independently against its own configured hour and its own partner timezone, so a 6pm cutoff fires at 6pm local for each company, not once globally in UTC.

Cron batch ceiling

Both crons cap work at batch_limit (500) per run and stop early when the budget is exhausted, so a backlog of overstays or expired rows is drained over successive runs rather than in one long transaction.

Retention is enforced in code

The daily sweep unlinks signed-out rows past the retention window; the photo binary and the NDA text snapshot are columns on that row, so deleting the row deletes the personal data with it. The privacy promise is executed, not just documented.

Sequence-less fresh install

If the visit-number sequence has not seeded yet, create() falls back to a timestamp-based number so the very first sign-in still works instead of erroring.

NDA double-guard

NDA acceptance is enforced at the HTTP endpoint, again in action_sign_in, and once more by a model constraint, so a visit cannot reach signed-in state with an unaccepted required NDA through any path.

Cross-company host spoof blocked

The sign-in endpoint rejects a host id that does not belong to the calling device's company, so a token cannot file a visitor against an employee in another company.

Idempotent state moves

Signing in an already-signed-in record is a no-op, and sign-out only acts on records currently signed in, so duplicate kiosk taps do not corrupt timestamps or re-notify the host.

Rate-limited public surface

Bootstrap, host search, sign-in, and sign-out are all public routes, each throttled per token or IP through the shared rate-limit service, returning 429 when over budget.

What is inside

Built to do the job, end to end.

  • Visitor record. eh.hr.visitor holds name, organisation, contact, host employee, purpose, sign-in and sign-out timestamps, computed duration, state, NDA flags and snapshot, optional photo, notes, kiosk site and device, and a unique visit number. Full chatter and tracking on the key fields.
  • Configurable purposes. eh.hr.visitor.purpose is a sortable list (meeting, delivery, contractor, interview seeded) where each purpose carries its own require-NDA and require-photo toggles. Codes are validated URL-safe and unique per company.
  • Kiosk shell and endpoints. A public QWeb shell drives a pair, sign-in, NDA, photo, result, and sign-out flow against four JSON endpoints: bootstrap, host_search, sign_in, sign_out. The device pairs with the same token mechanism as the attendance kiosk.
  • Host arrival email. A seeded mail.template emails the host with the visitor name, organisation, purpose, visit number, and arrival time. If the host has no work email the module posts a note on the visitor chatter instead of failing silently.
  • Two crons and settings. An hourly per-company auto sign-out and a daily retention sweep. Company settings expose the NDA text, photo-consent text, auto-checkout hour, on/off toggle, and retention days, surfaced in res.config.settings.
  • Roles and isolation. Read for users and auditors, create and edit for managers, full control for admins, mapped to the attendance suite's groups. Global record rules scope visitors and purposes to the current company.

Honest about the edges

What this does not do, so nothing surprises you.

  • Targets Odoo 16 Community and depends on the ERP Heritage attendance base, core, hr, and mail modules; it is not a standalone install and does not run on Enterprise-only stacks.
  • Visitor sign-in authenticates the paired device, not the visitor; anyone at a paired kiosk can submit a sign-in, which suits a staffed or supervised reception, not an unattended public entrance.
  • Host arrival notification is email only through the standard mail queue. There is no SMS, push, Slack, or Teams notification in this module.
  • Photo capture relies on the browser getUserMedia API and a camera-equipped device; there is no badge printing, ID document scan, or barcode badge issuance.
  • Sign-out is keyed on the visit number the visitor enters; there is no face match or automatic presence detection for departures.
  • Retention deletion is permanent unlink with no archive or export-before-delete step, so set the retention window deliberately and keep external backups if you need long-term visitor history.
Search

Odoo 16 visitor management, visitor sign in kiosk Odoo, front desk visitor log, reception sign in system, NDA capture visitor, contractor sign in Odoo, host notification visitor, visitor management Community, hr attendance visitor kiosk, visitor retention GDPR, self hosted visitor system, digital visitor book Odoo

ERP Heritage

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

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