mailing.mailing: fields, relations and API
The mailing.mailing model ("Mass Mailing") is a persistent model declared by the Email Marketing module, then extended by 4 other modules. It exposes 118 fields, 84 of them declared directly on the model; 12 fields from other models point to it. Below you will find every field with its technical name, type, label and relations, followed by an Odoo 19 JSON-2 API call.
Model identity
- Technical name
mailing.mailing- Label
- Mass Mailing
- Type
- Persistent (models.Model)
- SQL table
mailing_mailing- Origin module
- Email Marketing (
mass_mailing) - Extended by
- marketing_card, mass_mailing_crm, mass_mailing_sms, mass_mailing_sale
- Default order (_order)
calendar_date DESC- Display field (_rec_name)
subject- Inherits from (mixins)
- mail.threadmail.activity.mixinmail.render.mixinutm.source.mixin
Model fields
84 own fields, 28 inherited from mixins and 6 automatic ORM fields. Click a name to get a direct link to that field.
118 of 118 fields shown
| Technical name | Label | Type | Details |
|---|---|---|---|
| ab_testing_completed | Ab Testing Completed | boolean | related: |
| ab_testing_description | A/B Testing Description | html | computed |
| ab_testing_enabled | Allow A/B Testing If checked, recipients will be mailed only once for the whole campaign. This lets you send different mailings to randomly selected recipients and test the effectiveness of the mailings, without causing duplicate messages. | boolean | |
| ab_testing_is_winner_mailing | Is the Winner of its Campaign | boolean | computed |
| ab_testing_mailings_count | Ab Testing Mailings Count | integer | related: |
| ab_testing_mailings_sms_count | Ab Testing Mailings Sms Count | integer | related: added by SMS Marketing ( |
| ab_testing_pc | A/B Testing percentage Percentage of the contacts that will be mailed. Recipients will be chosen randomly. | integer | |
| ab_testing_schedule_datetime | Ab Testing Schedule Datetime | datetime | related: |
| ab_testing_sms_winner_selection | Ab Testing Sms Winner Selection | selection | related: added by SMS Marketing ( |
| ab_testing_winner_selection | Ab Testing Winner Selection | selection | related: |
| active | Active | boolean | |
| attachment_ids | Attachments | many2many | |
| body_arch | Body | html | |
| body_html | Body converted to be sent by mail | html | |
| body_plaintext | SMS Body | text | computed, stored added by SMS Marketing ( |
| bounced | Bounced | integer | computed |
| bounced_ratio | Bounced Ratio | float | computed |
| calendar_date | Calendar Date Date at which the mailing was or will be sent. | datetime | computed, stored |
| campaign_id | UTM Campaign | many2one | |
| canceled | Canceled | integer | computed |
| card_campaign_id | Card Campaign | many2one | added by Marketing Card ( |
| card_requires_sync_count | Card Requires Sync Count | integer | computed added by Marketing Card ( |
| clicked | Clicked | integer | computed |
| clicks_ratio | Number of Clicks | float | computed |
| color | Color Index | integer | |
| contact_list_ids | Mailing Lists | many2many | |
| crm_lead_count | Leads/Opportunities Count | integer | computed added by Mass mailing on lead / opportunities ( |
| delivered | Delivered | integer | computed |
| email_from | Send From | char | computed, stored |
| expected | Expected | integer | computed |
| failed | Failed | integer | computed |
| favorite | Favorite | boolean | |
| favorite_date | Favorite Date When this mailing was added in the favorites | datetime | computed, stored |
| is_ab_test_sent | Is Ab Test Sent | boolean | computed |
| is_body_empty | Is Body Empty | boolean | computed |
| keep_archives | Keep Archives | boolean | |
| kpi_mail_required | KPI mail required | boolean | |
| link_trackers_count | Link Trackers Count | integer | computed |
| mail_server_available | Mail Server Available Technical field used to know if the user has activated the outgoing mail server option in the settings | boolean | computed |
| mail_server_id | Mail Server Use a specific mail server in priority. Otherwise Odoo relies on the first outgoing mail server available (based on their sequencing) as it does for normal mails. | many2one | |
| mailing_domain | Domain | char | computed, stored |
| mailing_filter_count | # Favorite Filters | integer | computed |
| mailing_filter_domain | Favorite filter domain | char | related: |
| mailing_filter_id | Favorite Filter | many2one | computed, stored |
| mailing_model_id | Recipients Model | many2one→ ir.model | requiredcomputed, stored |
| mailing_model_name | Recipients Model Name | char | read-only related: |
| mailing_model_real | Recipients Real Model | char | computed |
| mailing_on_mailing_list | Based on Mailing Lists | boolean | computed |
| mailing_trace_ids | Emails Statistics | one2many | inverse: |
| mailing_type | Mailing Type | selection | required Values: |
| mailing_type_description | Mailing Type Description | char | computed |
| medium_id | Medium UTM Medium: delivery method (email, sms, ...) | many2one | computed, stored |
| next_departure | Scheduled date | datetime | computed |
| next_departure_is_past | Next Departure Is Past | boolean | computed |
| opened | Opened | integer | computed |
| opened_ratio | Opened Ratio | float | computed |
| pending | Pending | integer | computed |
| preview | Preview Catchy preview sentence that encourages recipients to open this email. In most inboxes, this is displayed next to the subject. Keep it empty if you prefer the first characters of your email content to appear instead. | char | |
| process | Process | integer | computed |
| received_ratio | Received Ratio | float | computed |
| replied | Replied | integer | computed |
| replied_ratio | Replied Ratio | float | computed |
| reply_to | Reply To Preferred Reply-To Address | char | computed, stored |
| reply_to_mode | Reply-To Mode Thread: replies go to target document. Email: replies are routed to a given email. | selection | computed, stored Values: |
| sale_invoiced_amount | Invoiced Amount | integer | computed added by Mass mailing on sale orders ( |
| sale_quotation_count | Quotation Count | integer | computed added by Mass mailing on sale orders ( |
| schedule_date | Scheduled for | datetime | computed, stored |
| schedule_type | Schedule | selection | required Values: |
| scheduled | Scheduled | integer | computed |
| sent | Sent | integer | computed |
| sent_date | Sent Date | datetime | |
| sms_allow_unsubscribe | Include opt-out link | boolean | added by SMS Marketing ( |
| sms_force_send | Send Directly Immediately send the SMS Mailing instead of queuing up. Use at your own risk. | boolean | added by SMS Marketing ( |
| sms_has_insufficient_credit | Insufficient IAP credits | boolean | computed added by SMS Marketing ( |
| sms_has_unregistered_account | Unregistered IAP account | boolean | computed added by SMS Marketing ( |
| sms_subject | Title For an email, the subject your recipients will see in their inbox. For an SMS, the internal title of the message. | char | related: added by SMS Marketing ( |
| sms_template_id | SMS Template | many2one | added by SMS Marketing ( |
| state | Status | selection | required Values: |
| subject | Subject | char | required |
| total | Total | integer | computed |
| use_exclusion_list | Use Exclusion List Prevent sending messages to blacklisted contacts. Disable only when absolutely necessary. | boolean | |
| use_leads | Use Leads | boolean | computed added by Mass mailing on lead / opportunities ( |
| user_id | Responsible | many2one | |
| warning_message | Warning Message Warning message displayed in the mailing form view | char | computed |
| activity_calendar_event_id | Next Activity Calendar Event | many2one | computed inherited from mail.activity.mixin |
| activity_date_deadline | Next Activity Deadline | date | read-onlycomputed inherited from mail.activity.mixin |
| activity_exception_decoration | Activity Exception Decoration Type of the exception activity on record. | selection | computed Values: inherited from mail.activity.mixin |
| activity_exception_icon | Icon Icon to indicate an exception activity. | char | computed inherited from mail.activity.mixin |
| activity_ids | Activities | one2many | inverse: inherited from mail.activity.mixin |
| activity_state | Activity State Status based on activities Overdue: Due date is already passed Today: Activity date is today Planned: Future activities. | selection | computed Values: inherited from mail.activity.mixin |
| activity_summary | Next Activity Summary | char | related: inherited from mail.activity.mixin |
| activity_type_icon | Activity Type Icon | char | related: inherited from mail.activity.mixin |
| activity_type_id | Next Activity Type | many2one | related: inherited from mail.activity.mixin |
| activity_user_id | Responsible User | many2one | read-onlycomputed inherited from mail.activity.mixin |
| has_message | Has Message | boolean | computed inherited from mail.thread |
| lang | Language Optional translation language (ISO code) to select when sending out an email. If not set, the main partner's language will be used. This should usually be a placeholder expression that provides the appropriate language, e.g. {{ object.partner_id.lang }}. | char | inherited from mail.render.mixin |
| message_attachment_count | Attachment Count | integer | computed inherited from mail.thread |
| message_follower_ids | Followers | one2many | inverse: inherited from mail.thread |
| message_has_error | Message Delivery error If checked, some messages have a delivery error. | boolean | computed inherited from mail.thread |
| message_has_error_counter | Number of errors Number of messages with delivery error | integer | computed inherited from mail.thread |
| message_has_sms_error | SMS Delivery error If checked, some messages have a delivery error. | boolean | computed inherited from mail.thread |
| message_ids | Messages | one2many | inverse: inherited from mail.thread |
| message_is_follower | Is Follower | boolean | computed inherited from mail.thread |
| message_needaction | Action Needed If checked, new messages require your attention. | boolean | computed inherited from mail.thread |
| message_needaction_counter | Number of Actions Number of messages requiring action | integer | computed inherited from mail.thread |
| message_partner_ids | Followers (Partners) | many2many | computed inherited from mail.thread |
| my_activity_date_deadline | My Activity Deadline | date | read-onlycomputed inherited from mail.activity.mixin |
| name | Name | char | related: inherited from utm.source.mixin |
| rating_ids | Ratings | one2many | inverse: inherited from mail.thread |
| render_model | Rendering Model | char | computed inherited from mail.render.mixin |
| source_id | Source | many2one | required inherited from utm.source.mixin |
| website_message_ids | Website Messages Website communication history | one2many | inverse: inherited from mail.thread |
| create_date | Created on | datetime | read-onlyautomatic |
| create_uid | Created by | many2one | read-onlyautomatic |
| display_name | Display Name | char | read-onlycomputedautomatic |
| id | ID | integer | read-onlyautomatic |
| write_date | Last Updated on | datetime | read-onlyautomatic |
| write_uid | Last Updated by | many2one | read-onlyautomatic |
Relations
Models linked from this model
- card.campaign: card_campaign_id
- ir.attachment: attachment_ids
- ir.mail_server: mail_server_id
- ir.model: mailing_model_id
- mailing.filter: mailing_filter_id
- mailing.list: contact_list_ids
- mailing.trace: mailing_trace_ids
- res.users: user_id
- sms.template: sms_template_id
- utm.campaign: campaign_id
- utm.medium: medium_id
Fields of other models pointing here
- link.tracker: mass_mailing_id
- link.tracker.click: mass_mailing_id
- mail.compose.message: mass_mailing_id
- mail.mail: mailing_id
- mailing.list: mailing_ids
- mailing.mailing.schedule.date: mass_mailing_id
- mailing.mailing.test: mass_mailing_id
- mailing.sms.test: mailing_id
- mailing.trace: mass_mailing_id
- sms.composer: mailing_id
- sms.sms: mailing_id
- utm.campaign: ab_testing_winner_mailing_id
Reading this model through the API
Odoo 19 JSON-2 API call reading the first five records with real fields of the model. Replace the instance, database and API key with your own.
curl -X POST "https://your-instance.odoo.com/json/2/mailing.mailing/search_read" \
-H "Authorization: bearer $ODOO_API_KEY" \
-H "X-Odoo-Database: your-db" \
-H "Content-Type: application/json" \
-d '{"domain":[],"fields":["subject","mailing_model_id","mailing_type","schedule_type","state"],"limit":5}'import requests
BASE_URL = "https://your-instance.odoo.com/json/2"
headers = {"Authorization": f"bearer {API_KEY}", "X-Odoo-Database": "your-db"}
res = requests.post(
f"{BASE_URL}/mailing.mailing/search_read",
headers=headers,
json={"domain": [], "fields": ["subject","mailing_model_id","mailing_type","schedule_type","state"], "limit": 5},
)
res.raise_for_status()
print(res.json())- External API access requires Odoo's Custom plan.
- XML-RPC and JSON-RPC will be removed in Odoo 22 (fall 2028): use JSON-2.
- The access rights and record rules of the key's user apply.
Cite this tool
Writing a tutorial, internal documentation or a forum answer? Copy this link to send your readers to the up-to-date reference.
<a href="https://aidoo.ai/en/outils/explorateur-modeles-odoo/mailing-mailing">mailing.mailing (Odoo 19.0)</a>Sources
Data verified on September 23, 2026 · Odoo 19.0 Community
Have an Odoo project, or want to put your ERP to work with AI? Let's talk
Implementation, custom module development, connecting Claude or ChatGPT to your data: tell us about your context and we will reply within 24 business hours.