many2many_tags_email
The email tags field is the recipient picker behind Odoo's share and invite dialogs: partner pills that show emails, accept Name <email> input, and can fix a bad address inline.
| Technical name | many2many_tags_email |
|---|---|
| Field types | many2many, one2many |
| Views | form |
| Module | mail |
| Used in core | 9 occurrences across 6 modules, including mail, portal, survey, website_slides, account, calendar |
| Versions | Odoo 20.0, Odoo 19.0, Odoo 18.0, Odoo 17.0, Odoo 16.0 |
| No-code setup | No. The widget appears where core places it; adding it elsewhere is XML work. |
| Alternatives | many2many_tags, many2many_tags_avatar, email, many2many_checkboxes |
What the email tags field does
What this means for your team
Supported options in Odoo 19
| Option | Type | What it does |
|---|---|---|
edit_tags | boolean | Adds an inline edit affordance on each pill for correcting the recipient's email. Gated per record by the can_write attribute; the fix saves to the partner immediately. New in 19, removed again on the development branch.(since Odoo 19.0) |
no_create | boolean | Inherited from Tags. Blocks both quick creation and the create dialog, limiting picks to existing partners. |
no_quick_create | boolean | Inherited from Tags. Disables inline creation, including the Name <email> parsing path; the create dialog remains. |
no_create_edit | boolean | Inherited from Tags. Removes the Create and Edit dialog entry; inline quick create remains. |
create | domain | Inherited from Tags. Domain evaluated against the current record enabling creation conditionally. |
search_threshold | number | Inherited from Tags. Minimum typed characters before the partner search fires. |
placeholder_field | field name | Inherited from Tags. Char field on the current record supplying a dynamic placeholder. |
create_name_field | field name | Inherited from Tags and undocumented. Which partner field receives the typed text on creation; the email parsing overrides this flow for address-shaped input.(default: name) |
color_field | field name | Inherited from Tags. Works in 19, but the development branch filters it out of this widget's options, so do not build on colored recipient pills. |
edit_tags is a pair, not a single switch. The option turns the feature on, and the can_write attribute, a Python expression evaluated per record, decides whether the current user actually gets the edit control. Without can_write, permission defaults to yes whenever the option is set.
Working examples
What makes it more than tags with an icon
Version compatibility
| Version | Status | Notes |
|---|---|---|
| Odoo 20.0 | In development | Not released. edit_tags is removed and a live email validity checker appears on the development branch; details below. |
| Odoo 19.0 | Verified | Verified against the shipped source, including edit_tags and the Name <email> parsing. |
| Odoo 18.0 | Partial / changed | Email pills only: no input parsing, no popover, no edit_tags. |
| Odoo 17.0 | Partial / changed | Same basic email-pill rendering as 18. |
| Odoo 16.0 | Partial / changed | Available in its basic form under the mail module. |
Upgrade note for 18 to 19. Odoo 18's version renders email pills but has none of the interactive layer: no Name <email> parsing on quick create, no recipient popover, no edit_tags option, no can_write gate. All of that is 19-new, so backporting a 19 view to 18 silently drops those behaviors.
What is changing in Odoo 20
Common problems and fixes
| Symptom | Cause and fix |
|---|---|
| Typed Name <email> but the partner was created with everything in the name | The parsing runs in the quick-create path, which no_quick_create disables, or the database is Odoo 18. Allow quick create on 19, or create via the dialog where default_email is pre-filled. |
| A recipient created in the wizard exists even though I cancelled | Quick creation writes res.partner directly, independent of the wizard's lifecycle. Expected. Remove the partner from Contacts if it was a mistake. |
| No pencil to edit a recipient's email | edit_tags is not set, or the can_write expression evaluates false for this record or user. Set options="{'edit_tags': True}" and check the can_write attribute's expression. |
| Fixing one recipient's email changed it on old documents too | The inline edit saves to the partner record, which every document references. Expected for a shared address book. Create a separate partner if the person genuinely has two addresses. |
| Pills show raw email addresses instead of names | The display chain fell through to email because the partners have no name. Fill in partner names; the widget is exposing a data-quality gap. |
| Some picked partners never receive the mailing | Partners without an email are selectable unless the view restricts them. Add domain="[('email','!=',False)]" to the field. |
Email tags field vs the alternatives
| Widget | Best for | Key difference |
|---|---|---|
many2many_tags_email | Recipient pickers on share, invite and notification flows | Email-aware pills with address parsing and inline correction |
| many2many_tags | Partner relations with no sending context | No email fetch, no parsing, colors work normally |
| many2many_tags_avatar | Internal people-picking where faces beat addresses | Shows avatars instead of emails, no partner-creation parsing |
| A single stored email address on the record itself | Char-field widget, one address, mailto link | |
| many2many_checkboxes | Short fixed recipient sets picked by ticking | No search, no creation, no email display |
Frequently asked questions
What is the many2many_tags_email widget used for?+
How does creating a recipient from typed text work?+
Can users edit a recipient's email address inline?+
Why does the widget only appear on form views?+
Does many2many_tags_email validate addresses?+
Outbound email from Odoo not landing?
Recipient pickers are the visible end; deliverability, partner data quality and template plumbing decide whether mail arrives. We audit and fix Odoo email end to end, from SPF and bounce handling to the wizards your team touches daily.
Fix your Odoo email flow