hr_presence_status_private
An employee presence indicator that Odoo 19 registers for form views only. Odoo 20 both lifts that restriction and quietly changes how it looks.
September 18, 2026Updated September 18, 20264 min read
| Technical name | hr_presence_status_private |
|---|---|
| Field types | selection |
| Views | form |
| Form variant | form.hr_presence_status_private is the only registration in Odoo 19 |
| Module | hr, installed with the Employees app |
| Used in core | 0 uses in Odoo 19 Community or Enterprise, and 0 in Odoo 20. |
| Versions | Odoo 19.0, Odoo 20.0 |
| No-code setup | No. There is no Studio entry for this widget. |
| Alternatives | badge, selection_badge, state_selection |
What the hr_presence_status_private widget does
What this means for your team
Working examples
What Odoo 20 changes, and why it is easy to miss
Version compatibility
| Version | Status | Notes |
|---|---|---|
| Odoo 19.0 | Verified | Registered for form views only, rendered as a colored pill. |
| Odoo 20.0 | Partial / changed | Prefix dropped so it works in any view, but the pill styling is gone. |
Both the registration and the base class change in Odoo 20.
What is changing in Odoo 20
Common problems and fixes
| Symptom | Cause and fix |
|---|---|
| The widget has no effect in a list or kanban view on Odoo 19 | Only form.hr_presence_status_private is registered, so there is no match outside a form. Use it on a form, or upgrade to Odoo 20 where the bare registration exists. |
| The pill styling disappeared after upgrading to Odoo 20 | The component's base class changed from HrPresenceStatusPill to HrPresenceStatus, which drops the rounded button and outline colors. Style it yourself, or extend the pill component in a custom widget. |
| A patch on this widget stopped applying after upgrade | The file moved and the class it extends changed. Repoint the patch at the new path and check it against the base component rather than the pill. |
Hr_presence_status_private widget vs the alternatives
| Widget | Best for | Key difference |
|---|---|---|
hr_presence_status_private | The private employee presence indicator as an extension point | Form-only in Odoo 19, and its styling changes in Odoo 20 |
| badge | Any status shown as a colored badge | Generic, with real options and no HR dependency |
| selection_badge | A selection rendered as clickable badges | Editable, and shows every value |
| state_selection | A status with a colored dot | Different visual language and widely used in core |
Frequently asked questions
Why does hr_presence_status_private not work in a list view in Odoo 19?+
Why does the presence pill look different after upgrading to Odoo 20?+
Does hr_presence_status_private have options?+
Employee data visible to the wrong people?
Presence, contracts and payroll all sit on the same employee record, and Odoo's defaults are not a policy. We set up HR access so managers, officers and colleagues each see exactly what they should.
Request an access rights audit