Widget category
Odoo Website / Marketing widgets
Website and marketing widgets power Odoo's site builder, forms, campaigns and link tracking — the pieces that connect a visitor's click to a record in the database.
Most are view-level widgets rather than plain field renderers, so the per-widget pages note where each one can actually be mounted before you reach for it.
21 widgets documented45 uses in Odoo coreVersions 16.0 → 20.0 verified per widget
Every website / marketing widget, by use in Odoo core
| Widget | What it does | Field types | Uses in core |
|---|---|---|---|
| website_redirect_button | The website redirect button turns the is_published flag into a header button that reads Published or Unpublished and jumps straight to the record's public page. | boolean | 11 |
| im_livechat.rating_percentage | Unusual entry in the widget inventory: im_livechat.rating_percentage is not a field widget at all. It is a formatter that turns Livechat's 1 to 5 rating scale into a 0 to 100 percentage inside pivot and graph reports. | integer, float | 6 |
| EventMailTemplateReferenceField | The template picker on Odoo's event communication lines is a tuned reference widget: EventMailTemplateReferenceField preselects the first template model, marks mail templates with an envelope, and refuses to open records from readonly rows. | reference, char | 4 |
| boolean_phone | New in Odoo 19, boolean_phone is the smallest kind of widget: a boolean that renders a phone icon when true and nothing at all when false, built to show which livechat agents are currently in a call. | boolean | 2 |
| char_emojis | The char_emojis widget is a standard single-line text input with one addition: an emoji button that opens Odoo's full emoji picker and inserts the chosen emoji at the cursor. | char, text | 2 |
| 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. | char, text, selection | 2 |
| event_state_selection | Events in Odoo carry a fourth kanban state, Cancelled, and event_state_selection is the widget built around it: icon-based states in a fixed order, a divider isolating the cancel action, and one surprising omission inherited from how it skips its parent's setup. | selection | 2 |
| website_publish_button | The Published smart button that turns into red Unpublish when you hover it is two parts: a server method and this widget. website_publish_button renders the label; it toggles nothing itself. | boolean | 2 |
| x2_many_media_viewer | The Add Media gallery on eCommerce products is a one2many wearing a media manager. x2_many_media_viewer swaps the usual Add row for Odoo's image and video dialog, and can transcode every upload to WebP. | one2many, many2many | 2 |
| CopyClipboardJobLinkButton | A copy button for a job posting's link, with a notification confirming the copy rather than a silent state change. | char | 1 |
| chatbot_steps_one2many | The steps list in Odoo's chatbot builder. Saving the whole script after every step sounds heavy-handed until you try building a script without it. | one2many | 1 |
| chatbot_triggering_answers_widget | Tags for the answers that trigger a chatbot step, filtered to the script you are editing. It does that by writing into the user's own context, which is an unusually blunt way to pass a filter. | many2many | 1 |
| image_radio | A selection field rendered as clickable pictures. The images are matched to values by position, and the radio group has a hardcoded name, which is where both of its failure modes come from. | selection | 1 |
| mailing_filter | A relation picker with two extra icons: save the current recipient domain as a favorite, or drop the one you loaded. On the Odoo 20 development branch the whole idea is replaced. | many2one | 1 |
| mass_mailing_html | The email designer inside Odoo: themes, snippets, an iframe preview and a code view. It is the rich text editor with several features deliberately switched off, because email is not the web. | html | 1 |
| slide_category_one2many | The content tab of an eLearning course is one relation pretending to be two: sections and lessons. This widget is the renderer that keeps them apart. | one2many, many2many | 1 |
| stat_info | One core view writes widget="stat_info" on a stat button. Nothing registers that name, and a button would not look it up even if something did. Two reasons for the same outcome: nothing happens. | — | 1 |
| text_emojis | The multi-line text field with an emoji button attached. Small feature, and the only reason it exists is that social and marketing copy without emoji reads like a memo. | text, char | 1 |
| video_preview | The live video preview in Odoo's product media dialog is video_preview: a field widget that trusts a server-computed embed and simply frames it 16:9. All the intelligence, and all the platform support, lives server side. | html | 1 |
| website_urls | One core view asks for widget="website_urls". Nothing in Odoo registers that name, in any version we checked. The field still renders, and this page explains exactly why. | char | 1 |
| x2_many_image | The image tile in Odoo's product media kanban is not the plain image widget. x2_many_image swaps the file picker for the media dialog, and quietly disables three inherited options while doing it. | binary, many2one | 1 |
Each widget page has the usage XML, Studio steps, every developer option, and a per-version compatibility table verified against the shipped Odoo source.
Other widget categories
Need these working in your Odoo?
The team that documented every widget also builds with them — custom views, upgrades and performance work by senior Odoo developers.
