properties
The Properties field lets end users bolt their own fields onto records, per project, per team, per parent, without Studio, without a developer, and without touching the database schema.
| Studio name | Properties |
|---|---|
| Technical name | properties |
| Field types | properties |
| Views | form, kanban, calendar, hierarchy |
| Form variant | The base registration; the cog menu's Add Properties entry talks to it over the form bus |
| Also registered as | kanban.properties, hierarchy.properties, calendar.properties, all read-only for definitions |
| Module | web, present in every Odoo database |
| Used in core | 9 occurrences across 8 modules, including stock, fleet, mass_mailing, crm, product, hr_recruitment |
| Versions | Odoo 20.0, Odoo 19.0, Odoo 18.0, Odoo 17.0, Odoo 16.0 |
| No-code setup | Yes, entirely: defining properties is itself the no-code feature |
| Alternatives | field_selector, many2many_tags, html, Studio custom fields |
What the Properties field does
What this means for your team
Setting it up in Odoo Studio (no code)
What Studio cannot do here
Working examples
Access rules and the machinery behind the cog menu
Version compatibility
| Version | Status | Notes |
|---|---|---|
| Odoo 20.0 | Partial / changed | Not released. Core stable; kanban registration renamed to card.properties and a new properties_definition widget appears. Details below. |
| Odoo 19.0 | Verified | Verified against the shipped source. 14 property types including monetary, HTML and multiline text. |
| Odoo 18.0 | Partial / changed | 11 property types; showAddButton attribute instead of editMode and the cog-menu flow. |
| Odoo 17.0 | Partial / changed | Properties available with the earlier type set and add-button UI. |
| Odoo 16.0 | Partial / changed | First release with Properties, introduced for Knowledge and project tasks. |
Upgrade note for 18 to 19. The showAddButton attribute is gone in 19; adding properties moved to the form cog menu, and views that passed it get nothing back. In exchange, 19 added the editMode attribute and three property types: monetary, HTML and multiline text. Stored property values migrate untouched since the JSON layout is unchanged.
What is changing in Odoo 20
Common problems and fixes
| Symptom | Cause and fix |
|---|---|
| No Add Properties entry in the cog menu | The record has no parent set, or the model has no fields.Properties at all. Assign the parent first (for example, put the task in a project); the definition lives there. |
| Users see values but cannot edit definitions | Definition editing requires write access on the parent record and the check failed. Grant write on the parent (for example, the project) to whoever owns its property set. |
| columns="3" does nothing | The component validates columns to 1 or 2 only. Use 2, and remember phones force a single column regardless. |
| A property disappeared from every record at once | Someone deleted the definition on the parent, which removes it for all children. Restore the definition; the values it held are gone, so treat definition deletes as admin actions. |
| Properties do not show on kanban cards | Display in Cards is off for those properties, or the card view lacks the properties field. Tick Display in Cards in the definition popover. |
| showAddButton stopped working after upgrading to 19 | The attribute was removed; adding properties moved to the form cog menu. Drop the attribute and use editMode where a wizard should open in definition editing. |
Properties field vs the alternatives
| Widget | Best for | Key difference |
|---|---|---|
properties | Team-owned extra fields scoped to a parent: per project, per model, per position | Users define the fields themselves; storage is JSON, access follows the parent |
| field_selector | Storing a path to an existing field rather than defining new ones | Picks fields, does not create them |
| many2many_tags | One flexible categorization axis instead of many typed fields | Single tag dimension, no types or defaults |
| html | Free-form notes when structure is not needed | Rich text blob, invisible to filters and grouping |
Studio custom fields | Company-wide fields every record must carry | Real schema columns, global, with compute and required support |
Frequently asked questions
What is the properties field in Odoo?+
How do I add a property to a task in Odoo?+
What property types does Odoo 19 support?+
Who can create or edit property definitions?+
Are Odoo properties searchable and groupable?+
Properties or Studio custom fields: which should we use?+
Does the properties system change in Odoo 20?+
Custom fields multiplying out of control?
Half of most Studio backlogs should have been properties, and half of most property sprawl should have been schema. We audit your field landscape, migrate misplaced customizations, and set up the governance that keeps Odoo fast and upgradable.
Audit your custom fields