| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/mail |
| GIT | |
| GIT | https://github.com/OCA/mail.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/mail/tree/19.0/mail_tracking |
| VERSION | |
| VERSION | 1.0.4 |
| CATEGORY | |
| CATEGORY | Social Network |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA) |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA) |
| COMMITTERS | |
| COMMITTERS | Yann Papouin, Weblate, OCA-git-bot, oca-ci, Pilar Vargas, Quoc - Pham Ngoc |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/mail |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:40:50 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - base - base_setup - web - bus - web_tour - html_editor |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | This module shows email notification tracking status for any messages in mail thread (chatter). Each notified partner will have an intuitive icon just right to his name. |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
res_config_settings_view_form |
res.config.settings.view.form.inherit.mail.tracking | res.config.settings | xpath | Inherits mail.res_config_settings_view_form |
view_mail_tracking_email_form |
mail.tracking.email.form | mail.tracking.email | form | New |
view_mail_tracking_email_search |
mail.tracking.email.search | mail.tracking.email | search | New |
view_mail_tracking_email_tree |
mail.tracking.email.list | mail.tracking.email | list | New |
view_mail_tracking_event_form |
mail.tracking.event.form | mail.tracking.event | form | New |
view_mail_tracking_event_search |
mail.tracking.event.search | mail.tracking.event | search | New |
view_mail_tracking_event_tree |
mail.tracking.event.list | mail.tracking.event | list | New |
view_message_form |
mail.message | field | Inherits mail.mail_message_view_form | |
view_partner_form |
Partner Form with tracking emails | res.partner | div | Inherits base.view_partner_form |
view_res_partner_filter |
Filter bounced partners | res.partner | filter | Inherits base.view_res_partner_filter |
No new fields.
Public methods (1)send_email(self, message, mail_server_id=None, smtp_server=None, smtp_port=None, smtp_user=None, smtp_password=None, smtp_encryption=None, smtp_ssl_certificate=None, smtp_ssl_private_key=None, smtp_debug=False, smtp_session=None)
No new fields.
Public methods (4)create(self, vals_list)
get_aliases(self)
unlink(self)
write(self, vals)
No new fields.
Public methods (3)create(self, vals_list)
unlink(self)
write(self, vals)
email_bounced
Boolean
index=True
email_bounced_set(self, tracking_emails, reason, event=None)
write(self, vals)
No new fields.
Public methods (0)No public methods.
email_cc
Char
help='Additional recipients that receive a "Carbon Copy" of the e-mail'
args: 'Cc'
email_to
Char
help='Raw TO recipients'
args: 'To'
is_failed_message
Boolean
compute='_compute_is_failed_message'
search='_search_is_failed_message'
mail_tracking_ids
One2many → mail.tracking.email
bypass_search_access=True
comodel_name='mail.tracking.email'
inverse_name='mail_message_id'
string='Mail Trackings'
mail_tracking_needs_action
Boolean
default=False
help='The message tracking will be considered to filter tracking issues'
get_failed_count(self)
get_failed_messages(self)
get_failed_messsage_info(self, ids, model)
get_failed_states(self)
set_need_action_done(self)
tracking_status(self)
failed_message_ids
One2many → mail.message
domain=<expr>
string='Failed Messages'
args: 'mail.message', 'res_id'
get_view(self, view_id=None, view_type='form', **options)
bounce_description
Char
readonly=True
bounce_type
Char
readonly=True
date
Date
compute='_compute_date'
readonly=True
store=True
display_name
Char
compute='_compute_tracking_display_name'
readonly=True
store=True
error_description
Char
readonly=True
error_smtp_server
Char
readonly=True
string='Error SMTP server'
error_type
Char
readonly=True
mail_id
Many2one → mail.mail
comodel_name='mail.mail'
readonly=True
string='Email'
mail_message_id
Many2one → mail.message
comodel_name='mail.message'
index=True
readonly=True
message_id
Char
compute='_compute_message_id'
name
Char
index=True
readonly=True
string='Subject'
partner_id
Many2one → res.partner
comodel_name='res.partner'
readonly=True
string='Partner'
recipient
Char
readonly=True
string='Recipient email'
recipient_address
Char
compute='_compute_recipient_address'
index=True
readonly=True
store=True
string='Recipient email address'
sender
Char
readonly=True
string='Sender email'
state
Selection
default=False
help=" * The 'Error' status indicates that there was an error when trying to sent the email, for example, 'No valid recipient'\n * The 'Sent' status indicates that message was succesfully sent via outgoing email server (SMTP).\n * The 'Delivered' status indicates that message was succesfully delivered to recipient Mail Exchange (MX) server.\n * The 'Opened' status indicates that message was opened or clicked by recipient.\n * The 'Rejected' status indicates that recipient email address is blacklisted by outgoing email server (SMTP). It is recomended to delete this email address.\n * The 'Spam' status indicates that outgoing email server (SMTP) consider this message as spam.\n * The 'Unsubscribed' status indicates that recipient has requested to be unsubscribed from this message.\n * The 'Bounced' status indicates that message was bounced by recipient Mail Exchange (MX) server.\n * The 'Soft bounced' status indicates that message was soft bounced by recipient Mail Exchange (MX) server.\n"
index=True
readonly=True
args: [('error', 'Error'), ('deferred', 'Deferred'), ('sent', 'Sent'), ('delivered', 'Delivered'), ('opened', 'Opened'), ('rejected', 'Rejected'), ('spam', 'Spam'), ('unsub', 'Unsubscribed'), ('bounced', 'Bounced'), ('soft-bounced', 'Soft bounced')]
time
Datetime
index=True
readonly=True
timestamp
Float
digits='MailTracking Timestamp'
readonly=True
string='UTC timestamp'
token
Char
default=<expr>
groups='base.group_system'
readonly=True
string='Security Token'
tracking_event_ids
One2many → mail.tracking.event
comodel_name='mail.tracking.event'
inverse_name='tracking_email_id'
readonly=True
string='Tracking events'
create(self, vals_list)
email_is_bounced(self, email)
email_score(self)
email_score_from_email(self, email)
event_create(self, event_type, metadata)
read(self, fields=None, load='_classic_read')
smtp_error(self, mail_server, smtp_server, exception)
tracking_img_add(self, email)
write(self, vals)
date
Date
compute='_compute_date'
readonly=True
store=True
error_description
Char
readonly=True
error_details
Text
readonly=True
error_type
Char
readonly=True
event_type
Selection
readonly=True
selection=[('sent', 'Sent'), ('delivered', 'Delivered'), ('deferral', 'Deferral'), ('hard_bounce', 'Hard bounce'), ('soft_bounce', 'Soft bounce'), ('open', 'Open'), ('click', 'Clicked'), ('spam', 'Spam'), ('unsub', 'Unsubscribed'), ('reject', 'Rejected')]
ip
Char
readonly=True
string='User IP'
mobile
Boolean
readonly=True
string='Is mobile?'
os_family
Char
readonly=True
string='Operating system family'
recipient
Char
readonly=True
recipient_address
Char
compute='_compute_recipient_address'
index=True
readonly=True
store=True
string='Recipient email address'
smtp_server
Char
readonly=True
string='SMTP server'
time
Datetime
readonly=True
timestamp
Float
digits='MailTracking Timestamp'
readonly=True
string='UTC timestamp'
tracking_email_id
Many2one → mail.tracking.email
comodel_name='mail.tracking.email'
index=True
ondelete='cascade'
readonly=True
required=True
string='Message'
ua_family
Char
readonly=True
string='User agent family'
ua_type
Char
readonly=True
string='User agent type'
url
Char
readonly=True
string='Clicked URL'
user_agent
Char
readonly=True
user_country_id
Many2one → res.country
comodel_name='res.country'
readonly=True
string='User country'
process_click(self, tracking_email, metadata)
process_deferral(self, tracking_email, metadata)
process_delivered(self, tracking_email, metadata)
process_hard_bounce(self, tracking_email, metadata)
process_open(self, tracking_email, metadata)
process_reject(self, tracking_email, metadata)
process_sent(self, tracking_email, metadata)
process_soft_bounce(self, tracking_email, metadata)
process_spam(self, tracking_email, metadata)
process_unsub(self, tracking_email, metadata)
mail_tracking_show_aliases
Boolean
default=False
string='Show Aliases in Mail Tracking'
No public methods.
mail_tracking_email_max_age_days
Integer
config_parameter='mail_tracking.mail_tracking_email_max_age_days'
help='If set as positive integer enables the deletion of old mail tracking records to reduce the database size.'
args: 'Max age in days of mail tracking email records'
mail_tracking_show_aliases
Boolean
readonly=False
related='company_id.mail_tracking_show_aliases'
No public methods.
email_score
Float
compute='_compute_email_score_and_count'
readonly=True
tracking_emails_count
Integer
compute='_compute_email_score_and_count'
readonly=True
No public methods.
No new fields.
Public methods (0)No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/mail |
| GIT | |
| GIT | https://github.com/OCA/mail.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/mail/tree/18.0/mail_tracking |
| VERSION | |
| VERSION | 1.0.11 |
| CATEGORY | |
| CATEGORY | Social Network |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA) |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA) |
| COMMITTERS | |
| COMMITTERS | Akim Juillerat, Carlos Lopez, Yann Papouin, Weblate, OCA-git-bot, tarteo, Iván Todorovich, oca-ci, Carlos Roca, CarlosRoca13, Rémi - Le Filament, augusto-weiss, trisdoan |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/mail |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:30:18 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - base - base_setup - web - bus - web_tour - html_editor |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | This module shows email notification tracking status for any messages in mail thread (chatter). Each notified partner will have an intuitive icon just right to his name. |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
res_config_settings_view_form |
res.config.settings.view.form.inherit.mail.tracking | res.config.settings | xpath | Inherits mail.res_config_settings_view_form |
view_mail_tracking_email_form |
mail.tracking.email.form | mail.tracking.email | form | New |
view_mail_tracking_email_search |
mail.tracking.email.search | mail.tracking.email | search | New |
view_mail_tracking_email_tree |
mail.tracking.email.list | mail.tracking.email | list | New |
view_mail_tracking_event_form |
mail.tracking.event.form | mail.tracking.event | form | New |
view_mail_tracking_event_search |
mail.tracking.event.search | mail.tracking.event | search | New |
view_mail_tracking_event_tree |
mail.tracking.event.list | mail.tracking.event | list | New |
view_message_form |
mail.message | field | Inherits mail.mail_message_view_form | |
view_partner_form |
Partner Form with tracking emails | res.partner | div | Inherits base.view_partner_form |
view_res_partner_filter |
Filter bounced partners | res.partner | filter | Inherits base.view_res_partner_filter |
No new fields.
Public methods (2)build_email(self, email_from, email_to, subject, body, email_cc=None, email_bcc=None, reply_to=False, attachments=None, message_id=None, references=None, object_id=False, subtype='plain', headers=None, body_alternative=None, subtype_alternative='plain')
send_email(self, message, mail_server_id=None, smtp_server=None, smtp_port=None, smtp_user=None, smtp_password=None, smtp_encryption=None, smtp_ssl_certificate=None, smtp_ssl_private_key=None, smtp_debug=False, smtp_session=None)
No new fields.
Public methods (4)create(self, vals_list)
get_aliases(self)
unlink(self)
write(self, vals)
No new fields.
Public methods (3)create(self, vals_list)
unlink(self)
write(self, vals)
email_bounced
Boolean
index=True
email_bounced_set(self, tracking_emails, reason, event=None)
write(self, vals)
No new fields.
Public methods (0)No public methods.
email_cc
Char
help='Additional recipients that receive a "Carbon Copy" of the e-mail'
args: 'Cc'
email_to
Char
help='Raw TO recipients'
args: 'To'
is_failed_message
Boolean
compute='_compute_is_failed_message'
search='_search_is_failed_message'
mail_tracking_ids
One2many → mail.tracking.email
auto_join=True
comodel_name='mail.tracking.email'
inverse_name='mail_message_id'
string='Mail Trackings'
mail_tracking_needs_action
Boolean
default=False
help='The message tracking will be considered to filter tracking issues'
get_failed_count(self)
get_failed_messages(self)
get_failed_messsage_info(self, ids, model)
get_failed_states(self)
set_need_action_done(self)
tracking_status(self)
No new fields.
Public methods (2)default_get(self, fields)
resend_mail_action(self)
failed_message_ids
One2many → mail.message
domain=<expr>
string='Failed Messages'
args: 'mail.message', 'res_id'
get_view(self, view_id=None, view_type='form', **options)
bounce_description
Char
readonly=True
bounce_type
Char
readonly=True
date
Date
compute='_compute_date'
readonly=True
store=True
display_name
Char
compute='_compute_tracking_display_name'
readonly=True
store=True
error_description
Char
readonly=True
error_smtp_server
Char
readonly=True
string='Error SMTP server'
error_type
Char
readonly=True
mail_id
Many2one → mail.mail
comodel_name='mail.mail'
readonly=True
string='Email'
mail_message_id
Many2one → mail.message
comodel_name='mail.message'
index=True
readonly=True
message_id
Char
compute='_compute_message_id'
name
Char
index=True
readonly=True
string='Subject'
partner_id
Many2one → res.partner
comodel_name='res.partner'
readonly=True
string='Partner'
recipient
Char
readonly=True
string='Recipient email'
recipient_address
Char
compute='_compute_recipient_address'
index=True
readonly=True
store=True
string='Recipient email address'
sender
Char
readonly=True
string='Sender email'
state
Selection
default=False
help=" * The 'Error' status indicates that there was an error when trying to sent the email, for example, 'No valid recipient'\n * The 'Sent' status indicates that message was succesfully sent via outgoing email server (SMTP).\n * The 'Delivered' status indicates that message was succesfully delivered to recipient Mail Exchange (MX) server.\n * The 'Opened' status indicates that message was opened or clicked by recipient.\n * The 'Rejected' status indicates that recipient email address is blacklisted by outgoing email server (SMTP). It is recomended to delete this email address.\n * The 'Spam' status indicates that outgoing email server (SMTP) consider this message as spam.\n * The 'Unsubscribed' status indicates that recipient has requested to be unsubscribed from this message.\n * The 'Bounced' status indicates that message was bounced by recipient Mail Exchange (MX) server.\n * The 'Soft bounced' status indicates that message was soft bounced by recipient Mail Exchange (MX) server.\n"
index=True
readonly=True
args: [('error', 'Error'), ('deferred', 'Deferred'), ('sent', 'Sent'), ('delivered', 'Delivered'), ('opened', 'Opened'), ('rejected', 'Rejected'), ('spam', 'Spam'), ('unsub', 'Unsubscribed'), ('bounced', 'Bounced'), ('soft-bounced', 'Soft bounced')]
time
Datetime
index=True
readonly=True
timestamp
Float
digits='MailTracking Timestamp'
readonly=True
string='UTC timestamp'
token
Char
default=<expr>
groups='base.group_system'
readonly=True
string='Security Token'
tracking_event_ids
One2many → mail.tracking.event
comodel_name='mail.tracking.event'
inverse_name='tracking_email_id'
readonly=True
string='Tracking events'
create(self, vals_list)
email_is_bounced(self, email)
email_score(self)
email_score_from_email(self, email)
event_create(self, event_type, metadata)
read(self, fields=None, load='_classic_read')
smtp_error(self, mail_server, smtp_server, exception)
tracking_img_add(self, email)
write(self, vals)
date
Date
compute='_compute_date'
readonly=True
store=True
error_description
Char
readonly=True
error_details
Text
readonly=True
error_type
Char
readonly=True
event_type
Selection
readonly=True
selection=[('sent', 'Sent'), ('delivered', 'Delivered'), ('deferral', 'Deferral'), ('hard_bounce', 'Hard bounce'), ('soft_bounce', 'Soft bounce'), ('open', 'Open'), ('click', 'Clicked'), ('spam', 'Spam'), ('unsub', 'Unsubscribed'), ('reject', 'Rejected')]
ip
Char
readonly=True
string='User IP'
mobile
Boolean
readonly=True
string='Is mobile?'
os_family
Char
readonly=True
string='Operating system family'
recipient
Char
readonly=True
recipient_address
Char
compute='_compute_recipient_address'
index=True
readonly=True
store=True
string='Recipient email address'
smtp_server
Char
readonly=True
string='SMTP server'
time
Datetime
readonly=True
timestamp
Float
digits='MailTracking Timestamp'
readonly=True
string='UTC timestamp'
tracking_email_id
Many2one → mail.tracking.email
comodel_name='mail.tracking.email'
index=True
ondelete='cascade'
readonly=True
required=True
string='Message'
ua_family
Char
readonly=True
string='User agent family'
ua_type
Char
readonly=True
string='User agent type'
url
Char
readonly=True
string='Clicked URL'
user_agent
Char
readonly=True
user_country_id
Many2one → res.country
comodel_name='res.country'
readonly=True
string='User country'
process_click(self, tracking_email, metadata)
process_deferral(self, tracking_email, metadata)
process_delivered(self, tracking_email, metadata)
process_hard_bounce(self, tracking_email, metadata)
process_open(self, tracking_email, metadata)
process_reject(self, tracking_email, metadata)
process_sent(self, tracking_email, metadata)
process_soft_bounce(self, tracking_email, metadata)
process_spam(self, tracking_email, metadata)
process_unsub(self, tracking_email, metadata)
mail_tracking_show_aliases
Boolean
default=False
string='Show Aliases in Mail Tracking'
No public methods.
mail_tracking_email_max_age_days
Integer
config_parameter='mail_tracking.mail_tracking_email_max_age_days'
help='If set as positive integer enables the deletion of old mail tracking records to reduce the database size.'
args: 'Max age in days of mail tracking email records'
mail_tracking_show_aliases
Boolean
readonly=False
related='company_id.mail_tracking_show_aliases'
No public methods.
email_score
Float
compute='_compute_email_score_and_count'
search='_search_email_score'
tracking_emails_count
Integer
compute='_compute_email_score_and_count'
readonly=True
No public methods.
No new fields.
Public methods (0)No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/social |
| GIT | |
| GIT | https://github.com/OCA/social.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/social/tree/17.0/mail_tracking |
| VERSION | |
| VERSION | 1.0.5 |
| CATEGORY | |
| CATEGORY | Social Network |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA) |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA) |
| COMMITTERS | |
| COMMITTERS | Pedro M. Baeza, Carlos Lopez, Pierre Verkest, Weblate, OCA-git-bot, David, oca-ci, CarlosRoca13, trisdoan |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/social |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:20:09 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - base - base_setup - web - bus - web_tour |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | This module shows email notification tracking status for any messages in mail thread (chatter). Each notified partner will have an intuitive icon just right to his name. |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
res_config_settings_view_form |
res.config.settings.view.form.inherit.mail.tracking | res.config.settings | xpath | Inherits mail.res_config_settings_view_form |
view_mail_tracking_email_form |
mail.tracking.email.form | mail.tracking.email | form | New |
view_mail_tracking_email_search |
mail.tracking.email.search | mail.tracking.email | search | New |
view_mail_tracking_email_tree |
mail.tracking.email.tree | mail.tracking.email | tree | New |
view_mail_tracking_event_form |
mail.tracking.event.form | mail.tracking.event | form | New |
view_mail_tracking_event_search |
mail.tracking.event.search | mail.tracking.event | search | New |
view_mail_tracking_event_tree |
mail.tracking.event.tree | mail.tracking.event | tree | New |
view_message_form |
mail.message | field | Inherits mail.mail_message_view_form | |
view_partner_form |
Partner Form with tracking emails | res.partner | div | Inherits base.view_partner_form |
view_res_partner_filter |
Filter bounced partners | res.partner | filter | Inherits base.view_res_partner_filter |
No new fields.
Public methods (2)build_email(self, email_from, email_to, subject, body, email_cc=None, email_bcc=None, reply_to=False, attachments=None, message_id=None, references=None, object_id=False, subtype='plain', headers=None, body_alternative=None, subtype_alternative='plain')
send_email(self, message, mail_server_id=None, smtp_server=None, smtp_port=None, smtp_user=None, smtp_password=None, smtp_encryption=None, smtp_ssl_certificate=None, smtp_ssl_private_key=None, smtp_debug=False, smtp_session=None)
No new fields.
Public methods (4)create(self, vals_list)
get_aliases(self)
unlink(self)
write(self, vals)
No new fields.
Public methods (3)create(self, vals_list)
unlink(self)
write(self, vals)
email_bounced
Boolean
index=True
email_bounced_set(self, tracking_emails, reason, event=None)
write(self, vals)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
email_cc
Char
help='Additional recipients that receive a "Carbon Copy" of the e-mail'
args: 'Cc'
email_to
Char
help='Raw TO recipients'
args: 'To'
is_failed_message
Boolean
compute='_compute_is_failed_message'
search='_search_is_failed_message'
mail_tracking_ids
One2many → mail.tracking.email
auto_join=True
comodel_name='mail.tracking.email'
inverse_name='mail_message_id'
string='Mail Trackings'
mail_tracking_needs_action
Boolean
default=False
help='The message tracking will be considered to filter tracking issues'
get_failed_count(self)
get_failed_messages(self)
get_failed_messsage_info(self, ids, model)
get_failed_states(self)
set_all_as_reviewed(self)
set_need_action_done(self)
tracking_status(self)
No new fields.
Public methods (2)default_get(self, fields)
resend_mail_action(self)
failed_message_ids
One2many → mail.message
domain=<expr>
string='Failed Messages'
args: 'mail.message', 'res_id'
get_view(self, view_id=None, view_type='form', **options)
bounce_description
Char
readonly=True
bounce_type
Char
readonly=True
date
Date
compute='_compute_date'
readonly=True
store=True
display_name
Char
compute='_compute_tracking_display_name'
readonly=True
store=True
error_description
Char
readonly=True
error_smtp_server
Char
readonly=True
string='Error SMTP server'
error_type
Char
readonly=True
mail_id
Many2one → mail.mail
comodel_name='mail.mail'
readonly=True
string='Email'
mail_message_id
Many2one → mail.message
comodel_name='mail.message'
index=True
readonly=True
message_id
Char
compute='_compute_message_id'
name
Char
index=True
readonly=True
string='Subject'
partner_id
Many2one → res.partner
comodel_name='res.partner'
readonly=True
string='Partner'
recipient
Char
readonly=True
string='Recipient email'
recipient_address
Char
compute='_compute_recipient_address'
index=True
readonly=True
store=True
string='Recipient email address'
sender
Char
readonly=True
string='Sender email'
state
Selection
default=False
help=" * The 'Error' status indicates that there was an error when trying to sent the email, for example, 'No valid recipient'\n * The 'Sent' status indicates that message was succesfully sent via outgoing email server (SMTP).\n * The 'Delivered' status indicates that message was succesfully delivered to recipient Mail Exchange (MX) server.\n * The 'Opened' status indicates that message was opened or clicked by recipient.\n * The 'Rejected' status indicates that recipient email address is blacklisted by outgoing email server (SMTP). It is recomended to delete this email address.\n * The 'Spam' status indicates that outgoing email server (SMTP) consider this message as spam.\n * The 'Unsubscribed' status indicates that recipient has requested to be unsubscribed from this message.\n * The 'Bounced' status indicates that message was bounced by recipient Mail Exchange (MX) server.\n * The 'Soft bounced' status indicates that message was soft bounced by recipient Mail Exchange (MX) server.\n"
index=True
readonly=True
args: [('error', 'Error'), ('deferred', 'Deferred'), ('sent', 'Sent'), ('delivered', 'Delivered'), ('opened', 'Opened'), ('rejected', 'Rejected'), ('spam', 'Spam'), ('unsub', 'Unsubscribed'), ('bounced', 'Bounced'), ('soft-bounced', 'Soft bounced')]
time
Datetime
index=True
readonly=True
timestamp
Float
digits='MailTracking Timestamp'
readonly=True
string='UTC timestamp'
token
Char
default=<expr>
groups='base.group_system'
readonly=True
string='Security Token'
tracking_event_ids
One2many → mail.tracking.event
comodel_name='mail.tracking.event'
inverse_name='tracking_email_id'
readonly=True
string='Tracking events'
check_access_rule(self, operation)
create(self, vals_list)
email_is_bounced(self, email)
email_score(self)
email_score_from_email(self, email)
event_create(self, event_type, metadata)
event_process(self, request, post, metadata, event_type=None)
read(self, fields=None, load='_classic_read')
smtp_error(self, mail_server, smtp_server, exception)
tracking_img_add(self, email)
write(self, vals)
date
Date
compute='_compute_date'
readonly=True
store=True
error_description
Char
readonly=True
error_details
Text
readonly=True
error_type
Char
readonly=True
event_type
Selection
readonly=True
selection=[('sent', 'Sent'), ('delivered', 'Delivered'), ('deferral', 'Deferral'), ('hard_bounce', 'Hard bounce'), ('soft_bounce', 'Soft bounce'), ('open', 'Open'), ('click', 'Clicked'), ('spam', 'Spam'), ('unsub', 'Unsubscribed'), ('reject', 'Rejected')]
ip
Char
readonly=True
string='User IP'
mobile
Boolean
readonly=True
string='Is mobile?'
os_family
Char
readonly=True
string='Operating system family'
recipient
Char
readonly=True
recipient_address
Char
compute='_compute_recipient_address'
index=True
readonly=True
store=True
string='Recipient email address'
smtp_server
Char
readonly=True
string='SMTP server'
time
Datetime
readonly=True
timestamp
Float
digits='MailTracking Timestamp'
readonly=True
string='UTC timestamp'
tracking_email_id
Many2one → mail.tracking.email
comodel_name='mail.tracking.email'
index=True
ondelete='cascade'
readonly=True
required=True
string='Message'
ua_family
Char
readonly=True
string='User agent family'
ua_type
Char
readonly=True
string='User agent type'
url
Char
readonly=True
string='Clicked URL'
user_agent
Char
readonly=True
user_country_id
Many2one → res.country
comodel_name='res.country'
readonly=True
string='User country'
process_click(self, tracking_email, metadata)
process_deferral(self, tracking_email, metadata)
process_delivered(self, tracking_email, metadata)
process_hard_bounce(self, tracking_email, metadata)
process_open(self, tracking_email, metadata)
process_reject(self, tracking_email, metadata)
process_sent(self, tracking_email, metadata)
process_soft_bounce(self, tracking_email, metadata)
process_spam(self, tracking_email, metadata)
process_unsub(self, tracking_email, metadata)
mail_tracking_show_aliases
Boolean
default=False
string='Show Aliases in Mail Tracking'
No public methods.
mail_tracking_email_max_age_days
Integer
config_parameter='mail_tracking.mail_tracking_email_max_age_days'
help='If set as positive integer enables the deletion of old mail tracking records to reduce the database size.'
args: 'Max age in days of mail tracking email records'
mail_tracking_show_aliases
Boolean
readonly=False
related='company_id.mail_tracking_show_aliases'
No public methods.
email_score
Float
compute='_compute_email_score_and_count'
readonly=True
tracking_emails_count
Integer
compute='_compute_email_score_and_count'
readonly=True
No public methods.
No new fields.
Public methods (0)No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/social |
| GIT | |
| GIT | https://github.com/OCA/social.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/social/tree/16.0/mail_tracking |
| VERSION | |
| VERSION | 1.0.8 |
| CATEGORY | |
| CATEGORY | Social Network |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA) |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA) |
| COMMITTERS | |
| COMMITTERS | Holger Brunn, Weblate, OCA-git-bot, David, oca-ci, payen000, CarlosRoca13, Vincent Hatakeyama, NiChrDeuse |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/social |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:53:55 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - base - base_setup - web - bus - web_tour |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
view_mail_tracking_email_form |
mail.tracking.email.form | mail.tracking.email | form | New |
view_mail_tracking_email_search |
mail.tracking.email.search | mail.tracking.email | search | New |
view_mail_tracking_email_tree |
mail.tracking.email.tree | mail.tracking.email | tree | New |
view_mail_tracking_event_form |
mail.tracking.event.form | mail.tracking.event | form | New |
view_mail_tracking_event_search |
mail.tracking.event.search | mail.tracking.event | search | New |
view_mail_tracking_event_tree |
mail.tracking.event.tree | mail.tracking.event | tree | New |
view_message_form |
mail.message | field | Inherits mail.mail_message_view_form | |
view_partner_form |
Partner Form with tracking emails | res.partner | div | Inherits base.view_partner_form |
view_res_partner_filter |
Filter bounced partners | res.partner | filter | Inherits base.view_res_partner_filter |
No new fields.
Public methods (3)create(self, vals_list)
unlink(self)
write(self, vals)
No new fields.
Public methods (2)build_email(self, email_from, email_to, subject, body, email_cc=None, email_bcc=None, reply_to=False, attachments=None, message_id=None, references=None, object_id=False, subtype='plain', headers=None, body_alternative=None, subtype_alternative='plain')
send_email(self, message, mail_server_id=None, smtp_server=None, smtp_port=None, smtp_user=None, smtp_password=None, smtp_encryption=None, smtp_ssl_certificate=None, smtp_ssl_private_key=None, smtp_debug=False, smtp_session=None)
No new fields.
Public methods (4)create(self, vals_list)
get_aliases(self)
unlink(self)
write(self, vals)
email_bounced
Boolean
index=True
email_bounced_set(self, tracking_emails, reason, event=None)
write(self, vals)
No new fields.
Public methods (0)No public methods.
email_cc
Char
help='Additional recipients that receive a "Carbon Copy" of the e-mail'
args: 'Cc'
email_to
Char
help='Raw TO recipients'
args: 'To'
is_failed_message
Boolean
compute='_compute_is_failed_message'
search='_search_is_failed_message'
mail_tracking_ids
One2many → mail.tracking.email
auto_join=True
comodel_name='mail.tracking.email'
inverse_name='mail_message_id'
string='Mail Trackings'
mail_tracking_needs_action
Boolean
default=False
help='The message tracking will be considered to filter tracking issues'
get_failed_count(self)
get_failed_messages(self)
get_failed_messsage_info(self, ids, model)
get_failed_states(self)
message_format(self, format_reply=True)
set_all_as_reviewed(self)
set_need_action_done(self)
tracking_status(self)
No new fields.
Public methods (2)default_get(self, fields)
resend_mail_action(self)
failed_message_ids
One2many → mail.message
domain=<expr>
string='Failed Messages'
args: 'mail.message', 'res_id'
get_view(self, view_id=None, view_type='form', **options)
bounce_description
Char
readonly=True
bounce_type
Char
readonly=True
date
Date
compute='_compute_date'
readonly=True
store=True
display_name
Char
compute='_compute_tracking_display_name'
readonly=True
store=True
error_description
Char
readonly=True
error_smtp_server
Char
readonly=True
string='Error SMTP server'
error_type
Char
readonly=True
mail_id
Many2one → mail.mail
comodel_name='mail.mail'
readonly=True
string='Email'
mail_message_id
Many2one → mail.message
comodel_name='mail.message'
index=True
readonly=True
message_id
Char
compute='_compute_message_id'
name
Char
index=True
readonly=True
string='Subject'
partner_id
Many2one → res.partner
comodel_name='res.partner'
readonly=True
string='Partner'
recipient
Char
readonly=True
string='Recipient email'
recipient_address
Char
compute='_compute_recipient_address'
index=True
readonly=True
store=True
string='Recipient email address'
sender
Char
readonly=True
string='Sender email'
state
Selection
default=False
help=" * The 'Error' status indicates that there was an error when trying to sent the email, for example, 'No valid recipient'\n * The 'Sent' status indicates that message was succesfully sent via outgoing email server (SMTP).\n * The 'Delivered' status indicates that message was succesfully delivered to recipient Mail Exchange (MX) server.\n * The 'Opened' status indicates that message was opened or clicked by recipient.\n * The 'Rejected' status indicates that recipient email address is blacklisted by outgoing email server (SMTP). It is recomended to delete this email address.\n * The 'Spam' status indicates that outgoing email server (SMTP) consider this message as spam.\n * The 'Unsubscribed' status indicates that recipient has requested to be unsubscribed from this message.\n * The 'Bounced' status indicates that message was bounced by recipient Mail Exchange (MX) server.\n * The 'Soft bounced' status indicates that message was soft bounced by recipient Mail Exchange (MX) server.\n"
index=True
readonly=True
args: [('error', 'Error'), ('deferred', 'Deferred'), ('sent', 'Sent'), ('delivered', 'Delivered'), ('opened', 'Opened'), ('rejected', 'Rejected'), ('spam', 'Spam'), ('unsub', 'Unsubscribed'), ('bounced', 'Bounced'), ('soft-bounced', 'Soft bounced')]
time
Datetime
index=True
readonly=True
timestamp
Float
digits='MailTracking Timestamp'
readonly=True
string='UTC timestamp'
token
Char
default=<expr>
groups='base.group_system'
readonly=True
string='Security Token'
tracking_event_ids
One2many → mail.tracking.event
comodel_name='mail.tracking.event'
inverse_name='tracking_email_id'
readonly=True
string='Tracking events'
check_access_rule(self, operation)
create(self, vals_list)
email_is_bounced(self, email)
email_score(self)
email_score_from_email(self, email)
event_create(self, event_type, metadata)
event_process(self, request, post, metadata, event_type=None)
read(self, fields=None, load='_classic_read')
smtp_error(self, mail_server, smtp_server, exception)
tracking_img_add(self, email)
write(self, vals)
date
Date
compute='_compute_date'
readonly=True
store=True
error_description
Char
readonly=True
error_details
Text
readonly=True
error_type
Char
readonly=True
event_type
Selection
readonly=True
selection=[('sent', 'Sent'), ('delivered', 'Delivered'), ('deferral', 'Deferral'), ('hard_bounce', 'Hard bounce'), ('soft_bounce', 'Soft bounce'), ('open', 'Open'), ('click', 'Clicked'), ('spam', 'Spam'), ('unsub', 'Unsubscribed'), ('reject', 'Rejected')]
ip
Char
readonly=True
string='User IP'
mobile
Boolean
readonly=True
string='Is mobile?'
os_family
Char
readonly=True
string='Operating system family'
recipient
Char
readonly=True
recipient_address
Char
compute='_compute_recipient_address'
index=True
readonly=True
store=True
string='Recipient email address'
smtp_server
Char
readonly=True
string='SMTP server'
time
Datetime
readonly=True
timestamp
Float
digits='MailTracking Timestamp'
readonly=True
string='UTC timestamp'
tracking_email_id
Many2one → mail.tracking.email
comodel_name='mail.tracking.email'
index=True
ondelete='cascade'
readonly=True
required=True
string='Message'
ua_family
Char
readonly=True
string='User agent family'
ua_type
Char
readonly=True
string='User agent type'
url
Char
readonly=True
string='Clicked URL'
user_agent
Char
readonly=True
user_country_id
Many2one → res.country
comodel_name='res.country'
readonly=True
string='User country'
process_click(self, tracking_email, metadata)
process_deferral(self, tracking_email, metadata)
process_delivered(self, tracking_email, metadata)
process_hard_bounce(self, tracking_email, metadata)
process_open(self, tracking_email, metadata)
process_reject(self, tracking_email, metadata)
process_sent(self, tracking_email, metadata)
process_soft_bounce(self, tracking_email, metadata)
process_spam(self, tracking_email, metadata)
process_unsub(self, tracking_email, metadata)
email_score
Float
compute='_compute_email_score_and_count'
readonly=True
tracking_emails_count
Integer
compute='_compute_email_score_and_count'
readonly=True
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/social |
| GIT | |
| GIT | https://github.com/OCA/social.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/social/tree/15.0/mail_tracking |
| VERSION | |
| VERSION | 3.1.0 |
| CATEGORY | |
| CATEGORY | Social Network |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA) |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA) |
| COMMITTERS | |
| COMMITTERS | GitHub, OCA Transbot, sergio-teruel, Thierry Ducrest, Weblate, OCA-git-bot, David, oca-ci, Jasmin Solanki, jb, dhx |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/social |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:46:40 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - base - base_setup - web - bus - web_tour |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
view_mail_tracking_email_form |
mail.tracking.email.form | mail.tracking.email | form | New |
view_mail_tracking_email_search |
mail.tracking.email.search | mail.tracking.email | search | New |
view_mail_tracking_email_tree |
mail.tracking.email.tree | mail.tracking.email | tree | New |
view_mail_tracking_event_form |
mail.tracking.event.form | mail.tracking.event | form | New |
view_mail_tracking_event_search |
mail.tracking.event.search | mail.tracking.event | search | New |
view_mail_tracking_event_tree |
mail.tracking.event.tree | mail.tracking.event | tree | New |
view_message_form |
mail.message | field | Inherits mail.mail_message_view_form | |
view_partner_form |
Partner Form with tracking emails | res.partner | div | Inherits base.view_partner_form |
view_res_partner_filter |
Filter bounced partners | res.partner | filter | Inherits base.view_res_partner_filter |
No new fields.
Public methods (3)create(self, vals_list)
unlink(self)
write(self, vals)
No new fields.
Public methods (2)build_email(self, email_from, email_to, subject, body, email_cc=None, email_bcc=None, reply_to=False, attachments=None, message_id=None, references=None, object_id=False, subtype='plain', headers=None, body_alternative=None, subtype_alternative='plain')
send_email(self, message, mail_server_id=None, smtp_server=None, smtp_port=None, smtp_user=None, smtp_password=None, smtp_encryption=None, smtp_ssl_certificate=None, smtp_ssl_private_key=None, smtp_debug=False, smtp_session=None)
No new fields.
Public methods (4)create(self, vals_list)
get_aliases(self)
unlink(self)
write(self, vals)
email_bounced
Boolean
index=True
email_bounced_set(self, tracking_emails, reason, event=None)
write(self, vals)
No new fields.
Public methods (0)No public methods.
email_cc
Char
help='Additional recipients that receive a "Carbon Copy" of the e-mail'
args: 'Cc'
email_to
Char
help='Raw TO recipients'
args: 'To'
is_failed_message
Boolean
compute='_compute_is_failed_message'
search='_search_is_failed_message'
mail_tracking_ids
One2many → mail.tracking.email
auto_join=True
comodel_name='mail.tracking.email'
inverse_name='mail_message_id'
string='Mail Trackings'
mail_tracking_needs_action
Boolean
default=False
help='The message tracking will be considered to filter tracking issues'
get_failed_count(self)
get_failed_messages(self)
get_failed_messsage_info(self, ids, model)
get_failed_states(self)
message_format(self, format_reply=True)
set_all_as_reviewed(self)
set_need_action_done(self)
tracking_status(self)
No new fields.
Public methods (2)default_get(self, fields)
resend_mail_action(self)
failed_message_ids
One2many → mail.message
domain=<expr>
string='Failed Messages'
args: 'mail.message', 'res_id'
No public methods.
bounce_description
Char
readonly=True
bounce_type
Char
readonly=True
date
Date
compute='_compute_date'
readonly=True
store=True
display_name
Char
compute='_compute_tracking_display_name'
readonly=True
store=True
error_description
Char
readonly=True
error_smtp_server
Char
readonly=True
string='Error SMTP server'
error_type
Char
readonly=True
mail_id
Many2one → mail.mail
comodel_name='mail.mail'
readonly=True
string='Email'
mail_message_id
Many2one → mail.message
comodel_name='mail.message'
index=True
readonly=True
string='Message'
message_id
Char
compute='_compute_message_id'
name
Char
index=True
readonly=True
string='Subject'
partner_id
Many2one → res.partner
comodel_name='res.partner'
readonly=True
string='Partner'
recipient
Char
readonly=True
string='Recipient email'
recipient_address
Char
compute='_compute_recipient_address'
index=True
readonly=True
store=True
string='Recipient email address'
sender
Char
readonly=True
string='Sender email'
state
Selection
default=False
help=" * The 'Error' status indicates that there was an error when trying to sent the email, for example, 'No valid recipient'\n * The 'Sent' status indicates that message was succesfully sent via outgoing email server (SMTP).\n * The 'Delivered' status indicates that message was succesfully delivered to recipient Mail Exchange (MX) server.\n * The 'Opened' status indicates that message was opened or clicked by recipient.\n * The 'Rejected' status indicates that recipient email address is blacklisted by outgoing email server (SMTP). It is recomended to delete this email address.\n * The 'Spam' status indicates that outgoing email server (SMTP) consider this message as spam.\n * The 'Unsubscribed' status indicates that recipient has requested to be unsubscribed from this message.\n * The 'Bounced' status indicates that message was bounced by recipient Mail Exchange (MX) server.\n * The 'Soft bounced' status indicates that message was soft bounced by recipient Mail Exchange (MX) server.\n"
index=True
readonly=True
args: [('error', 'Error'), ('deferred', 'Deferred'), ('sent', 'Sent'), ('delivered', 'Delivered'), ('opened', 'Opened'), ('rejected', 'Rejected'), ('spam', 'Spam'), ('unsub', 'Unsubscribed'), ('bounced', 'Bounced'), ('soft-bounced', 'Soft bounced')]
time
Datetime
index=True
readonly=True
timestamp
Float
digits='MailTracking Timestamp'
readonly=True
string='UTC timestamp'
token
Char
default=<expr>
groups='base.group_system'
readonly=True
string='Security Token'
tracking_event_ids
One2many → mail.tracking.event
comodel_name='mail.tracking.event'
inverse_name='tracking_email_id'
readonly=True
string='Tracking events'
check_access_rule(self, operation)
create(self, vals_list)
email_is_bounced(self, email)
email_score(self)
email_score_from_email(self, email)
event_create(self, event_type, metadata)
event_process(self, request, post, metadata, event_type=None)
read(self, fields=None, load='_classic_read')
smtp_error(self, mail_server, smtp_server, exception)
tracking_img_add(self, email)
write(self, vals)
date
Date
compute='_compute_date'
readonly=True
store=True
error_description
Char
readonly=True
error_details
Text
readonly=True
error_type
Char
readonly=True
event_type
Selection
readonly=True
selection=[('sent', 'Sent'), ('delivered', 'Delivered'), ('deferral', 'Deferral'), ('hard_bounce', 'Hard bounce'), ('soft_bounce', 'Soft bounce'), ('open', 'Open'), ('click', 'Clicked'), ('spam', 'Spam'), ('unsub', 'Unsubscribed'), ('reject', 'Rejected')]
ip
Char
readonly=True
string='User IP'
mobile
Boolean
readonly=True
string='Is mobile?'
os_family
Char
readonly=True
string='Operating system family'
recipient
Char
readonly=True
recipient_address
Char
compute='_compute_recipient_address'
index=True
readonly=True
store=True
string='Recipient email address'
smtp_server
Char
readonly=True
string='SMTP server'
time
Datetime
readonly=True
timestamp
Float
digits='MailTracking Timestamp'
readonly=True
string='UTC timestamp'
tracking_email_id
Many2one → mail.tracking.email
comodel_name='mail.tracking.email'
index=True
ondelete='cascade'
readonly=True
required=True
string='Message'
ua_family
Char
readonly=True
string='User agent family'
ua_type
Char
readonly=True
string='User agent type'
url
Char
readonly=True
string='Clicked URL'
user_agent
Char
readonly=True
user_country_id
Many2one → res.country
comodel_name='res.country'
readonly=True
string='User country'
process_click(self, tracking_email, metadata)
process_deferral(self, tracking_email, metadata)
process_delivered(self, tracking_email, metadata)
process_hard_bounce(self, tracking_email, metadata)
process_open(self, tracking_email, metadata)
process_reject(self, tracking_email, metadata)
process_sent(self, tracking_email, metadata)
process_soft_bounce(self, tracking_email, metadata)
process_spam(self, tracking_email, metadata)
process_unsub(self, tracking_email, metadata)
email_score
Float
compute='_compute_email_score_and_count'
readonly=True
tracking_emails_count
Integer
compute='_compute_email_score_and_count'
readonly=True
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/social |
| GIT | |
| GIT | https://github.com/OCA/social.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/social/tree/14.0/mail_tracking |
| VERSION | |
| VERSION | 3.2.1 |
| CATEGORY | |
| CATEGORY | Social Network |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA) |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA) |
| COMMITTERS | |
| COMMITTERS | Pedro M. Baeza, GitHub, Moisés López, Enric Tobella, OCA Transbot, Thierry Ducrest, oca-travis, Weblate, OCA-git-bot, houssine, David, Stephane Mangin, Fernanda Hernández, Cyril VINH-TUNG, oca-ci, oca-git-bot, Henry Backman, Areeb Siddiqi, Robert Khayat, angelJuaGar |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/social |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:41:08 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - base - base_setup - web - bus - web_tour |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
assets_backend |
mail_tracking assets | ir.ui.view | qweb | Inherits web.assets_backend |
res_config_settings_view_form |
res.config.settings.view.form.inherit.mail.tracking | res.config.settings | div | Inherits mail.res_config_settings_view_form |
view_mail_tracking_email_form |
mail.tracking.email.form | mail.tracking.email | form | New |
view_mail_tracking_email_search |
mail.tracking.email.search | mail.tracking.email | search | New |
view_mail_tracking_email_tree |
mail.tracking.email.tree | mail.tracking.email | tree | New |
view_mail_tracking_event_form |
mail.tracking.event.form | mail.tracking.event | form | New |
view_mail_tracking_event_search |
mail.tracking.event.search | mail.tracking.event | search | New |
view_mail_tracking_event_tree |
mail.tracking.event.tree | mail.tracking.event | tree | New |
view_message_form |
mail.message | field | Inherits mail.mail_message_view_form | |
view_partner_form |
Partner Form with tracking emails | res.partner | div | Inherits base.view_partner_form |
view_res_partner_filter |
Filter bounced partners | res.partner | filter | Inherits base.view_res_partner_filter |
No new fields.
Public methods (3)create(self, vals_list)
unlink(self)
write(self, vals)
No new fields.
Public methods (2)build_email(self, email_from, email_to, subject, body, email_cc=None, email_bcc=None, reply_to=False, attachments=None, message_id=None, references=None, object_id=False, subtype='plain', headers=None, body_alternative=None, subtype_alternative='plain')
send_email(self, message, mail_server_id=None, smtp_server=None, smtp_port=None, smtp_user=None, smtp_password=None, smtp_encryption=None, smtp_debug=False, smtp_session=None)
No new fields.
Public methods (4)create(self, vals_list)
get_aliases(self)
unlink(self)
write(self, vals)
email_bounced
Boolean
index=True
email_bounced_set(self, tracking_emails, reason, event=None)
write(self, vals)
No new fields.
Public methods (0)No public methods.
email_cc
Char
help='Additional recipients that receive a "Carbon Copy" of the e-mail'
args: 'Cc'
email_to
Char
help='Raw TO recipients'
args: 'To'
is_failed_message
Boolean
compute='_compute_is_failed_message'
search='_search_is_failed_message'
mail_tracking_ids
One2many → mail.tracking.email
auto_join=True
comodel_name='mail.tracking.email'
inverse_name='mail_message_id'
string='Mail Trackings'
mail_tracking_needs_action
Boolean
default=False
help='The message tracking will be considered to filter tracking issues'
get_failed_count(self)
get_failed_messages(self)
get_failed_messsage_info(self, ids, model)
get_failed_states(self)
message_format(self)
set_all_as_reviewed(self)
set_need_action_done(self)
tracking_status(self)
No new fields.
Public methods (2)default_get(self, fields)
resend_mail_action(self)
failed_message_ids
One2many → mail.message
domain=<expr>
string='Failed Messages'
args: 'mail.message', 'res_id'
No public methods.
bounce_description
Char
readonly=True
string='Bounce description'
bounce_type
Char
readonly=True
string='Bounce type'
date
Date
compute='_compute_date'
readonly=True
store=True
string='Date'
display_name
Char
compute='_compute_tracking_display_name'
readonly=True
store=True
string='Display name'
error_description
Char
readonly=True
string='Error description'
error_smtp_server
Char
readonly=True
string='Error SMTP server'
error_type
Char
readonly=True
string='Error type'
mail_id
Many2one → mail.mail
comodel_name='mail.mail'
readonly=True
string='Email'
mail_message_id
Many2one → mail.message
comodel_name='mail.message'
index=True
readonly=True
message_id
Char
compute='_compute_message_id'
name
Char
index=True
readonly=True
string='Subject'
partner_id
Many2one → res.partner
comodel_name='res.partner'
readonly=True
string='Partner'
recipient
Char
readonly=True
string='Recipient email'
recipient_address
Char
compute='_compute_recipient_address'
index=True
readonly=True
store=True
string='Recipient email address'
sender
Char
readonly=True
string='Sender email'
state
Selection
default=False
help=" * The 'Error' status indicates that there was an error when trying to sent the email, for example, 'No valid recipient'\n * The 'Sent' status indicates that message was succesfully sent via outgoing email server (SMTP).\n * The 'Delivered' status indicates that message was succesfully delivered to recipient Mail Exchange (MX) server.\n * The 'Opened' status indicates that message was opened or clicked by recipient.\n * The 'Rejected' status indicates that recipient email address is blacklisted by outgoing email server (SMTP). It is recomended to delete this email address.\n * The 'Spam' status indicates that outgoing email server (SMTP) consider this message as spam.\n * The 'Unsubscribed' status indicates that recipient has requested to be unsubscribed from this message.\n * The 'Bounced' status indicates that message was bounced by recipient Mail Exchange (MX) server.\n * The 'Soft bounced' status indicates that message was soft bounced by recipient Mail Exchange (MX) server.\n"
index=True
readonly=True
string='State'
args: [('error', 'Error'), ('deferred', 'Deferred'), ('sent', 'Sent'), ('delivered', 'Delivered'), ('opened', 'Opened'), ('rejected', 'Rejected'), ('spam', 'Spam'), ('unsub', 'Unsubscribed'), ('bounced', 'Bounced'), ('soft-bounced', 'Soft bounced')]
time
Datetime
index=True
readonly=True
string='Time'
timestamp
Float
digits='MailTracking Timestamp'
readonly=True
string='UTC timestamp'
token
Char
default=<expr>
groups='base.group_system'
readonly=True
string='Security Token'
tracking_event_ids
One2many → mail.tracking.event
comodel_name='mail.tracking.event'
inverse_name='tracking_email_id'
readonly=True
string='Tracking events'
check_access_rule(self, operation)
create(self, vals_list)
email_is_bounced(self, email)
email_score(self)
email_score_from_email(self, email)
event_create(self, event_type, metadata)
event_process(self, request, post, metadata, event_type=None)
read(self, fields=None, load='_classic_read')
smtp_error(self, mail_server, smtp_server, exception)
tracking_img_add(self, email)
write(self, vals)
date
Date
compute='_compute_date'
readonly=True
store=True
string='Date'
error_description
Char
readonly=True
string='Error description'
error_details
Text
readonly=True
string='Error details'
error_type
Char
readonly=True
string='Error type'
event_type
Selection
readonly=True
selection=[('sent', 'Sent'), ('delivered', 'Delivered'), ('deferral', 'Deferral'), ('hard_bounce', 'Hard bounce'), ('soft_bounce', 'Soft bounce'), ('open', 'Open'), ('click', 'Clicked'), ('spam', 'Spam'), ('unsub', 'Unsubscribed'), ('reject', 'Rejected')]
string='Event type'
ip
Char
readonly=True
string='User IP'
mobile
Boolean
readonly=True
string='Is mobile?'
os_family
Char
readonly=True
string='Operating system family'
recipient
Char
readonly=True
string='Recipient'
recipient_address
Char
compute='_compute_recipient_address'
index=True
readonly=True
store=True
string='Recipient email address'
smtp_server
Char
readonly=True
string='SMTP server'
time
Datetime
readonly=True
string='Time'
timestamp
Float
digits='MailTracking Timestamp'
readonly=True
string='UTC timestamp'
tracking_email_id
Many2one → mail.tracking.email
comodel_name='mail.tracking.email'
index=True
ondelete='cascade'
readonly=True
required=True
string='Message'
ua_family
Char
readonly=True
string='User agent family'
ua_type
Char
readonly=True
string='User agent type'
url
Char
readonly=True
string='Clicked URL'
user_agent
Char
readonly=True
string='User agent'
user_country_id
Many2one → res.country
comodel_name='res.country'
readonly=True
string='User country'
process_click(self, tracking_email, metadata)
process_deferral(self, tracking_email, metadata)
process_delivered(self, tracking_email, metadata)
process_hard_bounce(self, tracking_email, metadata)
process_open(self, tracking_email, metadata)
process_reject(self, tracking_email, metadata)
process_sent(self, tracking_email, metadata)
process_soft_bounce(self, tracking_email, metadata)
process_spam(self, tracking_email, metadata)
process_unsub(self, tracking_email, metadata)
mail_tracking_show_aliases
Boolean
default=False
string='Show Aliases in Mail Tracking'
No public methods.
mail_tracking_email_max_age_days
Integer
config_parameter='mail_tracking.mail_tracking_email_max_age_days'
help='If set as positive integer enables the deletion of old mail tracking records to reduce the database size.'
args: 'Max age in days of mail tracking email records'
mail_tracking_show_aliases
Boolean
readonly=False
related='company_id.mail_tracking_show_aliases'
No public methods.
email_score
Float
compute='_compute_email_score_and_count'
readonly=True
tracking_emails_count
Integer
compute='_compute_email_score_and_count'
readonly=True
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/social |
| GIT | |
| GIT | https://github.com/OCA/social.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/social/tree/13.0/mail_tracking |
| VERSION | |
| VERSION | 2.0.1 |
| CATEGORY | |
| CATEGORY | Social Network |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA) |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA) |
| COMMITTERS | |
| COMMITTERS | Pedro M. Baeza, Jairo Llopis, david, Uku Lagle, Alexandre Díaz, OCA Transbot, Alexandre D. Díaz, ahenriquez, oca-travis, Weblate, OCA-git-bot, David, oca-ci, sugapablo, nmadhoc |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/social |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:34:18 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - base - base_setup - web - bus - web_tour |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
assets_backend |
mail_tracking assets | ir.ui.view | qweb | Inherits web.assets_backend |
view_mail_tracking_email_form |
mail.tracking.email.form | mail.tracking.email | form | New |
view_mail_tracking_email_search |
mail.tracking.email.search | mail.tracking.email | search | New |
view_mail_tracking_email_tree |
mail.tracking.email.tree | mail.tracking.email | tree | New |
view_mail_tracking_event_form |
mail.tracking.event.form | mail.tracking.event | form | New |
view_mail_tracking_event_search |
mail.tracking.event.search | mail.tracking.event | search | New |
view_mail_tracking_event_tree |
mail.tracking.event.tree | mail.tracking.event | tree | New |
view_message_form |
mail.message | field | Inherits mail.view_message_form | |
view_partner_form |
Partner Form with tracking emails | res.partner | div | Inherits base.view_partner_form |
view_res_partner_filter |
Filter bounced partners | res.partner | filter | Inherits base.view_res_partner_filter |
No new fields.
Public methods (3)create(self, vals_list)
unlink(self)
write(self, vals)
No new fields.
Public methods (2)build_email(self, email_from, email_to, subject, body, email_cc=None, email_bcc=None, reply_to=False, attachments=None, message_id=None, references=None, object_id=False, subtype='plain', headers=None, body_alternative=None, subtype_alternative='plain')
send_email(self, message, mail_server_id=None, smtp_server=None, smtp_port=None, smtp_user=None, smtp_password=None, smtp_encryption=None, smtp_debug=False, smtp_session=None)
No new fields.
Public methods (4)create(self, vals_list)
get_aliases(self)
unlink(self)
write(self, vals)
email_bounced
Boolean
index=True
email_bounced_set(self, tracking_emails, reason, event=None)
write(self, vals)
No new fields.
Public methods (0)No public methods.
email_cc
Char
help='Additional recipients that receive a "Carbon Copy" of the e-mail'
args: 'Cc'
email_to
Char
help='Raw TO recipients'
args: 'To'
is_failed_message
Boolean
compute='_compute_is_failed_message'
search='_search_is_failed_message'
mail_tracking_ids
One2many → mail.tracking.email
auto_join=True
comodel_name='mail.tracking.email'
inverse_name='mail_message_id'
string='Mail Trackings'
mail_tracking_needs_action
Boolean
default=False
help='The message tracking will be considered to filter tracking issues'
get_failed_count(self)
get_failed_messages(self)
get_failed_states(self)
set_all_as_reviewed(self)
set_need_action_done(self)
tracking_status(self)
No new fields.
Public methods (2)default_get(self, fields)
resend_mail_action(self)
failed_message_ids
One2many → mail.message
domain=<expr>
string='Failed Messages'
args: 'mail.message', 'res_id'
No public methods.
bounce_description
Char
readonly=True
string='Bounce description'
bounce_type
Char
readonly=True
string='Bounce type'
date
Date
compute='_compute_date'
readonly=True
store=True
string='Date'
display_name
Char
compute='_compute_tracking_display_name'
readonly=True
store=True
string='Display name'
error_description
Char
readonly=True
string='Error description'
error_smtp_server
Char
readonly=True
string='Error SMTP server'
error_type
Char
readonly=True
string='Error type'
mail_id
Many2one → mail.mail
comodel_name='mail.mail'
readonly=True
string='Email'
mail_message_id
Many2one → mail.message
comodel_name='mail.message'
index=True
readonly=True
string='Message'
message_id
Char
compute='_compute_message_id'
name
Char
index=True
readonly=True
string='Subject'
partner_id
Many2one → res.partner
comodel_name='res.partner'
readonly=True
string='Partner'
recipient
Char
readonly=True
string='Recipient email'
recipient_address
Char
compute='_compute_recipient_address'
index=True
readonly=True
store=True
string='Recipient email address'
sender
Char
readonly=True
string='Sender email'
state
Selection
default=False
help=" * The 'Error' status indicates that there was an error when trying to sent the email, for example, 'No valid recipient'\n * The 'Sent' status indicates that message was succesfully sent via outgoing email server (SMTP).\n * The 'Delivered' status indicates that message was succesfully delivered to recipient Mail Exchange (MX) server.\n * The 'Opened' status indicates that message was opened or clicked by recipient.\n * The 'Rejected' status indicates that recipient email address is blacklisted by outgoing email server (SMTP). It is recomended to delete this email address.\n * The 'Spam' status indicates that outgoing email server (SMTP) consider this message as spam.\n * The 'Unsubscribed' status indicates that recipient has requested to be unsubscribed from this message.\n * The 'Bounced' status indicates that message was bounced by recipient Mail Exchange (MX) server.\n * The 'Soft bounced' status indicates that message was soft bounced by recipient Mail Exchange (MX) server.\n"
index=True
readonly=True
string='State'
args: [('error', 'Error'), ('deferred', 'Deferred'), ('sent', 'Sent'), ('delivered', 'Delivered'), ('opened', 'Opened'), ('rejected', 'Rejected'), ('spam', 'Spam'), ('unsub', 'Unsubscribed'), ('bounced', 'Bounced'), ('soft-bounced', 'Soft bounced')]
time
Datetime
index=True
readonly=True
string='Time'
timestamp
Float
digits='MailTracking Timestamp'
readonly=True
string='UTC timestamp'
token
Char
default=<expr>
groups='base.group_system'
readonly=True
string='Security Token'
tracking_event_ids
One2many → mail.tracking.event
comodel_name='mail.tracking.event'
inverse_name='tracking_email_id'
readonly=True
string='Tracking events'
check_access_rule(self, operation)
create(self, vals_list)
email_is_bounced(self, email)
email_score(self)
email_score_from_email(self, email)
event_create(self, event_type, metadata)
event_process(self, request, post, metadata, event_type=None)
read(self, fields=None, load='_classic_read')
smtp_error(self, mail_server, smtp_server, exception)
tracking_img_add(self, email)
write(self, vals)
date
Date
compute='_compute_date'
readonly=True
store=True
string='Date'
error_description
Char
readonly=True
string='Error description'
error_details
Text
readonly=True
string='Error details'
error_type
Char
readonly=True
string='Error type'
event_type
Selection
readonly=True
selection=[('sent', 'Sent'), ('delivered', 'Delivered'), ('deferral', 'Deferral'), ('hard_bounce', 'Hard bounce'), ('soft_bounce', 'Soft bounce'), ('open', 'Open'), ('click', 'Clicked'), ('spam', 'Spam'), ('unsub', 'Unsubscribed'), ('reject', 'Rejected')]
string='Event type'
ip
Char
readonly=True
string='User IP'
mobile
Boolean
readonly=True
string='Is mobile?'
os_family
Char
readonly=True
string='Operating system family'
recipient
Char
readonly=True
string='Recipient'
recipient_address
Char
compute='_compute_recipient_address'
index=True
readonly=True
store=True
string='Recipient email address'
smtp_server
Char
readonly=True
string='SMTP server'
time
Datetime
readonly=True
string='Time'
timestamp
Float
digits='MailTracking Timestamp'
readonly=True
string='UTC timestamp'
tracking_email_id
Many2one → mail.tracking.email
comodel_name='mail.tracking.email'
index=True
ondelete='cascade'
readonly=True
required=True
string='Message'
ua_family
Char
readonly=True
string='User agent family'
ua_type
Char
readonly=True
string='User agent type'
url
Char
readonly=True
string='Clicked URL'
user_agent
Char
readonly=True
string='User agent'
user_country_id
Many2one → res.country
comodel_name='res.country'
readonly=True
string='User country'
process_click(self, tracking_email, metadata)
process_deferral(self, tracking_email, metadata)
process_delivered(self, tracking_email, metadata)
process_hard_bounce(self, tracking_email, metadata)
process_open(self, tracking_email, metadata)
process_reject(self, tracking_email, metadata)
process_sent(self, tracking_email, metadata)
process_soft_bounce(self, tracking_email, metadata)
process_spam(self, tracking_email, metadata)
process_unsub(self, tracking_email, metadata)
email_score
Float
compute='_compute_email_score_and_count'
readonly=True
tracking_emails_count
Integer
compute='_compute_email_score_and_count'
readonly=True
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/social |
| GIT | |
| GIT | https://github.com/OCA/social.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/social/tree/12.0/mail_tracking |
| VERSION | |
| VERSION | 3.1.0 |
| CATEGORY | |
| CATEGORY | Social Network |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA) |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA) |
| COMMITTERS | |
| COMMITTERS | eLBati, Pedro M. Baeza, Sylvain LE GAL, Jairo Llopis, Uku Lagle, Alexandre Díaz, OCA Transbot, Alexandre D. Díaz, oca-travis, Weblate, OCA-git-bot, Tom Blauwendraat, Wolfgang Pichler, ernesto |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/social |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:29:23 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - decimal_precision - base - base_setup - web - bus - web_tour |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
assets_backend |
mail_tracking assets | ir.ui.view | qweb | Inherits web.assets_backend |
view_mail_tracking_email_form |
mail.tracking.email.form | mail.tracking.email | form | New |
view_mail_tracking_email_search |
mail.tracking.email.search | mail.tracking.email | search | New |
view_mail_tracking_email_tree |
mail.tracking.email.tree | mail.tracking.email | tree | New |
view_mail_tracking_event_form |
mail.tracking.event.form | mail.tracking.event | form | New |
view_mail_tracking_event_search |
mail.tracking.event.search | mail.tracking.event | search | New |
view_mail_tracking_event_tree |
mail.tracking.event.tree | mail.tracking.event | tree | New |
view_message_form |
mail.message | field | Inherits mail.view_message_form | |
view_partner_form |
Partner Form with tracking emails | res.partner | div | Inherits base.view_partner_form |
view_res_partner_filter |
Filter bounced partners | res.partner | filter | Inherits base.view_res_partner_filter |
No new fields.
Public methods (3)create(self, vals_list)
unlink(self)
write(self, vals)
No new fields.
Public methods (2)build_email(self, email_from, email_to, subject, body, email_cc=None, email_bcc=None, reply_to=False, attachments=None, message_id=None, references=None, object_id=False, subtype='plain', headers=None, body_alternative=None, subtype_alternative='plain')
send_email(self, message, mail_server_id=None, smtp_server=None, smtp_port=None, smtp_user=None, smtp_password=None, smtp_encryption=None, smtp_debug=False, smtp_session=None)
No new fields.
Public methods (4)create(self, vals_list)
get_aliases(self)
unlink(self)
write(self, vals)
email_bounced
Boolean
index=True
email_bounced_set(self, tracking_emails, reason, event=None)
write(self, vals)
No new fields.
Public methods (0)No public methods.
email_cc
Char
help='Additional recipients that receive a "Carbon Copy" of the e-mail'
args: 'Cc'
email_to
Char
help='Raw TO recipients'
args: 'To'
is_failed_message
Boolean
compute='_compute_is_failed_message'
search='_search_is_failed_message'
mail_tracking_ids
One2many → mail.tracking.email
auto_join=True
comodel_name='mail.tracking.email'
inverse_name='mail_message_id'
string='Mail Trackings'
mail_tracking_needs_action
Boolean
default=False
help='The message tracking will be considered to filter tracking issues'
get_failed_count(self)
get_failed_messages(self)
get_failed_states(self)
set_all_as_reviewed(self)
set_need_action_done(self)
tracking_status(self)
No new fields.
Public methods (2)default_get(self, fields)
resend_mail_action(self)
failed_message_ids
One2many → mail.message
domain=<expr>
string='Failed Messages'
args: 'mail.message', 'res_id'
message_get_suggested_recipients(self)
message_post(self, *args, **kwargs)
bounce_description
Char
readonly=True
string='Bounce description'
bounce_type
Char
readonly=True
string='Bounce type'
date
Date
compute='_compute_date'
readonly=True
store=True
string='Date'
display_name
Char
compute='_compute_tracking_display_name'
readonly=True
store=True
string='Display name'
error_description
Char
readonly=True
string='Error description'
error_smtp_server
Char
readonly=True
string='Error SMTP server'
error_type
Char
readonly=True
string='Error type'
mail_id
Many2one → mail.mail
comodel_name='mail.mail'
readonly=True
string='Email'
mail_message_id
Many2one → mail.message
comodel_name='mail.message'
index=True
readonly=True
string='Message'
name
Char
index=True
readonly=True
string='Subject'
partner_id
Many2one → res.partner
comodel_name='res.partner'
readonly=True
string='Partner'
recipient
Char
readonly=True
string='Recipient email'
recipient_address
Char
compute='_compute_recipient_address'
index=True
readonly=True
store=True
string='Recipient email address'
sender
Char
readonly=True
string='Sender email'
state
Selection
default=False
help=" * The 'Error' status indicates that there was an error when trying to sent the email, for example, 'No valid recipient'\n * The 'Sent' status indicates that message was succesfully sent via outgoing email server (SMTP).\n * The 'Delivered' status indicates that message was succesfully delivered to recipient Mail Exchange (MX) server.\n * The 'Opened' status indicates that message was opened or clicked by recipient.\n * The 'Rejected' status indicates that recipient email address is blacklisted by outgoing email server (SMTP). It is recomended to delete this email address.\n * The 'Spam' status indicates that outgoing email server (SMTP) consider this message as spam.\n * The 'Unsubscribed' status indicates that recipient has requested to be unsubscribed from this message.\n * The 'Bounced' status indicates that message was bounced by recipient Mail Exchange (MX) server.\n * The 'Soft bounced' status indicates that message was soft bounced by recipient Mail Exchange (MX) server.\n"
index=True
readonly=True
string='State'
args: [('error', 'Error'), ('deferred', 'Deferred'), ('sent', 'Sent'), ('delivered', 'Delivered'), ('opened', 'Opened'), ('rejected', 'Rejected'), ('spam', 'Spam'), ('unsub', 'Unsubscribed'), ('bounced', 'Bounced'), ('soft-bounced', 'Soft bounced')]
time
Datetime
index=True
readonly=True
string='Time'
timestamp
Float
digits=dp.get_precision('MailTracking Timestamp')
readonly=True
string='UTC timestamp'
token
Char
default=<expr>
groups='base.group_system'
readonly=True
string='Security Token'
tracking_event_ids
One2many → mail.tracking.event
comodel_name='mail.tracking.event'
inverse_name='tracking_email_id'
readonly=True
string='Tracking events'
create(self, vals_list)
email_is_bounced(self, email)
email_score(self)
email_score_from_email(self, email)
event_create(self, event_type, metadata)
event_process(self, request, post, metadata, event_type=None)
smtp_error(self, mail_server, smtp_server, exception)
tracking_img_add(self, email)
write(self, vals)
date
Date
compute='_compute_date'
readonly=True
store=True
string='Date'
error_description
Char
readonly=True
string='Error description'
error_details
Text
readonly=True
string='Error details'
error_type
Char
readonly=True
string='Error type'
event_type
Selection
readonly=True
selection=[('sent', 'Sent'), ('delivered', 'Delivered'), ('deferral', 'Deferral'), ('hard_bounce', 'Hard bounce'), ('soft_bounce', 'Soft bounce'), ('open', 'Open'), ('click', 'Clicked'), ('spam', 'Spam'), ('unsub', 'Unsubscribed'), ('reject', 'Rejected')]
string='Event type'
ip
Char
readonly=True
string='User IP'
mobile
Boolean
readonly=True
string='Is mobile?'
os_family
Char
readonly=True
string='Operating system family'
recipient
Char
readonly=True
string='Recipient'
recipient_address
Char
compute='_compute_recipient_address'
index=True
readonly=True
store=True
string='Recipient email address'
smtp_server
Char
readonly=True
string='SMTP server'
time
Datetime
readonly=True
string='Time'
timestamp
Float
digits=dp.get_precision('MailTracking Timestamp')
readonly=True
string='UTC timestamp'
tracking_email_id
Many2one → mail.tracking.email
comodel_name='mail.tracking.email'
index=True
ondelete='cascade'
readonly=True
required=True
string='Message'
ua_family
Char
readonly=True
string='User agent family'
ua_type
Char
readonly=True
string='User agent type'
url
Char
readonly=True
string='Clicked URL'
user_agent
Char
readonly=True
string='User agent'
user_country_id
Many2one → res.country
comodel_name='res.country'
readonly=True
string='User country'
process_click(self, tracking_email, metadata)
process_deferral(self, tracking_email, metadata)
process_delivered(self, tracking_email, metadata)
process_hard_bounce(self, tracking_email, metadata)
process_open(self, tracking_email, metadata)
process_reject(self, tracking_email, metadata)
process_sent(self, tracking_email, metadata)
process_soft_bounce(self, tracking_email, metadata)
process_spam(self, tracking_email, metadata)
process_unsub(self, tracking_email, metadata)
email_score
Float
compute='_compute_email_score'
readonly=True
tracking_emails_count
Integer
compute='_compute_tracking_emails_count'
readonly=True
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/social |
| GIT | |
| GIT | https://github.com/OCA/social.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/social/tree/11.0/mail_tracking |
| VERSION | |
| VERSION | 3.2.1 |
| CATEGORY | |
| CATEGORY | Social Network |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA) |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA) |
| COMMITTERS | |
| COMMITTERS | Pedro M. Baeza, GitHub, Jairo Llopis, Denis Roussel, david, Alexandre Díaz, OCA Transbot, oca-travis, Weblate, OCA-git-bot, David, hveficent, Piotr Kowalski |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/social |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:24:01 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - decimal_precision - base - base_setup - web - bus - web_tour |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
assets_backend |
mail_tracking assets | ir.ui.view | qweb | Inherits web.assets_backend |
email_compose_message_wizard_form |
mail.compose.message | field | Inherits mail.email_compose_message_wizard_form | |
view_mail_tracking_email_form |
mail.tracking.email.form | mail.tracking.email | form | New |
view_mail_tracking_email_search |
mail.tracking.email.search | mail.tracking.email | search | New |
view_mail_tracking_email_tree |
mail.tracking.email.tree | mail.tracking.email | tree | New |
view_mail_tracking_event_form |
mail.tracking.event.form | mail.tracking.event | form | New |
view_mail_tracking_event_search |
mail.tracking.event.search | mail.tracking.event | search | New |
view_mail_tracking_event_tree |
mail.tracking.event.tree | mail.tracking.event | tree | New |
view_message_form |
mail.message | field | Inherits mail.view_message_form | |
view_partner_form |
Partner Form with tracking emails | res.partner | div | Inherits base.view_partner_form |
view_res_partner_filter |
Filter bounced partners | res.partner | filter | Inherits base.view_res_partner_filter |
No new fields.
Public methods (2)build_email(self, email_from, email_to, subject, body, email_cc=None, email_bcc=None, reply_to=False, attachments=None, message_id=None, references=None, object_id=False, subtype='plain', headers=None, body_alternative=None, subtype_alternative='plain')
send_email(self, message, mail_server_id=None, smtp_server=None, smtp_port=None, smtp_user=None, smtp_password=None, smtp_encryption=None, smtp_debug=False, smtp_session=None)
hide_followers
Boolean
default=False
string='Hide follower message'
get_record_data(self, values)
send_mail(self, auto_commit=False)
No new fields.
Public methods (1)send_get_email_dict(self, partner=None)
email_cc
Char
help='Additional recipients that receive a "Carbon Copy" of the e-mail'
args: 'Cc'
is_failed_message
Boolean
compute='_compute_is_failed_message'
mail_tracking_ids
One2many → mail.tracking.email
comodel_name='mail.tracking.email'
inverse_name='mail_message_id'
string='Mail Trackings'
mail_tracking_needs_action
Boolean
default=False
help='The message tracking will be considered to filter tracking issues'
get_failed_count(self)
get_failed_messages(self)
get_failed_states(self)
message_fetch(self, domain, limit=20)
message_format(self)
toggle_tracking_status(self)
tracking_status(self)
failed_message_ids
One2many → mail.message
auto_join=True
domain=<expr>
string='Failed Messages'
args: 'mail.message', 'res_id'
message_get_suggested_recipients(self)
message_post(self, body='', subject=None, message_type='notification', subtype=None, parent_id=False, attachments=None, content_subtype='html', **kwargs)
bounce_description
Char
readonly=True
string='Bounce description'
bounce_type
Char
readonly=True
string='Bounce type'
date
Date
compute='_compute_date'
readonly=True
store=True
string='Date'
display_name
Char
compute='_compute_tracking_display_name'
readonly=True
store=True
string='Display name'
error_description
Char
readonly=True
string='Error description'
error_smtp_server
Char
readonly=True
string='Error SMTP server'
error_type
Char
readonly=True
string='Error type'
mail_id
Many2one → mail.mail
comodel_name='mail.mail'
readonly=True
string='Email'
mail_message_id
Many2one → mail.message
comodel_name='mail.message'
index=True
readonly=True
string='Message'
name
Char
index=True
readonly=True
string='Subject'
partner_id
Many2one → res.partner
comodel_name='res.partner'
readonly=True
string='Partner'
recipient
Char
readonly=True
string='Recipient email'
recipient_address
Char
compute='_compute_recipient_address'
index=True
readonly=True
store=True
string='Recipient email address'
sender
Char
readonly=True
string='Sender email'
state
Selection
default=False
help=" * The 'Error' status indicates that there was an error when trying to sent the email, for example, 'No valid recipient'\n * The 'Sent' status indicates that message was succesfully sent via outgoing email server (SMTP).\n * The 'Delivered' status indicates that message was succesfully delivered to recipient Mail Exchange (MX) server.\n * The 'Opened' status indicates that message was opened or clicked by recipient.\n * The 'Rejected' status indicates that recipient email address is blacklisted by outgoing email server (SMTP). It is recomended to delete this email address.\n * The 'Spam' status indicates that outgoing email server (SMTP) consider this message as spam.\n * The 'Unsubscribed' status indicates that recipient has requested to be unsubscribed from this message.\n * The 'Bounced' status indicates that message was bounced by recipient Mail Exchange (MX) server.\n * The 'Soft bounced' status indicates that message was soft bounced by recipient Mail Exchange (MX) server.\n"
index=True
readonly=True
string='State'
args: [('error', 'Error'), ('deferred', 'Deferred'), ('sent', 'Sent'), ('delivered', 'Delivered'), ('opened', 'Opened'), ('rejected', 'Rejected'), ('spam', 'Spam'), ('unsub', 'Unsubscribed'), ('bounced', 'Bounced'), ('soft-bounced', 'Soft bounced')]
time
Datetime
index=True
readonly=True
string='Time'
timestamp
Float
digits=dp.get_precision('MailTracking Timestamp')
readonly=True
string='UTC timestamp'
tracking_event_ids
One2many → mail.tracking.event
comodel_name='mail.tracking.event'
inverse_name='tracking_email_id'
readonly=True
string='Tracking events'
email_is_bounced(self, email)
email_score(self)
email_score_from_email(self, email)
event_create(self, event_type, metadata)
event_process(self, request, post, metadata, event_type=None)
smtp_error(self, mail_server, smtp_server, exception)
tracking_img_add(self, email)
write(self, vals)
date
Date
compute='_compute_date'
readonly=True
store=True
string='Date'
error_description
Char
readonly=True
string='Error description'
error_details
Text
readonly=True
string='Error details'
error_type
Char
readonly=True
string='Error type'
event_type
Selection
readonly=True
selection=[('sent', 'Sent'), ('delivered', 'Delivered'), ('deferral', 'Deferral'), ('hard_bounce', 'Hard bounce'), ('soft_bounce', 'Soft bounce'), ('open', 'Open'), ('click', 'Clicked'), ('spam', 'Spam'), ('unsub', 'Unsubscribed'), ('reject', 'Rejected')]
string='Event type'
ip
Char
readonly=True
string='User IP'
mobile
Boolean
readonly=True
string='Is mobile?'
os_family
Char
readonly=True
string='Operating system family'
recipient
Char
readonly=True
string='Recipient'
recipient_address
Char
compute='_compute_recipient_address'
index=True
readonly=True
store=True
string='Recipient email address'
smtp_server
Char
readonly=True
string='SMTP server'
time
Datetime
readonly=True
string='Time'
timestamp
Float
digits=dp.get_precision('MailTracking Timestamp')
readonly=True
string='UTC timestamp'
tracking_email_id
Many2one → mail.tracking.email
comodel_name='mail.tracking.email'
index=True
ondelete='cascade'
readonly=True
required=True
string='Message'
ua_family
Char
readonly=True
string='User agent family'
ua_type
Char
readonly=True
string='User agent type'
url
Char
readonly=True
string='Clicked URL'
user_agent
Char
readonly=True
string='User agent'
user_country_id
Many2one → res.country
comodel_name='res.country'
readonly=True
string='User country'
process_click(self, tracking_email, metadata)
process_deferral(self, tracking_email, metadata)
process_delivered(self, tracking_email, metadata)
process_hard_bounce(self, tracking_email, metadata)
process_open(self, tracking_email, metadata)
process_reject(self, tracking_email, metadata)
process_soft_bounce(self, tracking_email, metadata)
process_spam(self, tracking_email, metadata)
process_unsub(self, tracking_email, metadata)
email_bounced
Boolean
index=True
email_score
Float
compute='_compute_email_score'
readonly=True
tracking_emails_count
Integer
compute='_compute_tracking_emails_count'
readonly=True
email_bounced_set(self, tracking_emails, reason, event=None)
write(self, vals)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/social |
| GIT | |
| GIT | https://github.com/OCA/social.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/social/tree/10.0/mail_tracking |
| VERSION | |
| VERSION | 1.1.2 |
| CATEGORY | |
| CATEGORY | Social Network |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA) |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA) |
| COMMITTERS | |
| COMMITTERS | Holger Brunn, Pedro M. Baeza, Damien Bouvy, Jairo Llopis, OCA Transbot, Thierry Ducrest, Emanuel Cino, oca-travis, Weblate, OCA-git-bot |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/social |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:20:00 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - decimal_precision - base - base_setup - web_kanban - web - bus - web_tour |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
assets_backend |
mail_tracking assets | ir.ui.view | qweb | Inherits web.assets_backend |
view_mail_tracking_email_form |
mail.tracking.email.form | mail.tracking.email | form | New |
view_mail_tracking_email_search |
mail.tracking.email.search | mail.tracking.email | search | New |
view_mail_tracking_email_tree |
mail.tracking.email.tree | mail.tracking.email | tree | New |
view_mail_tracking_event_form |
mail.tracking.event.form | mail.tracking.event | form | New |
view_mail_tracking_event_search |
mail.tracking.event.search | mail.tracking.event | search | New |
view_mail_tracking_event_tree |
mail.tracking.event.tree | mail.tracking.event | tree | New |
view_partner_form |
Partner Form with tracking emails | res.partner | div | Inherits base.view_partner_form |
view_res_partner_filter |
Filter bounced partners | res.partner | filter | Inherits base.view_res_partner_filter |
No new fields.
Public methods (2)build_email(self, email_from, email_to, subject, body, email_cc=None, email_bcc=None, reply_to=False, attachments=None, message_id=None, references=None, object_id=False, subtype='plain', headers=None, body_alternative=None, subtype_alternative='plain')
send_email(self, message, mail_server_id=None, smtp_server=None, smtp_port=None, smtp_user=None, smtp_password=None, smtp_encryption=None, smtp_debug=False)
No new fields.
Public methods (1)send_get_email_dict(self, partner=None)
No new fields.
Public methods (1)tracking_status(self)
bounce_description
Char
readonly=True
string='Bounce description'
bounce_type
Char
readonly=True
string='Bounce type'
date
Date
compute='_compute_date'
readonly=True
store=True
string='Date'
display_name
Char
compute='_compute_tracking_display_name'
readonly=True
store=True
string='Display name'
error_description
Char
readonly=True
string='Error description'
error_smtp_server
Char
readonly=True
string='Error SMTP server'
error_type
Char
readonly=True
string='Error type'
mail_id
Many2one → mail.mail
comodel_name='mail.mail'
index=True
readonly=True
string='Email'
mail_message_id
Many2one → mail.message
comodel_name='mail.message'
index=True
readonly=True
string='Message'
name
Char
index=True
readonly=True
string='Subject'
partner_id
Many2one → res.partner
comodel_name='res.partner'
readonly=True
string='Partner'
recipient
Char
readonly=True
string='Recipient email'
recipient_address
Char
compute='_compute_recipient_address'
index=True
readonly=True
store=True
string='Recipient email address'
sender
Char
readonly=True
string='Sender email'
state
Selection
default=False
help=" * The 'Error' status indicates that there was an error when trying to sent the email, for example, 'No valid recipient'\n * The 'Sent' status indicates that message was succesfully sent via outgoing email server (SMTP).\n * The 'Delivered' status indicates that message was succesfully delivered to recipient Mail Exchange (MX) server.\n * The 'Opened' status indicates that message was opened or clicked by recipient.\n * The 'Rejected' status indicates that recipient email address is blacklisted by outgoing email server (SMTP). It is recomended to delete this email address.\n * The 'Spam' status indicates that outgoing email server (SMTP) consider this message as spam.\n * The 'Unsubscribed' status indicates that recipient has requested to be unsubscribed from this message.\n * The 'Bounced' status indicates that message was bounced by recipient Mail Exchange (MX) server.\n * The 'Soft bounced' status indicates that message was soft bounced by recipient Mail Exchange (MX) server.\n"
index=True
readonly=True
string='State'
args: [('error', 'Error'), ('deferred', 'Deferred'), ('sent', 'Sent'), ('delivered', 'Delivered'), ('opened', 'Opened'), ('rejected', 'Rejected'), ('spam', 'Spam'), ('unsub', 'Unsubscribed'), ('bounced', 'Bounced'), ('soft-bounced', 'Soft bounced')]
time
Datetime
index=True
readonly=True
string='Time'
timestamp
Float
digits=dp.get_precision('MailTracking Timestamp')
readonly=True
string='UTC timestamp'
tracking_event_ids
One2many → mail.tracking.event
comodel_name='mail.tracking.event'
inverse_name='tracking_email_id'
readonly=True
string='Tracking events'
email_is_bounced(self, email)
email_score(self)
email_score_from_email(self, email)
event_create(self, event_type, metadata)
event_process(self, request, post, metadata, event_type=None)
smtp_error(self, mail_server, smtp_server, exception)
tracking_img_add(self, email)
date
Date
compute='_compute_date'
readonly=True
store=True
string='Date'
error_description
Char
readonly=True
string='Error description'
error_details
Text
readonly=True
string='Error details'
error_type
Char
readonly=True
string='Error type'
event_type
Selection
readonly=True
selection=[('sent', 'Sent'), ('delivered', 'Delivered'), ('deferral', 'Deferral'), ('hard_bounce', 'Hard bounce'), ('soft_bounce', 'Soft bounce'), ('open', 'Open'), ('click', 'Clicked'), ('spam', 'Spam'), ('unsub', 'Unsubscribed'), ('reject', 'Rejected')]
string='Event type'
ip
Char
readonly=True
string='User IP'
mobile
Boolean
readonly=True
string='Is mobile?'
os_family
Char
readonly=True
string='Operating system family'
recipient
Char
readonly=True
string='Recipient'
recipient_address
Char
compute='_compute_recipient_address'
index=True
readonly=True
store=True
string='Recipient email address'
smtp_server
Char
readonly=True
string='SMTP server'
time
Datetime
readonly=True
string='Time'
timestamp
Float
digits=dp.get_precision('MailTracking Timestamp')
readonly=True
string='UTC timestamp'
tracking_email_id
Many2one → mail.tracking.email
comodel_name='mail.tracking.email'
index=True
ondelete='cascade'
readonly=True
required=True
string='Message'
ua_family
Char
readonly=True
string='User agent family'
ua_type
Char
readonly=True
string='User agent type'
url
Char
readonly=True
string='Clicked URL'
user_agent
Char
readonly=True
string='User agent'
user_country_id
Many2one → res.country
comodel_name='res.country'
readonly=True
string='User country'
process_click(self, tracking_email, metadata)
process_deferral(self, tracking_email, metadata)
process_delivered(self, tracking_email, metadata)
process_hard_bounce(self, tracking_email, metadata)
process_open(self, tracking_email, metadata)
process_reject(self, tracking_email, metadata)
process_soft_bounce(self, tracking_email, metadata)
process_spam(self, tracking_email, metadata)
process_unsub(self, tracking_email, metadata)
email_bounced
Boolean
index=True
email_score
Float
compute='_compute_email_score'
readonly=True
tracking_emails_count
Integer
compute='_compute_tracking_emails_count'
readonly=True
email_bounced_set(self, tracking_emails, reason, event=None)
write(self, vals)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/social |
| GIT | |
| GIT | https://github.com/OCA/social.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/social/tree/9.0/mail_tracking |
| VERSION | |
| VERSION | 3.0.2 |
| CATEGORY | |
| CATEGORY | Social Network |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA) |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA) |
| COMMITTERS | |
| COMMITTERS | Holger Brunn, Pedro M. Baeza, GitHub, Carlos Dauden, cubells, OCA Transbot, Juan Jose Scarafia, oca-travis, Weblate, Antonio Espinosa |
| WEBSITE | |
| WEBSITE | http://www.tecnativa.com |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:15:23 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - decimal_precision - base - base_setup - web_kanban - web - bus |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
assets_backend |
mail_tracking assets | ir.ui.view | qweb | Inherits web.assets_backend |
view_mail_tracking_email_form |
mail.tracking.email.form | mail.tracking.email | form | New |
view_mail_tracking_email_search |
mail.tracking.email.search | mail.tracking.email | search | New |
view_mail_tracking_email_tree |
mail.tracking.email.tree | mail.tracking.email | tree | New |
view_mail_tracking_event_form |
mail.tracking.event.form | mail.tracking.event | form | New |
view_mail_tracking_event_search |
mail.tracking.event.search | mail.tracking.event | search | New |
view_mail_tracking_event_tree |
mail.tracking.event.tree | mail.tracking.event | tree | New |
view_partner_form |
Partner Form with tracking emails | res.partner | div | Inherits base.view_partner_form |
view_res_partner_filter |
Filter bounced partners | res.partner | filter | Inherits base.view_res_partner_filter |
No new fields.
Public methods (2)build_email(self, email_from, email_to, subject, body, email_cc=None, email_bcc=None, reply_to=False, attachments=None, message_id=None, references=None, object_id=False, subtype='plain', headers=None, body_alternative=None, subtype_alternative='plain')
send_email(self, message, mail_server_id=None, smtp_server=None, smtp_port=None, smtp_user=None, smtp_password=None, smtp_encryption=None, smtp_debug=False)
No new fields.
Public methods (1)send_get_email_dict(self, partner=None)
No new fields.
Public methods (1)tracking_status(self)
bounce_description
Char
readonly=True
string='Bounce description'
bounce_type
Char
readonly=True
string='Bounce type'
date
Date
compute='_compute_date'
readonly=True
store=True
string='Date'
display_name
Char
compute='_compute_display_name'
readonly=True
store=True
string='Display name'
error_description
Char
readonly=True
string='Error description'
error_smtp_server
Char
readonly=True
string='Error SMTP server'
error_type
Char
readonly=True
string='Error type'
mail_id
Many2one → mail.mail
comodel_name='mail.mail'
readonly=True
string='Email'
mail_message_id
Many2one → mail.message
comodel_name='mail.message'
readonly=True
string='Message'
name
Char
index=True
readonly=True
string='Subject'
partner_id
Many2one → res.partner
comodel_name='res.partner'
readonly=True
string='Partner'
recipient
Char
readonly=True
string='Recipient email'
recipient_address
Char
compute='_compute_recipient_address'
index=True
readonly=True
store=True
string='Recipient email address'
sender
Char
readonly=True
string='Sender email'
state
Selection
default=False
help=" * The 'Error' status indicates that there was an error when trying to sent the email, for example, 'No valid recipient'\n * The 'Sent' status indicates that message was succesfully sent via outgoing email server (SMTP).\n * The 'Delivered' status indicates that message was succesfully delivered to recipient Mail Exchange (MX) server.\n * The 'Opened' status indicates that message was opened or clicked by recipient.\n * The 'Rejected' status indicates that recipient email address is blacklisted by outgoing email server (SMTP). It is recomended to delete this email address.\n * The 'Spam' status indicates that outgoing email server (SMTP) consider this message as spam.\n * The 'Unsubscribed' status indicates that recipient has requested to be unsubscribed from this message.\n * The 'Bounced' status indicates that message was bounced by recipient Mail Exchange (MX) server.\n * The 'Soft bounced' status indicates that message was soft bounced by recipient Mail Exchange (MX) server.\n"
index=True
readonly=True
string='State'
args: [('error', 'Error'), ('deferred', 'Deferred'), ('sent', 'Sent'), ('delivered', 'Delivered'), ('opened', 'Opened'), ('rejected', 'Rejected'), ('spam', 'Spam'), ('unsub', 'Unsubscribed'), ('bounced', 'Bounced'), ('soft-bounced', 'Soft bounced')]
time
Datetime
index=True
readonly=True
string='Time'
timestamp
Float
digits=dp.get_precision('MailTracking Timestamp')
readonly=True
string='UTC timestamp'
tracking_event_ids
One2many → mail.tracking.event
comodel_name='mail.tracking.event'
inverse_name='tracking_email_id'
readonly=True
string='Tracking events'
email_is_bounced(self, email)
email_score(self)
email_score_from_email(self, email)
event_create(self, event_type, metadata)
event_process(self, request, post, metadata, event_type=None)
smtp_error(self, mail_server, smtp_server, exception)
tracking_img_add(self, email)
date
Date
compute='_compute_date'
readonly=True
store=True
string='Date'
error_description
Char
readonly=True
string='Error description'
error_details
Text
readonly=True
string='Error details'
error_type
Char
readonly=True
string='Error type'
event_type
Selection
readonly=True
selection=[('sent', 'Sent'), ('delivered', 'Delivered'), ('deferral', 'Deferral'), ('hard_bounce', 'Hard bounce'), ('soft_bounce', 'Soft bounce'), ('open', 'Open'), ('click', 'Clicked'), ('spam', 'Spam'), ('unsub', 'Unsubscribed'), ('reject', 'Rejected')]
string='Event type'
ip
Char
readonly=True
string='User IP'
mobile
Boolean
readonly=True
string='Is mobile?'
os_family
Char
readonly=True
string='Operating system family'
recipient
Char
readonly=True
string='Recipient'
recipient_address
Char
compute='_compute_recipient_address'
index=True
readonly=True
store=True
string='Recipient email address'
smtp_server
Char
readonly=True
string='SMTP server'
time
Datetime
readonly=True
string='Time'
timestamp
Float
digits=dp.get_precision('MailTracking Timestamp')
readonly=True
string='UTC timestamp'
tracking_email_id
Many2one → mail.tracking.email
comodel_name='mail.tracking.email'
ondelete='cascade'
readonly=True
required=True
string='Message'
ua_family
Char
readonly=True
string='User agent family'
ua_type
Char
readonly=True
string='User agent type'
url
Char
readonly=True
string='Clicked URL'
user_agent
Char
readonly=True
string='User agent'
user_country_id
Many2one → res.country
comodel_name='res.country'
readonly=True
string='User country'
process_click(self, tracking_email, metadata)
process_deferral(self, tracking_email, metadata)
process_delivered(self, tracking_email, metadata)
process_hard_bounce(self, tracking_email, metadata)
process_open(self, tracking_email, metadata)
process_reject(self, tracking_email, metadata)
process_soft_bounce(self, tracking_email, metadata)
process_spam(self, tracking_email, metadata)
process_unsub(self, tracking_email, metadata)
email_bounced
Boolean
index=True
email_score
Float
compute='_compute_email_score'
readonly=True
tracking_emails_count
Integer
compute='_compute_tracking_emails_count'
readonly=True
email_bounced_set(self, tracking_emails, reason, event=None)
write(self, vals)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/social |
| GIT | |
| GIT | https://github.com/OCA/social.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/social/tree/8.0/mail_tracking |
| VERSION | |
| VERSION | 4.0.0 |
| CATEGORY | |
| CATEGORY | Social Network |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA) |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA) |
| COMMITTERS | |
| COMMITTERS | Holger Brunn, Pedro M. Baeza, GitHub, Carlos Dauden, Stéphane Bidoul (ACSONE), Alex Comba, OCA Transbot, oca-travis, Weblate, Antonio Espinosa |
| WEBSITE | |
| WEBSITE | http://www.tecnativa.com |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:11:26 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - decimal_precision - base - base_setup - web_kanban - web |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
assets_backend |
mail_tracking assets | ir.ui.view | qweb | Inherits web.assets_backend |
view_mail_tracking_email_form |
mail.tracking.email.form | mail.tracking.email | form | New |
view_mail_tracking_email_search |
mail.tracking.email.search | mail.tracking.email | search | New |
view_mail_tracking_email_tree |
mail.tracking.email.tree | mail.tracking.email | tree | New |
view_mail_tracking_event_form |
mail.tracking.event.form | mail.tracking.event | form | New |
view_mail_tracking_event_search |
mail.tracking.event.search | mail.tracking.event | search | New |
view_mail_tracking_event_tree |
mail.tracking.event.tree | mail.tracking.event | tree | New |
view_partner_form |
Partner Form with tracking emails | res.partner | div | Inherits base.view_partner_form |
view_res_partner_filter |
Filter bounced partners | res.partner | filter | Inherits base.view_res_partner_filter |
No new fields.
Public methods (2)build_email(self, email_from, email_to, subject, body, email_cc=None, email_bcc=None, reply_to=False, attachments=None, message_id=None, references=None, object_id=False, subtype='plain', headers=None, body_alternative=None, subtype_alternative='plain')
send_email(self, message, mail_server_id=None, smtp_server=None, smtp_port=None, smtp_user=None, smtp_password=None, smtp_encryption=None, smtp_debug=False)
No new fields.
Public methods (1)send_get_email_dict(self, mail, partner=None)
No new fields.
Public methods (0)No public methods.
bounce_description
Char
readonly=True
string='Bounce description'
bounce_type
Char
readonly=True
string='Bounce type'
date
Date
compute='_compute_date'
readonly=True
store=True
string='Date'
display_name
Char
compute='_compute_display_name'
readonly=True
store=True
string='Display name'
error_description
Char
readonly=True
string='Error description'
error_smtp_server
Char
readonly=True
string='Error SMTP server'
error_type
Char
readonly=True
string='Error type'
mail_id
Many2one → mail.mail
comodel_name='mail.mail'
readonly=True
string='Email'
mail_message_id
Many2one → mail.message
comodel_name='mail.message'
readonly=True
string='Message'
name
Char
index=True
readonly=True
string='Subject'
partner_id
Many2one → res.partner
comodel_name='res.partner'
readonly=True
string='Partner'
recipient
Char
readonly=True
string='Recipient email'
recipient_address
Char
compute='_compute_recipient_address'
index=True
readonly=True
store=True
string='Recipient email address'
sender
Char
readonly=True
string='Sender email'
state
Selection
default=False
help=" * The 'Error' status indicates that there was an error when trying to sent the email, for example, 'No valid recipient'\n * The 'Sent' status indicates that message was succesfully sent via outgoing email server (SMTP).\n * The 'Delivered' status indicates that message was succesfully delivered to recipient Mail Exchange (MX) server.\n * The 'Opened' status indicates that message was opened or clicked by recipient.\n * The 'Rejected' status indicates that recipient email address is blacklisted by outgoing email server (SMTP). It is recomended to delete this email address.\n * The 'Spam' status indicates that outgoing email server (SMTP) consider this message as spam.\n * The 'Unsubscribed' status indicates that recipient has requested to be unsubscribed from this message.\n * The 'Bounced' status indicates that message was bounced by recipient Mail Exchange (MX) server.\n * The 'Soft bounced' status indicates that message was soft bounced by recipient Mail Exchange (MX) server.\n"
index=True
readonly=True
string='State'
args: [('error', 'Error'), ('deferred', 'Deferred'), ('sent', 'Sent'), ('delivered', 'Delivered'), ('opened', 'Opened'), ('rejected', 'Rejected'), ('spam', 'Spam'), ('unsub', 'Unsubscribed'), ('bounced', 'Bounced'), ('soft-bounced', 'Soft bounced')]
time
Datetime
index=True
readonly=True
string='Time'
timestamp
Float
digits=dp.get_precision('MailTracking Timestamp')
readonly=True
string='UTC timestamp'
tracking_event_ids
One2many → mail.tracking.event
comodel_name='mail.tracking.event'
inverse_name='tracking_email_id'
readonly=True
string='Tracking events'
email_is_bounced(self, email)
email_score(self)
email_score_from_email(self, email)
event_create(self, event_type, metadata)
event_process(self, request, post, metadata, event_type=None)
smtp_error(self, mail_server, smtp_server, exception)
tracking_img_add(self, email)
date
Date
compute='_compute_date'
readonly=True
store=True
string='Date'
error_description
Char
readonly=True
string='Error description'
error_details
Text
readonly=True
string='Error details'
error_type
Char
readonly=True
string='Error type'
event_type
Selection
readonly=True
selection=[('sent', 'Sent'), ('delivered', 'Delivered'), ('deferral', 'Deferral'), ('hard_bounce', 'Hard bounce'), ('soft_bounce', 'Soft bounce'), ('open', 'Open'), ('click', 'Clicked'), ('spam', 'Spam'), ('unsub', 'Unsubscribed'), ('reject', 'Rejected')]
string='Event type'
ip
Char
readonly=True
string='User IP'
mobile
Boolean
readonly=True
string='Is mobile?'
os_family
Char
readonly=True
string='Operating system family'
recipient
Char
readonly=True
string='Recipient'
recipient_address
Char
compute='_compute_recipient_address'
index=True
readonly=True
store=True
string='Recipient email address'
smtp_server
Char
readonly=True
string='SMTP server'
time
Datetime
readonly=True
string='Time'
timestamp
Float
digits=dp.get_precision('MailTracking Timestamp')
readonly=True
string='UTC timestamp'
tracking_email_id
Many2one → mail.tracking.email
comodel_name='mail.tracking.email'
ondelete='cascade'
readonly=True
required=True
string='Message'
ua_family
Char
readonly=True
string='User agent family'
ua_type
Char
readonly=True
string='User agent type'
url
Char
readonly=True
string='Clicked URL'
user_agent
Char
readonly=True
string='User agent'
user_country_id
Many2one → res.country
comodel_name='res.country'
readonly=True
string='User country'
process_click(self, tracking_email, metadata)
process_deferral(self, tracking_email, metadata)
process_delivered(self, tracking_email, metadata)
process_hard_bounce(self, tracking_email, metadata)
process_open(self, tracking_email, metadata)
process_reject(self, tracking_email, metadata)
process_soft_bounce(self, tracking_email, metadata)
process_spam(self, tracking_email, metadata)
process_unsub(self, tracking_email, metadata)
email_bounced
Boolean
index=True
email_score
Float
compute='_compute_email_score'
readonly=True
tracking_emails_count
Integer
compute='_compute_tracking_emails_count'
readonly=True
email_bounced_set(self, tracking_emails, reason, event=None)
write(self, vals)