mail_tracking
Provide per-recipient email delivery/open tracking for Odoo chatter messages with visible status icons and failure handling.
Key Features
- mail.mail: Creates mail.tracking.email records for each outgoing recipient and injects a tracking pixel to identify messages for later status updates.
- ir.mail_server: Adds tracking headers extracted from the pixel, optionally strips the pixel via system parameter, and records send events or SMTP errors against tracking entries.
- mail.tracking.email: Stores per-recipient tracking states, links to detailed events, marks bounced partners, deduplicates concurrent opens/clicks, and can autovacuum old records when configured.
- mail.tracking.event: Logs sent, delivered, open, click, bounce, spam, unsubscribe, and reject events with metadata while updating the parent tracking state.
- mail.thread: Persists raw To/Cc recipients on messages, shows tracking status icons for each recipient in chatter, and adds a global "Failed sent messages" search filter on chatter-enabled models.
- mail.message: Flags messages with failed tracking states, exposes partner-level tracking details and failed-recipient info to widgets, and supports searching and counting failed messages.
- res.users: Adds a Discuss mailbox entry for failed tracked messages with a live counter.
- mail.resend.message: Prefills the resend wizard with failed recipients, clears the needs-action flag, and resets tracking states when resending to selected partners.
- res.partner: Displays a computed email score, tracking email count, and bounced flag derived from tracking data for partner addresses.
- res.config.settings: Provides settings to show alias addresses in tracking displays and to define the maximum age before old tracking email records are deleted.
- mail.alias: Caches alias and catchall addresses to exclude them from tracking recipients and refreshes the cache when aliases change.
- controller.mail_tracking: Serves the tracking pixel endpoint that records opens and request metadata for tracked emails.
- controller.mailbox: Exposes a JSON route to fetch failed tracked messages for the Discuss interface.