Short answer: A lost reason is only worth having if somebody reads the report. In Odoo 19 CRM the reason is an optional field on the Mark Lost pop-up, stored on the opportunity and grouped under CRM ‣ Reporting ‣ Pipeline. Keep the list short, write what each option means, put the detail in the Closing Note, and review the grouped report on a fixed day each month. Be aware that restoring or merging a lost record can change the data you are trying to study.
Applies to
- Odoo version: Odoo 19. The lost-opportunities and Pipeline Analysis pages are identical in the 20.0 documentation, as far as I could tell by comparing the text.
- Edition: Community and Enterprise. The
crm.lost.reasonmodel is in the Community code. - Apps: CRM. Leads use the same reasons as opportunities when leads are enabled.
What does Odoo actually store when a deal is lost?
Marking an opportunity lost opens Mark Lost, with a Lost Reason drop-down and a Closing Note. Both are optional. If the reason you need is not on the list, you can create one right there.
Underneath, the 19.0 source shows what “lost” means: the record is archived and its probability is set to zero. The reason is a many-to-one field, lost_reason_id, pointing at crm.lost.reason, whose label field is Description. It is tracked, and it is protected from deletion while records use it (ondelete='restrict'). So retiring a reason means archiving it, not deleting it.
That is also why the Pipeline Analysis page says lost opportunities are archived automatically, but not every archived record is lost. If you filter on archived rather than lost, you will mix in other things.
How do I maintain the list of reasons?
Go to CRM ‣ Configuration ‣ Lost Reasons. Edit a reason through its Description, or click New to add one.
My rule of thumb is to work from the decisions the business could change. “Price” and “Timing” are not very helpful on their own. A set like No budget this year, Chose a competitor, No response, Requirement we do not meet and Duplicate or test gives the review something to act on. Keep the list under about ten, and write one sentence for each so two salespeople pick the same one for the same situation.
How do I read the report?
Open CRM ‣ Reporting ‣ Pipeline. Apply the Lost filter, then under Group By choose Lost Reason. The default is a bar chart of counts, and the pivot view lets you split by salesperson, stage or campaign. For one reason across all opportunities, CRM ‣ Sales ‣ My Pipeline supports a custom filter on Lost Reason, with the operator is in for several reasons at once.
Read the numbers next to the stage where the deal was lost. A cluster of “No response” at the first stage tells a different story from the same reason after a quotation.
What happens when a lost record comes back?
Two things in the data are worth knowing.
First, restoring. The documentation shows Restore on the form, or Actions ‣ Unarchive on a selection in list view. In the 19.0 source, unarchiving a record clears its lost reason. After a restore, the reason is gone from the field, so copy anything important into the chatter first.
Second, merging. The merge guide warns that merging a lost record with an active one pulls it back into the pipeline. In the source, the merged record gets no lost reason when the first record in the merge still has a probability.
Both mean the monthly numbers can shift after the fact, so take a note of the month-end figures when you review, rather than assuming a later query will return the same answer.
When it fits and when it doesn’t
A monthly review fits any team that loses deals regularly and can change something: pricing, response time, qualification. It does not fit a team with very few deals, where a conversation with each salesperson tells you more than a chart. And it is not worth building custom reports until the standard grouped view has been used for a few months.
A worked example
A firm that fits out offices uses the reasons above. At the first review, many losses sit under “No response” at the quotation stage. Reading the Closing Notes, the manager sees that most were quotes sent without any planned follow-up activity. Nothing is wrong with prices. The change is a rule that every quotation has a follow-up activity booked on the day it is sent.
Common mistakes
- Making the list long. Salespeople pick the first plausible option.
- Skipping the Closing Note. The reason says what, the note says why.
- Deleting a reason. The database refuses while records use it, so archive instead.
- Restoring without a note. The reason field is cleared on unarchive.
Related
- Activities, forecasting and reporting in Odoo CRM covers the other reports that sit beside this one.
- Common Odoo CRM sales mistakes lists habits that make lost data unreliable.
- Handing over Odoo CRM opportunities matters when a leaver’s lost deals need review.
There is a longer screen by screen walkthrough of this on sajjalbajaj.in.
Official references
- Lost opportunities (19.0)
- Pipeline Analysis (19.0)
- Merge similar leads and opportunities (19.0)
- crm.lost.reason source (19.0)
- crm.lead source (19.0)
How this article was checked: I read the Odoo 19 lost-opportunities, Pipeline Analysis and merge pages, compared them with 20.0, and read the 19.0 crm.lead and crm.lost.reason source for the stored fields and the restore and merge behaviour. I did not run a live database.
If you want help turning this into a reliable monthly report, have a look at the work page.