Skip to main content
iVentureTeam

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.

Siddharth JambukiyaSiddharth JambukiyaOdoo Techno-Functional Consultant
August 25, 2026Updated August 25, 20265 min read
Technical nameboolean_phone
Field typesboolean
Viewslist, kanban
Moduleim_livechat, installed with Website Live Chat
Used in core2 occurrences in the im_livechat module, on the channel form's agents list and kanban
VersionsOdoo 20.0, Odoo 19.0
No-code setupNo. Module helper widget; Studio does not list it.
Alternativesboolean, boolean_toggle, boolean_icon

What the In-call indicator does

The boolean_phone widget answers one question on the livechat operations screen: is this agent on a call right now? It renders the boolean as a phone glyph when true, and when false it renders nothing, no unchecked box, no dimmed icon, just empty space. That asymmetry is the design: on a list of forty agents, the eye finds the three phones instantly, which a column of checkboxes would never allow.

Implementation-wise it is a template swap on the standard boolean widget. The component subclasses BooleanField, replaces the template with a three-line conditional icon, and registers under its own name with the display name In call. Everything else, supported types included, comes from the base descriptor.

What this means for your team

Live Chat supervisors staff queues in real time: who is available, who is typing, who is voice-calling a customer through Discuss. The in-call flag is the piece that used to be invisible, and rendering it as a spot icon turns the agents list into a wallboard, three phones means three agents are tied up, route accordingly.

The pattern generalizes to any presence-style boolean where only the true state matters: on break, out of office, flagged for review. An icon-when-true widget communicates state density that checkbox grids cannot, and this widget is the minimal template for building your own.

Working examples

The core pattern: agents list on the channel form

<list no_open="1" create="0">
    <field name="partner_id" string="Agent" widget="many2one_avatar_user"/>
    <field name="livechat_is_in_call" widget="boolean_phone" nolabel="1"/>
</list>

Note the nolabel: the column header stays empty, so the icons float next to the avatars, which is how the kanban variant uses it too.

A three-line template done properly

Three lines of template are still worth reading closely. The icon carries role="img" and title="In a Call", giving hover text to sighted users and an accessible name to screen readers, details that homegrown icon widgets usually forget. And because the false branch renders nothing, the widget contributes zero width when inactive, so list columns using it should be narrow and label-free, exactly as core configures them.

If you fork the pattern for your own presence flag, the whole recipe is: subclass BooleanField, point static template at a conditional icon, spread booleanField in the registration, and register your name. The display name string is what Studio and developer tooling show for the widget, worth setting even for internal widgets.

Version compatibility

VersionStatusNotes
Odoo 20.0In developmentNot released. JavaScript identical on the development branch; only the icon markup changes. See below.
Odoo 19.0VerifiedVerified against the shipped source. First release with the widget.
Odoo 18.0Not availableWidget does not exist.
Odoo 17.0Not availableWidget does not exist.
Odoo 16.0Not availableWidget does not exist.

Upgrade note. New in 19.0 alongside livechat's call features; there is nothing to migrate from earlier versions. Forks of the pattern on 18 and below just subclass that version's boolean widget the same way.

What is changing in Odoo 20

Odoo 20 is expected at Odoo Experience in Brussels, 24 to 26 September 2026, and the development branch remains unstable until feature freeze, so treat this as provisional; the page is re-verified after release.

The widget's JavaScript is byte-identical to 19.0 on the branch. The only change is in the template, where the FontAwesome classes fa fa-fw fa-phone give way to the new icon set as oi oi-fw oi-filled with data-icon="phone". Anyone styling or testing against the fa-phone class will need the selector updated; behavior is otherwise untouched.

Common problems and fixes

SymptomCause and fix
Nothing renders in the columnThe value is false, and the widget renders nothing by design in that state. No fix needed; the icon appears when the flag turns true.
Users cannot toggle the valueThe template contains no input; the widget is display-only everywhere. Use the standard boolean or boolean_toggle widget if editing is required.
Missing widget warning in the consoleThe widget ships with im_livechat, which is not installed. Install Live Chat or register your own copy of the component.
Icon shows for agents who left the calllivechat_is_in_call is computed server-side; the card may be stale. Refresh the view; the widget renders whatever the record holds.
CSS targeting fa-phone stops working after upgrading past 19The development branch replaces FontAwesome classes with the oi icon set. Target the widget's element or the new data-icon attribute instead.

In-call indicator vs the alternatives

WidgetBest forKey difference
boolean_phonePresence-style flags where only the true state mattersIcon when true, empty when false, never editable
booleanOrdinary editable flagsCheckbox in both states, editable in edit mode
boolean_toggleFlags flipped often from listsSwitch control that saves the record immediately
boolean_iconIcon-style booleans with configurable glyphsTakes an icon option instead of hardcoding the phone

The alternatives all render both states. Choose boolean_phone, or a fork of it, precisely when the false state should disappear; choose the others when absence of a mark must itself be visible.

Frequently asked questions

What is the boolean_phone widget in Odoo?+
A Live Chat widget, new in Odoo 19, that renders a boolean field as a phone icon when true and as nothing when false. Core uses it on the channel's agent list and kanban to show which agents are currently in a call.
Can users toggle a boolean_phone field?+
No. The template renders only a conditional icon and never an input, so the value cannot be changed from the UI in any view. The field it was built for, livechat_is_in_call, is computed from call membership anyway.
Does boolean_phone accept any options?+
None. It spreads the base boolean descriptor, which has no supported options, and adds nothing. Its behavior is fixed: phone icon on true, empty on false.
Can I use boolean_phone on my own boolean field?+
Yes, on any database with Live Chat installed, since the inherited supported type is simply boolean. For a different glyph or a version without the im_livechat dependency, copy the component, it is a template override in a dozen lines, and register your own name.
Why show nothing instead of an unchecked box when false?+
Density. On a long agents list, empty space for idle agents makes the few active phones jump out, which is the whole point of a presence indicator. A checkbox column would make every row demand attention.
Is boolean_phone available in Odoo 18 or earlier?+
No. It shipped in 19.0 together with livechat's call features. Earlier versions have no equivalent widget in core.
Does Odoo 20 change boolean_phone?+
The JavaScript on the development branch is byte-identical; only the template's icon markup migrates from FontAwesome to the new oi set with data-icon="phone". Provisional until the September 2026 release, which this page will be re-verified against.

Operations screens that show state at a glance

Presence flags, call indicators, and live queues are small widgets doing real workflow work. We build custom Odoo status widgets and supervisor dashboards, from Discuss integrations to full wallboards, on Odoo 16 through 19.

Book a free consultation

How this page was produced

This page was verified by reading boolean_phone.js and its template on the Odoo 19.0 branch, confirming absence from 16.0 through 18.0, diffing the development branch where the icon migration was found, and checking both core usages in im_livechat_channel_views.xml. The screenshot was captured on a clean Odoo 19 database with Live Chat installed. Report corrections via our contact page.