statusbar
The stage strip at the top of Odoo forms is the statusbar widget. It shows where the record stands, lets users click to move it, and hides two keyboard shortcuts almost nobody uses.
| Studio name | (set up via Studio's Stages feature on custom models) |
|---|---|
| Technical name | statusbar |
| Field types | many2one, selection |
| Views | form (header) |
| Module | web, present in every Odoo database |
| Used in core | 67 occurrences across 39 modules, including sale, purchase, account, stock, mrp, hr_recruitment |
| Versions | Odoo 20.0, Odoo 19.0, Odoo 18.0, Odoo 17.0, Odoo 16.0 |
| No-code setup | Partly: Studio's Stages feature creates the standard setup; options are XML |
| Alternatives | badge, state_selection, radio, priority |
What the statusbar does
What this means for your team
Setting it up in Odoo Studio (no code)
What Studio cannot do here
Supported options in Odoo 19
| Option | Type | What it does |
|---|---|---|
clickable | boolean | Whether clicking a stage moves the record. Clicking updates and saves immediately. Set False for states only workflow buttons should reach.(default: true) |
fold_field | field name | Boolean field on the related stage model; stages with it set collapse into the trailing dropdown. Same flag kanban columns fold on, so both views stay consistent. |
statusbar_visible | attribute (comma list) | Field-element attribute, not an option: comma-separated selection values to show inline. The current value is always added, so hidden states still display when active. |
statusbar_visible is an attribute, not an option, a distinction that trips people up: it goes directly on the field element, takes a comma-separated list of selection values, and the source always adds the current value to it, so a record in a hidden state still shows where it is.
Working examples
The keyboard shortcuts nobody knows
Version compatibility
| Version | Status | Notes |
|---|---|---|
| Odoo 20.0 | In development | Not released. The development branch shows no behavior changes; see below. |
| Odoo 19.0 | Verified | Verified against the shipped source and tested on a clean database. |
| Odoo 18.0 | Verified | Same options and behavior. No XML changes needed. |
| Odoo 17.0 | Verified | Same options and behavior. No XML changes needed. |
| Odoo 16.0 | Verified | Same options and behavior. No XML changes needed. |
Upgrade note. Options and attributes are unchanged from Odoo 16 through 19. The responsive folding internals were reworked along the way, so JavaScript patches on the old DOM structure need review; XML carries over untouched.
What is changing in Odoo 20
Common problems and fixes
| Symptom | Cause and fix |
|---|---|
| Clicking a stage does nothing | clickable: False is set, or the record/field is readonly in this state. Check the options and any readonly conditions; non-clickable is often intentional. |
| A stage is missing from the bar | statusbar_visible excludes it, a fold_field tucks it into the dropdown, or a domain filters the stage record. Check all three in that order; folded stages live in the trailing dropdown. |
| Stage change fired emails/automations instantly | Clicking saves immediately by design (update + save in the source). Expected; gate heavy automations on additional conditions, or make the bar non-clickable. |
| Stages collapsed into a dropdown | The container is too narrow; the responsive algorithm folds stages progressively, and small screens always get one dropdown. Widen the window, shorten stage names, or fold rare stages deliberately with fold_field. |
| Record shows a stage outside my domain | The source always includes the current value in its stage search, even when the domain excludes it. Expected honesty; fix the record's stage or widen the domain if that state should be reachable. |
| Alt+X does nothing | The commands register on form views only, and not when the bar is disabled or already at the last stage. Use it on the form (not lists), and check clickable/readonly state. |
Statusbar vs the alternatives
| Widget | Best for | Key difference |
|---|---|---|
statusbar | The record's lifecycle, shown and moved in the form header | Clickable stages that save instantly, folding, and built-in Alt+X shortcuts |
| badge | Read-only status color in lists | Display-only pill, no interaction |
state_selection | Quick status flips from lists and kanban | Colored dot with a small inline menu |
| radio | Mutually exclusive choices that are not a lifecycle | Plain form control, no header placement, no save-on-click |
| priority | Importance level rather than process position | Stars, orthogonal to workflow stages |
Frequently asked questions
How do I add a statusbar to my custom model in Odoo?+
How do I stop users changing state by clicking the statusbar?+
What does statusbar_visible do?+
How do folded stages work?+
Is there a keyboard shortcut to change stage in Odoo?+
Does clicking a stage save the record?+
Do your stages match how work really flows?
Pipelines that mirror your process, folded edge cases, and states that only validated buttons can reach: statusbar design is process design. We build both, from stage models to the automations behind them, on Odoo 16 through 19.
Book a free consultation