Skip to main content
Lost Messages Routing — A build-to-order Odoo module that catches incoming emails and messages Odoo could not match to a reco — 1/1Illustrative preview

A build-to-order Odoo module that catches incoming emails and messages Odoo could not match to a record,

then routes them to the right partner, lead, ticket, or document.

ECOSIRE designs, builds, installs, and supports it for your database.

What is Lost Messages Routing?

A build-to-order Odoo module that catches incoming emails and messages Odoo could not match to a record, then routes them to the right partner, lead, ticket, or document. ECOSIRE designs, builds, installs, and supports it for your database. Built to order by ECOSIRE for Odoo 17, 18, 19 — indicative price from $999.00 USD; request a quote for a scoped proposal.

Key Features

Captures every inbound `mail.message` that Odoo's gateway failed to route into a dedicated `lost.message` model, preserving raw RFC 5322 payload, headers, and attachments
Records the exact non-match reason (missing `In-Reply-To`/`References`, unknown alias, ambiguous catchall, bounced token) for auditability
Ordered, condition-based routing rules that score candidate records and auto-attach to the best-matching `crm.lead`, `helpdesk.ticket`, `sale.order`, or `project.task`
Multi-signal matching engine: sender-to-`res.partner` resolution, prior thread participation, subject/reference fuzzy matching, and nominated domain keys (order no., ticket ref, VAT ID)
Confidence scoring with a low-confidence review queue so uncertain messages are parked for a human decision instead of mis-filed or dropped
One-click manual re-routing from the queue that re-runs `message_process` against the chosen target record and threads the message correctly
Automatic `res.partner` creation or linkage for genuinely new senders, governed by your rules rather than Odoo's blanket fallback
Server/automated actions drive re-routing, reassignment, and notifications entirely within the Odoo framework — no external cron scripts
Per-team visibility enforced through `ir.model.access.csv` plus record rules so recovery queues respect your security model
QWeb daily/weekly digest report summarising recovered, auto-routed, and still-pending messages for supervisors
OWL/XML review views with filters and grouping by reason, team, and confidence for fast triage
Optional historical back-fill that scans the existing catchall mailbox and reconciles orphaned messages to records
XML-RPC/JSON-RPC endpoints so external systems can push messages or query routing outcomes
Compatible with Odoo 17.0, 18.0, and 19.0, with Community/Enterprise-aware target-model wiring

Built to order, done for you

No DIY setup — a working app, built, installed and supported by ECOSIRE.

  1. 1

    You order

    Start with a one-time build price. We scope it with you at kickoff.

  2. 2

    We build & install

    ECOSIRE builds, configures and installs it on your Odoo.

  3. 3

    Go live + support

    You go live in about one working week, with two weeks of go-live support. Defects in the code we deliver are fixed free of charge.

Technical Specifications

Odoo Compatibility
Odoo 17, Odoo 18, Odoo 19
Editions
Enterprise & Community
License
Licence confirmation required
Python Requirement
Python 3.10+
Database
PostgreSQL 12+

About this Product

Every Odoo database quietly loses inbound communication. When a customer replies from a different address, forwards a thread, or emails an alias whose reply token has been stripped by their mail client, Odoo's mail gateway cannot resolve the In-Reply-To/References headers or the catchall reply pattern back to a mail.thread record. The message then bounces, lands in a generic catchall inbox nobody watches, or is silently discarded. Out of the box, mail.thread.message_process() offers only a narrow set of fallbacks (create a new record, or drop it), and there is no operational view of what failed to route or why. For teams that live in Discuss and depend on email-to-record threading across sales, helpdesk, and projects, this means real replies vanish and follow-ups never happen.

Lost Messages Routing is a build-to-order Odoo module that ECOSIRE designs and builds around your exact routing rules. Technically, it hooks the mail gateway pipeline — extending the mail.thread / mail.alias processing path and adding a dedicated lost.message model — to capture every inbound mail.message that Odoo failed to route, preserving the raw RFC 5322 payload, headers, attachments, and the reason it could not be matched. Nothing is discarded before a human or a rule has had a chance to act on it.

On top of that capture layer we build a configurable matching engine using standard models.Model fields and @api.depends computes: it scores candidate records by sender address against res.partner, by prior thread participation, by subject/reference fuzzy matching, and by any domain-specific keys you nominate (order numbers, ticket refs, VAT IDs). Rules are expressed as ordered, condition-based routing entries so a message can be auto-attached to the best-matching crm.lead, helpdesk.ticket, sale.order, or project.task, or parked in a review queue when confidence is low. Actions are driven by Odoo automated actions / server actions, so re-routing, partner creation, or reassignment happen without leaving the framework. Access is controlled with ir.model.access.csv plus record rules so only the right teams see the recovery queue, and a QWeb-based digest report gives supervisors a daily view of what was recovered and what still needs a decision. Everything is exposed through clean XML/OWL views and, where you need it, the XML-RPC/JSON-RPC API so external systems can push or reconcile messages. It targets Odoo 17.0, 18.0, and 19.0, and we adapt to Community or Enterprise (for example, wiring Helpdesk routing only where Enterprise is present, with a sales/project fallback on Community).

Because this is build-to-order, delivery works like a short, scoped engineering engagement rather than a download. We start with a scoping call to map your aliases, teams, and matching keys, agree acceptance criteria, then build, test on a staging copy of your database, and run UAT with you before go-live — typically one working week from confirmed scope. You receive the full source for your version and we support it after launch. Pricing starts from $999 (indicative, single-company base scope); multi-company alias topologies, additional target models, custom matching integrations, and historical message back-fill/migration volume increase the quoted scope.

What you get

  • Installable, version-pinned source code for your Odoo version (17.0 / 18.0 / 19.0), delivered as a proper module with `__manifest__.py`, models, views, and security files
  • Installation and configuration on your environment, including mail gateway, alias, and routing-rule setup
  • Technical documentation covering the data model, matching-rule schema, and extension points
  • End-user guide plus a live training session for the teams who work the recovery queue
  • Post-go-live support window for defect fixes and routing-rule tuning
  • UAT on a staging copy of your database with an agreed acceptance checklist and a documented rollback plan
  • Git repository handover with full commit history and tagged release
  • Security review of access rules and record rules against your team structure

Who this is for

Sales operations lead

Runs CRM in Odoo and loses inbound replies when prospects answer from a second address or forward a quote thread. Needs those emails to reliably re-attach to the right `crm.lead` so reps follow up in time.

Helpdesk / support manager

Depends on email-to-ticket threading and is bitten by customers replying to old or mangled references. Wants unmatched replies surfaced in a queue and auto-linked to the correct `helpdesk.ticket` instead of spawning duplicates or vanishing.

ERP / IT administrator

Owns the Odoo instance and the catchall mailbox. Needs visibility into what the mail gateway is dropping and why, with routing logic they can audit, secure per team, and maintain across 17/18/19 upgrades.

Operations director at a multi-entity group

Coordinates several companies and shared aliases in one database. Needs company-aware routing so a recovered message lands in the correct entity's records and respects record-rule isolation.

How Lost Messages Routing Compares

CriterionECOSIRECustom BuildCompetitorOdoo Native
Unmatched-message captureDedicated `lost.message` store with raw payload and non-match reasonWhatever you build; easy to miss edge casesGeneric catch bucket, limited reason detailBounces or silently discards
Routing logicOrdered, multi-signal scoring tuned to your keysFully bespoke but you design and maintain itFixed rule set, hard to extendCreate-new-or-drop fallback only
Fit to your dataBuilt around your aliases, teams, and target modelsExact fit if specced and built correctlyGeneric; you adapt to its assumptionsNo configurable matching beyond references
Review queueConfidence-scored queue with OWL triage viewsOnly if you design and build itBasic list, limited triageNone
Security model`ir.model.access.csv` + record rules per team/companyDepends on your implementationCoarse access, rarely company-awareStandard mail access, no recovery layer
Odoo 17/18/19 & edition supportVersion-pinned build, Community/Enterprise-awareYou maintain across versionsOften lags new versionsShips with core, no recovery features
Support & ownershipPost-go-live window + full Git repo handoverIn-house team owns itVendor support, source often closedCommunity/Enterprise support, no custom logic
Total cost & riskFixed quote from $999 indicative, staged UAT + rollbackHigh effort; unbounded maintenanceLow license cost, poor fit riskFree, but lost messages cost you deals

Frequently Asked Questions about Lost Messages Routing

Is this an existing app I can download and install today?

No. Lost Messages Routing is build-to-order. ECOSIRE designs and builds it around your aliases, teams, and matching keys, then installs and supports it. It is a productized engineering service, not an off-the-shelf apps.odoo.com download.

How long does delivery take?

Typically one working week from confirmed scope. After the scoping call we agree acceptance criteria, build the module, test on a staging copy of your database, and run UAT with you before go-live. Larger multi-company or migration-heavy scopes can extend this, and we confirm the timeline in the fixed quote.

How does pricing and scoping work?

Pricing starts from $999 as an indicative single-company base scope. After a short scoping call we send a fixed quote. Drivers that increase scope include multi-company alias topologies, additional target models, custom matching integrations, and the volume of historical messages to back-fill or migrate.

Do you provide support and updates after go-live?

Yes. Every engagement includes a post-go-live support window for defect fixes and routing-rule tuning. We hand over the full Git repository, and we can provide ongoing maintenance or version upgrades (for example moving from Odoo 17 to 18 or 19) under a separate support arrangement.

Which Odoo versions and editions do you support?

Odoo 17.0, 18.0, and 19.0, on both Community and Enterprise. Where a target like Helpdesk is Enterprise-only, we wire routing to it when present and fall back to a sales/project target on Community, so the recovery flow works either way.

Will it change or risk my existing mail configuration?

The module extends the mail gateway pipeline rather than replacing it; messages Odoo already routes correctly are untouched. We build and test everything on a staging copy first, ship with a documented rollback plan, and only go live after UAT sign-off.

Can it recover messages that were already lost before install?

Optionally, yes. As a scoped add-on we can build a back-fill routine that scans your existing catchall mailbox, applies the same matching rules, and reconciles orphaned messages to records. The volume of history to process is one of the factors in the quote.

Request a quote

Lost Messages Routing

A build-to-order Odoo module that catches incoming emails and messages Odoo could not match to a record, then routes them to the right partner, lead, ticket, or document. ECOSIRE designs, builds, installs, and supports it for your database.

  • Captures every inbound `mail.message` that Odoo's gateway failed to route into a dedicated `lost.message` model, preserving raw RFC 5322 payload, headers, and attachments
  • Records the exact non-match reason (missing `In-Reply-To`/`References`, unknown alias, ambiguous catchall, bounced token) for auditability
  • Ordered, condition-based routing rules that score candidate records and auto-attach to the best-matching `crm.lead`, `helpdesk.ticket`, `sale.order`, or `project.task`
  • Multi-signal matching engine: sender-to-`res.partner` resolution, prior thread participation, subject/reference fuzzy matching, and nominated domain keys (order no., ticket ref, VAT ID)

Request a Quotation

Tell us about your Lost Messages Routing requirements and we'll send pricing, licensing options and a tailored proposal — usually within one business day.

No payment now. This sends a quote request to our team — we'll follow up by email with pricing and next steps.