Two thirds of the Odoo pipeline were abandoned quotes
30 September 2026
On the Odoo of a security equipment distributor, the "open" pipeline showed a little over 30 million euros before tax. A fine number. Except that 19.8 million of it sat in 4,317 quotes created more than a year earlier, across 1,230 accounts. The oldest was 2,094 days old, almost six years. 65% of the pipeline was ancient history.
Why it happens
In Odoo a quote has three outcomes: it is confirmed, it is cancelled, or it stays. Nothing marks it as lost except a person clicking Cancel. And nobody does: the rep has moved on, the assistant does not know whether the customer will wake up, and cancelling a quote feels like an admission.
So they stay. In "draft" or "sent", with their amount, visible in every dashboard that filters on those two states.
What it damages
- Sales load. A rep with 400 open quotes looks swamped. They have about a hundred live ones.
- Conversion rate. Quotes created within the year add up to 10.7 million. Any quote-to-order rate computed on the 30 million displayed is divided by almost three.
- Forecasts. Anything that multiplies the pipeline by a probability multiplies 20 million ghosts.
- Every other analysis. At this distributor, the rep-overload alert had to restrict itself to the last 90 days to stay readable. A symptom treated instead of the cause.
How to clean up without breaking anything
The temptation is to cancel everything at once. Do not do it blind: a few of these quotes are long deals, genuinely in progress. A method that works:
- List the draft or sent quotes created more than a year ago. In Odoo: Sales, Quotations, filter on state and creation date.
- Pull out the exceptions. A quote with an activity or a note less than 90 days old may be alive. Take it off the list and ask the rep.
- Cancel the rest in bulk. Multi-select, Action, Cancel. Odoo keeps everything: a cancelled quote goes back to draft in one click if the customer returns.
- Stop it recurring. One simple rule: a sent quote with no answer for 120 days is cancelled, every month, by the same person. Write it into the procedure, or in a year you will be reading this post again.
How ERP-BI flags it
Every night ERP-BI counts the quotes open for more than a year, their amount, the share of the pipeline they make up and the oldest one. While the count is above 50, a card stays in the Odoo category of the recommendations, with those figures. If you decide to leave them, one click dismisses it and it only comes back when the count changes. And every analysis in the app (load, conversion, quotes going cold) works on live quotes, not on the 4,317.