Skip to content

mail_tracking technical debt and roadmap #80

@ivantodorovich

Description

@ivantodorovich

Hello 👋🏻

From my PoV there's a big technical debt in this module, with many features overlapping with the standard. So, perhaps it's a good idea to discuss and come up with a clearer roadmap.

From what I can see, this module contains the following features.

I put my analysis on each, but this is just to open the discussion. I'm biased because I really only care about the event tracking feature -- all the rest is not useful to me.

1. Track email events (⭐ main feature)

Image

Adds the “To:” section to every email in the chatter.
The status icon quickly shows whether the email has been sent, received, opened bounced, or failed.
Clicking on the name/icon, it expands the tracking model to show all tracking events related to this email, for that recipient.
The captured event shows how many times the email was opened, at what time, and from which IPs.

Odoo core alternative

❌ -- Nothing like this

Although events related to sending failure and bounces are also captured by Odoo.
So perhaps this module should only track user events.

Thoughts

  • Keep, but focused on user events

2. Add the Failed Messages section in chatter

Image

A new section above the thread messages to quickly spot any failed messages.

From there, users can:

  • Set as Reviewed (ignore this alert)
  • Retry (re-send)
  • Go to the message (to see it)

Odoo core alternative

There’s no section like this, but failed messages have a red envelope.

This red envelope helps identifying messages that haven’t been delivered and can be clicked to show a popup that let users:

  • Re-send the email
  • Ignore the exception
Image Image

Thoughts

  • ❌ Drop this feature. Overlaps with core.
  • Alternatively, move to a separate mail_chatter_failed_messages module, basing the computation on top of the core features instead of mail_tracking. ❓

3. Failed messages mail box in Discuss App

Image

Adds a “Failed” mailbox to quickly see all failed outgoing emails send by the current user.

Odoo core alternative

❌ -- Nothing like this

Thoughts

  • ❌ Drop feature
  • Alternatively, refactor to compute on top of the core mail.notification model and move to a separate module (e.g: mail_failed_mailbox) ❓

4. Failed messages filter

Image

To every model having a chatter, it adds a “Failed sent messages” filter to easily spot records with unmanaged failed messaged.

Odoo core alternative

Image

Odoo will create a notification for the Email Failure, directly from the discuss app.
The notification can then be handled by the user

Thoughts

  • ❌ Drop feature
  • Alternatively, refactor to compute on top of the core mail.notification model and move to a separate module (e.g: mail_failed_filter) ❓

5. Email Score and Email Bounced fields

Image

In the res.partner model, there are two new fields used to analyze a partner’s email deliverability.

The score is computed by aggregating the email tracking events data.

Odoo core alternative

Odoo does things differently, perhaps smarter, and invisibly.

Every partner has a message_bounce (Integer) field, which tracks the number of bounced emails.

This counter is reset when an email is successfully delivered, or when an email is received from this address. Meaning, it actually tracks the number of bounced emails in a row.

When an email is sent from a thread to a partner who’s emails have bounced more than 5 times in a row (BLACKLIST_MAX_BOUNCED_LIMIT), then it automatically blacklists this email to not send any more mails to them.

Blacklisted emails show with a prohibited icon (🚫) in the partner form, with a tooltip: “This email has been automatically added in blocklist because of too much bounced”

Thoughts

  • Not clear. From my POV this is not useful.

6. Email bounced contact’s filter

There’s an “Email Bounced” res.partner filter that shows partners whose email address have been used to try to send an email that finally bounced. Meant to help identify mistakes in the partner’s email addresses.

Odoo core alternative

There’s no pre-defined filter, but it’s possible to search on the fields message_bounce (number of bounced emails in a row, 0 if the last email succeeded).

There’s also the is_blacklisted field, which could be used in combination to know if the email has been blacklisted due to bounced emails.

Thoughts

  • ❌ Drop feature
  • Alternatively, refactor to use the core fields and move to a separate module (e.g: mail_bounced_filter) ❓

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions