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.
| Technical name | mass_mailing_html |
|---|---|
| Field types | html |
| Views | form |
| Module | mass_mailing, the Email Marketing app |
| Used in core | 1 occurrence, the mailing body on the mailing form in mass_mailing |
| Versions | Odoo 20.0, Odoo 19.0 |
| No-code setup | No. It requires a companion inline field on the model |
| Alternatives | html, html_mail, html_composer_message, mailing_filter |
What the mailing body editor does
What this means for your team
Supported options in Odoo 19
| Option | Type | What it does |
|---|---|---|
inline_field | field | Names the companion field that receives the inline version of the mail, which is what gets sent. Declared as a required prop, so omitting it fails rather than degrading. |
filterTemplates | boolean | Narrows the mail templates offered in the designer. Read from the options dictionary under this exact spelling.(default: false) |
allowChecklist | forced off | Forced off in the extractor. Checklists do not render reliably in email clients, and no view option can re-enable them.(default: false) |
allowVideo | forced off | Forced off in the extractor, for the same reason.(default: false) |
codeview | forced on | Forced on, unlike the ordinary editor, so a designer can inspect and edit the raw markup.(default: true) |
isCollaborative | forced off | Forced off. Collaborative editing is not offered on a mailing body.(default: false) |
embeddedComponents | forced off | Forced off. Embedded interactive components have no meaning in a delivered email.(default: false) |
sandboxedPreview | forced off | Forced off, because the widget provides its own iframe preview instead.(default: false) |
The inline field is effectively required. The widget declares it as a non-optional prop, so a view that does not name it will fail rather than degrade. The widget also declares a dependency on the mail's html field, with a comment marking that as deprecated and asking for it to be declared in the view instead.
Working examples
How one mailing shows two different things
Version compatibility
| Version | Status | Notes |
|---|---|---|
| Odoo 20.0 | Partial / changed | Not released. Still registered and still used; the internals and the surrounding form continue to change. |
| Odoo 19.0 | Verified | First version in this form, on the current editor. Verified against the shipped source. |
| Odoo 18.0 | Not available | This file does not exist. The mailing editor was built on the previous editor stack. |
| Odoo 17.0 | Not available | This file does not exist. |
| Odoo 16.0 | Not available | This file does not exist. |
Upgrade note. The widget in this form is new in Odoo 19, together with the current editor. Earlier versions had a mailing editor built on the previous editor stack under different internals, so any customization of the mailing designer written for Odoo 18 or earlier has to be redone rather than migrated. Views themselves only need the inline field option, which has carried across.
What is changing in Odoo 20
Common problems and fixes
| Symptom | Cause and fix |
|---|---|
| The field fails to render | The inline field option is missing, and it is declared as a required prop. Add options="{'inline_field': 'body_html'}" naming the companion field. |
| A conditional block never appears | Its filter domain could not be parsed, so the block was given a condition that is always false. Check the domain syntax on the block; a malformed one fails silently by design. |
| Checklists or videos are unavailable | Both are forced off in the extractor because they do not survive email clients. Expected, and not configurable from the view. |
| The sent mail looks different from the designer | What is sent is the inline version written into the companion field, not the design. Test with a real send; the designer is a design surface, not a preview of the final markup. |
| Templates I expect are missing | The template filter option is on. Remove it, or check which templates match the filter. |
| A customization broke after upgrading to Odoo 19 | The mailing designer was rebuilt on the current editor stack in Odoo 19. Redo the customization against the new widget rather than porting the old one. |
Mailing body editor vs the alternatives
| Widget | Best for | Key difference |
|---|---|---|
mass_mailing_html | Designing marketing email inside Odoo, with themes, snippets and a preview | A rich text editor reconfigured for email, writing a separate inline version for sending |
| html | Rich content that stays inside Odoo | No themes, no snippets, no inline version and no email restrictions |
| html_mail | Messages sent from a chatter or composer | Email-safe markup without the full design surface |
| html_composer_message | The full mail composer body | Composer-specific plugins rather than a design surface |
| mailing_filter | The mailing's audience | The recipients half of the same form, not the content |
Frequently asked questions
Why does the widget need a second field?+
Can I re-enable checklists or video?+
How do conditional blocks work?+
Why is the code view available here but not elsewhere?+
Does it exist before Odoo 19?+
Email campaigns run from the same place as your data
Designing, segmenting, sending and measuring in one system is the reason to do email marketing inside Odoo, and it only pays off if the setup is right. We implement Odoo Email Marketing end to end on versions 16 through 19.
Book a free consultation