hr_applicant_state_selection
The colored state bullet on an Odoo recruitment applicant is not the standard state_selection widget. hr_applicant_state_selection exists because hr.applicant carries a fourth kanban state, Waiting, that needed its own color.
| Technical name | hr_applicant_state_selection |
|---|---|
| Field types | selection |
| Views | form, kanban |
| Module | hr_recruitment |
| Used in core | 2 occurrences across 1 module: the hr.applicant form and kanban views in hr_recruitment |
| Versions | Odoo 20.0, Odoo 19.0 |
| No-code setup | No. Applied in XML; Studio does not list it |
| Alternatives | state_selection, project_task_state_selection, event_state_selection |
What the Applicant state widget does
What this means for your team
Supported options in Odoo 19
| Option | Type | What it does |
|---|---|---|
autosave | boolean | Inherited from state_selection. When true, which is the default even if the option is omitted, picking a state saves the whole record immediately, including any other pending edits. Pass {'autosave': False} to keep the change pending until the form is saved.(default: true)(since Odoo 19.0) |
hide_label | boolean | Inherited from state_selection. The inherited extractProps hides the label whenever this option is absent, so the widget shows a bare bullet by default; write {'hide_label': False} to print the state name, or its stage legend, next to it.(default: true (label hidden))(since Odoo 19.0) |
The label is hidden by default. The inherited extractProps only shows the state label when you explicitly pass {'hide_label': False}, which is how the widget renders as a compact bullet in the applicant kanban footer.
Working examples
Hotkeys, stage dates, and what the subclass inherits
Version compatibility
| Version | Status | Notes |
|---|---|---|
| Odoo 20.0 | In development | Not released. The widget file is byte-identical on the development branch; see below. |
| Odoo 19.0 | Verified | Widget introduced. Verified against the shipped source. |
| Odoo 18.0 | Not available | Widget does not exist; the applicant form used the generic state_selection. |
| Odoo 17.0 | Not available | Widget does not exist. |
| Odoo 16.0 | Not available | Widget does not exist. |
Upgrade note. Before Odoo 19 the applicant form used the generic state_selection widget, which renders the waiting value with the default gray bullet. Custom views migrated from 17 or 18 keep working if they still name the old widget; they just lose the orange color for Waiting.
What is changing in Odoo 20
Common problems and fixes
| Symptom | Cause and fix |
|---|---|
| The dropdown shows raw labels like In Progress instead of the stage's custom wording | The legend_* related fields are not loaded in the view; the widget reads them from record data. Add legend_normal, legend_blocked, legend_waiting and legend_done as invisible fields, as the core form does. |
| Waiting shows a gray bullet instead of orange | The view uses the generic state_selection widget, which has no color for the waiting value. Switch the field to widget="hr_applicant_state_selection". |
| Changing the state saves the form before the user is done editing | The inherited autosave option defaults to true and saves the entire record on selection. Pass options="{'autosave': False}" if the state change should stay pending. |
| Alt+D, Alt+F or Alt+G triggers the wrong state | Hotkeys are assigned by selection order, and hr.applicant has four values for three hotkeys; Blocked gets none. Use the command palette entries by name; the hotkey mapping is hardcoded in the base widget. |
| The state resets to In Progress after moving the applicant to another stage | Server behavior on hr.applicant: writing a new stage_id resets kanban_state to normal unless the write sets it explicitly. This is intentional; re-set the state after the stage move if your flow needs it. |
Applicant state widget vs the alternatives
| Widget | Best for | Key difference |
|---|---|---|
hr_applicant_state_selection | The four-value applicant state on hr.applicant in recruitment views | Adds an orange color for the recruitment-specific waiting state on top of the generic widget |
| state_selection | The standard three-value kanban_state on any other model | Same dropdown and options but only red and green in its color map |
| project_task_state_selection | Task states in project, including approval and canceled values | Different state vocabulary with its own icons and a toggle click mode |
| event_state_selection | Event kanban states including a Cancelled value | Hardcodes a four-state order with icon glyphs and drops the base hotkey commands |
Frequently asked questions
What is the hr_applicant_state_selection widget in Odoo?+
Why does hr.applicant have four kanban states instead of three?+
Can I rename the state labels per recruitment stage?+
Does changing the applicant state save the record immediately?+
Can I use hr_applicant_state_selection on my own model?+
Recruitment pipeline that mirrors how you actually hire?
We tailor Odoo Recruitment end to end: stage legends that speak your language, applicant states wired to automated interview and offer flows, and custom kanban indicators your recruiters read at a glance, on Odoo 16 through 19.
Talk to an Odoo HR expert