← All posts

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

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:

  1. List the draft or sent quotes created more than a year ago. In Odoo: Sales, Quotations, filter on state and creation date.
  2. 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.
  3. 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.
  4. 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.