event_icon_selection
event_icon_selection turns a field's value into an icon, and its configuration is unlike any other widget on this site: the options dictionary itself is the icon map, with every key you write becoming a supported value.
August 26, 2026Updated August 26, 20266 min read
| Technical name | event_icon_selection |
|---|---|
| Field types | char, text, selection |
| Views | list (core); registered for any view |
| Module | event |
| Used in core | 2 occurrences across 1 module: the mail_state column of the event communication list in event |
| Versions | Odoo 20.0, Odoo 19.0, Odoo 18.0, Odoo 17.0, Odoo 16.0 |
| No-code setup | No. Applied in XML; Studio does not list it |
| Alternatives | state_selection, event_state_selection, selection_badge, badge |
What the Icon Selection widget does
What this means for your team
Working examples
Tooltips, crashes and the version plumbing
Version compatibility
| Version | Status | Notes |
|---|---|---|
| Odoo 20.0 | Partial / changed | Not released. The icon map format changes to [glyph, class] arrays; string maps break. See below. |
| Odoo 19.0 | Verified | Verified against the shipped source; same contract as 18. |
| Odoo 18.0 | Verified | Adds the 20px listViewWidth for label-less columns; map contract unchanged. |
| Odoo 17.0 | Verified | Internal migration to record.data; same XML contract. |
| Odoo 16.0 | Verified | Widget present with the same options-as-map contract. |
Upgrade note. Views using string icon maps carry unchanged from 16 through 19. Plan a review for Odoo 20: the development branch rewrites the map values into two-element arrays, and 19-style strings will not resolve to icons there.
What is changing in Odoo 20
Common problems and fixes
| Symptom | Cause and fix |
|---|---|
| The row fails to render or the console shows charAt of false | The field has no value; the tooltip getter calls charAt on false. Use the widget only on required or defaulted fields, or hide it with invisible="not my_field". |
| No icon shows for one specific value | That value has no key in the options map; the lookup returns undefined and the <i> renders classless. Add the value as a key in the options dict with its icon class string. |
| Tooltip shows In_progress instead of the label | The tooltip is the raw value capitalized; selection labels are never read. Expected; choose presentable value keys if tooltips matter, or add a help attribute on the column. |
| Widget missing on a database without Events | The registration ships in the event module despite the generic-sounding behavior. Install Events, or copy the 30-line component into your own module under a new name. |
| Icons vanish after upgrading to Odoo 20 | The development branch changes map values from strings to [glyph, class] arrays for the oi font. Rewrite each map value in the new array format when migrating, mirroring the updated core usage. |
Icon Selection widget vs the alternatives
| Widget | Best for | Key difference |
|---|---|---|
event_icon_selection | Compact read-only status icons in dense lists, mapped from XML | The options dict itself is the icon map; no named options, no editing, one icon per cell |
| state_selection | Editable three-state flags with a dropdown | Interactive bullet with framework-managed colors, labels and autosave |
| event_state_selection | The event kanban state with its cancel value | Editable state widget with hardcoded icons per state, event-specific |
| selection_badge | Selection values as clickable text badges | Editable badges showing labels rather than a single display icon |
| badge | Read-only colored text pills in lists | Shows the value's label with decoration colors instead of an icon |
Frequently asked questions
How do I configure the icons for event_icon_selection?+
Is event_icon_selection editable?+
Can I use event_icon_selection outside the Events app?+
Why does my list crash when the status field is empty?+
What happens to my icon map in Odoo 20?+
List views that read like dashboards?
We turn dense Odoo lists into scannable operational screens: status icons, exception highlighting and column design matched to how your team actually works a queue. Events, marketing and beyond, on Odoo 16 to 19.
Sharpen my list views