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 17.0
  4. Sales Conditions FAQ

Visitor Management

by ERP Heritage https://www.erpheritage.com.au/
Odoo
v 17.0 Third Party 38
Download for v 17.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
ERP Heritage Attendance Suite

Visitor Management

One reception tablet, two flows: staff attendance and guest sign-in, on one audit trail.

Free · LGPL-3Odoo 17 CommunityLGPL-3v1.0.0
Configurable purposes
NDA text snapshot
Host email notification
Auto sign-out cron
Retention sweep

Why this module

Visitor Management

ONE DEVICE

No second tablet, no second SaaS

The kiosk site and device pairing come from the attendance suite base. The reception tablet that runs staff attendance also serves visitor sign-in at /eh_hr/visitor/<site_code>, authenticated by the same device token. One piece of hardware, one bill, one audit trail.

PROVABLE

NDA text frozen at sign-in

For NDA-required purposes the kiosk shows your configured NDA prose and stores the exact text on the visitor record at that moment. Reword the company NDA whenever you like; past visits keep the wording the visitor actually accepted, so an audit cannot drift.

SELF-CLEANING

Retention enforced in code

A daily cron deletes signed-out visitor rows past the company retention window, taking the NDA snapshot and any photo with the row. The privacy promise is enforced by the scheduler, not by paperwork or a reminder to a receptionist.

Day in the life

Visitor signs in. Host gets the email. Day continues.

A delivery driver pulls up to a reception tablet sitting on the visitor URL. They tap their name, organisation, and phone, pick Delivery, and because that purpose has NDA and photo off they tap Sign in straight away. The host is emailed through the standard mail queue with the visitor name, purpose, and visit number. The driver signs out at the same kiosk by entering their visit number. An afternoon contractor hits the Contractor purpose, which flips NDA and photo on: the kiosk shows the NDA, freezes the accepted text onto the record, and asks for a photo behind a consent screen before sign-in completes. At the company close hour the hourly cron catches a visitor who walked out without tapping out, signs them off, and flags the record as auto-signed-out so the register reads true overnight.

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.

Idempotent sign-in

action_sign_in skips any record already in signed_in, and action_sign_out skips anything not currently signed_in, so a double-tapped kiosk or a retried request cannot reopen or double-stamp a visit.

Sequence not seeded

If the visit-number sequence has not been loaded on a fresh install, create() falls back to a timestamp-based number (V + YYYYMMDDHHMMSS) so the first sign-in still works before any data file has run.

Per-company close hour

The auto sign-out cron evaluates each company independently in its own partner timezone against its own close hour, so a multi-company database closes each site at the correct local time rather than one global cutoff.

Cron batch caps

Both the auto sign-out and retention crons process at most 500 rows per run and report progress through _commit_progress, so a large backlog is drained in bounded slices instead of one long transaction that could block the cron worker.

Directory leak guard

The bootstrap endpoint deliberately returns no host list. Host names come only from a typeahead that requires at least two characters, caps at ten matches scoped to the device company, and is rate limited, so a device token cannot bulk-pull the employee directory.

NDA double guard

NDA acceptance is enforced both at the controller (sign-in is rejected with a 400 if the purpose requires an NDA and none was accepted) and in the ORM via an action guard and a model constraint, so a record cannot reach signed_in without the snapshot.

Retention race

The retention sweep deletes only signed_out rows whose signed_out_on is past the cutoff, and the test suite proves the aged timestamp survives the ORM flush before the cron runs, so live visits and recently departed guests are never swept early.

Company-scoped sign-out

Kiosk sign-out matches the visit number only within the calling device's company and only against still-signed-in visits, returning a clean not-found response rather than touching another company's register or re-signing-out a closed visit.

What is inside

Built to do the job, end to end.

  • Models. eh.hr.visitor holds the visit: name, organisation, email, phone, host employee, purpose, sign-in and sign-out timestamps, state, NDA required and accepted flags, the NDA text snapshot, optional photo, notes, visit number, and company. It inherits mail.thread for chatter and tracking, with a computed duration in minutes. eh.hr.visitor.purpose carries the purpose name, a URL-safe code unique per company, sequence, and the NDA-required and photo-required toggles.
  • Public kiosk endpoints. Routes under /eh_hr/visitor are authenticated by the kiosk device token, not the visitor. A shell page, a bootstrap call returning purposes plus NDA and photo consent text, a throttled host typeahead, and POST sign-in and sign-out endpoints. Every endpoint is rate limited per token and every sign-in and sign-out is written to the suite kiosk event log with the client IP.
  • Two scheduled jobs. An hourly cron auto signs out visitors still on site past each company's configured close hour and marks the record. A daily cron deletes signed-out rows past the company retention window, removing the NDA snapshot and photo with the row. Both run as root, are batch-capped, and are isolated through cron progress reporting.
  • Company settings. Per-company NDA text, photo consent text, auto-checkout on/off, close hour, and retention days, all exposed in Settings via res.config.settings related fields. Seeded defaults ship for the NDA and consent prose so the kiosk works the moment the module is installed.
  • Backoffice and security. List, form, and search views with status decoration, an auto-signed-out ribbon, NDA and photo and notes tabs, and filters for signed-in, signed-out, today, last seven days, NDA accepted, and auto-signed-out. Four access tiers (user, manager, admin, auditor) reuse the suite groups, and a global record rule scopes visitors to the user's companies while letting purposes be shared or company-specific.
  • Seeded data. Four starter purposes load on install: Meeting and Delivery (no NDA, no photo), Contractor (NDA and photo on), and Interview (NDA on). A shared visit-number sequence (V prefix, six-digit padding) and the host arrival email template ship in the same data set.

Honest about the edges

What this does not do, so nothing surprises you.

  • Public-kiosk sign-out is by visit number only. Looking a visitor up by name to sign them out is done from the backoffice visitor form, not from the public kiosk endpoint.
  • The host arrival email is sent only when the selected host has a work email; otherwise the module posts a note on the visitor chatter rather than emailing. There is no SMS or push notification channel.
  • There is no pre-registration or expected-visitor invitation flow, no badge or label printing, and no QR or barcode check-in. Visitors enter their details at the kiosk at arrival time.
  • Photo consent gating is enforced in the kiosk front end. The server stores the consent text and the captured image but does not itself re-prompt; a custom front end calling the endpoints directly is responsible for honouring consent.
  • This module depends on eh_hr_attendance_base and eh_hr_core for the kiosk site, device pairing, rate limiting, and event log. It is not a standalone visitor app and does not run without the attendance suite installed.
  • Retention and auto sign-out are driven by the standard Odoo cron. Deletion and end-of-day closing happen on the scheduler's cadence, not in real time at the moment a window elapses.
Search

visitor management odoo, odoo 17 visitor sign in, front desk kiosk odoo, visitor log book odoo, nda capture visitor, contractor sign in odoo, reception kiosk hr attendance, host email notification visitor, visitor photo capture, visitor retention gdpr odoo, auto sign out visitor cron, multi company visitor register

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 17 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