Running an HVAC business with Odoo

How do I review sales results in Odoo CRM?

Workflow overview: How do I review sales results in Odoo CRM?
Workflow overview. Instructional screenshots show the actual demo interface.

Review a defined Odoo CRM cohort by stage and source, reconcile counts and estimates, and save a personal reporting view.

Alex wants to know which enquiries reached an outcome and where they came from. We use the existing Demo Air examples, include the lost enquiry, remove an internal test from the report and check missing sources. The result is a saved personal view of three commercial training opportunities, with counts and CRM estimates kept separate from order totals and receipts.

Alex Rivera and Demo Air HVAC are fictional training examples. Prices, dates, quantities and business situations in this guide are illustrative.

Before you begin

Tested in stock Odoo 20.0-20260926 Community as the demo owner administrator, with official modules and standard configuration. Complete How do I track where my Odoo CRM leads come from?, How do I mark an opportunity as won or lost in Odoo? and How can customers view and accept an Odoo quotation online?. Reuse the existing Demo Service Enquiry H16 and the two H22 outcome examples. The Odoo-authored LGPL-3 CRM module is already installed; no new app, customization or business rule is added. This owner-only review uses the existing October 2026 training records in America/New_York. Other users and date ranges can produce different results. Leave the source records unchanged while checking the report. An internal reminder-test enquiry is present in this saved checkpoint and will be excluded from the commercial cohort, without deleting it.

Step-by-step workflow

Step 1. Define the question before choosing a total

Use this question: What happened to the October Demo commercial enquiries, and which sources are missing? This is a cohort based on Created on, not a report of everything closed or invoiced during October. Keep the H03 access-test records and internal reminder test outside this commercial review. Do not enter expected amounts, change probabilities or mark an opportunity Won to make the report look complete.

Action 1: Review the existing service enquiry without changing it. The actual target is highlighted in gold.
Review the existing service enquiry without changing it.

Step 2. Open the native Pipeline Analysis pivot

Open CRM → Reporting → Pipeline, then click Pivot View. The page title is Pipeline Analysis. Its initial measure is Prorated Revenue, with Stage rows and creation-month columns in this runtime. This differs from opening the owner’s usual My Pipeline board. Review the report’s own filters before interpreting its totals.

Action 2: Open CRM Reporting. The actual target is highlighted in gold.
Open CRM Reporting.
Action 3: Choose Pipeline reporting. The actual target is highlighted in gold.
Choose Pipeline reporting.
Action 4: Switch to Pivot View. The actual target is highlighted in gold.
Switch to Pivot View.
Action 5: The initial measure is Prorated Revenue. The actual target is highlighted in gold.
The initial measure is Prorated Revenue.

Step 3. Choose the creation month and named cohort

Open Toggle Search Panel → Created on → October. In this test, 2026 is selected automatically; check the visible Created on: October 2026 filter. In the search box, type Demo and choose Search Opportunity for: Demo. This filters the opportunity name, rather than searching a salesperson or customer called Demo. The initial active-only result has three matching records in this checkpoint.

Action 6: Open the report search panel. The actual target is highlighted in gold.
Open the report search panel.
Action 7: Choose the Created on period. The actual target is highlighted in gold.
Choose the Created on period.
Action 8: Select October and check the 2026 year. The actual target is highlighted in gold.
Select October and check the 2026 year.
Action 9: Search opportunity names for Demo. The actual target is highlighted in gold.
Search opportunity names for Demo.
Action 10: Choose the Opportunity name search. The actual target is highlighted in gold.
Choose the Opportunity name search.
Action 11: Check October 2026 before interpreting totals. The actual target is highlighted in gold.
Check October 2026 before interpreting totals.

Step 4. Include the lost enquiry explicitly

In Toggle Search Panel, select Active and Lost. The visible filter reads Active or Lost. The matching total becomes four, including the archived loss. Review that OR wording rather than assuming two selected filters mean AND. Lost and stage are separate: this loss remains in New stage even though its outcome is Lost. A stage-only review would miss that distinction.

Action 12: Open the filters to include the lost enquiry. The actual target is highlighted in gold.
Open the filters to include the lost enquiry.
Action 13: Select Active opportunities. The actual target is highlighted in gold.
Select Active opportunities.
Action 14: Also select Lost opportunities. The actual target is highlighted in gold.
Also select Lost opportunities.
Action 15: Verify the Active or Lost filter. The actual target is highlighted in gold.
Verify the Active or Lost filter.

Step 5. Compare Count, Expected Revenue and Prorated Revenue

Open Measures, keep Prorated Revenue selected and add Count and Expected Revenue. The stage pivot now shows 4 records, $260 Expected Revenue and $257.95 Prorated Revenue. Its rows are New1, Qualified1 and Won2. The two Won examples have zero entered expected revenue; that does not establish a collected-revenue total. Check both the selected measure names and record count when discussing a number.

Action 16: Open the native Measures menu. The actual target is highlighted in gold.
Open the native Measures menu.
Action 17: Add Count and retain Prorated Revenue. The actual target is highlighted in gold.
Add Count and retain Prorated Revenue.
Action 18: Add Expected Revenue as a separate measure. The actual target is highlighted in gold.
Add Expected Revenue as a separate measure.
Action 19: Compare four records and both money measures. The actual target is highlighted in gold.
Compare four records and both money measures.

Step 6. Inspect the sources and drill into missing values

In Toggle Search Panel’s group-by controls, choose Source. The pivot shows Demo Local Website H19: 1 and None: 3. Click the 3 Count cell on None to open its underlying records. They are the two H22 outcomes and the internal reminder test. Open Demo Lost Enquiry H22: the form shows LOST, a Restore button, zero probability and New stage; its retained loss reason is Too expensive. Leave Restore and the stage controls unused. None is a missing source, not another marketing channel.

Action 20: Open grouping controls for Source. The actual target is highlighted in gold.
Open grouping controls for Source.
Action 21: Group the same four records by Source. The actual target is highlighted in gold.
Group the same four records by Source.
Action 22: The known website source has one opportunity. The actual target is highlighted in gold.
The known website source has one opportunity.
Action 23: Open the three records with no source. The actual target is highlighted in gold.
Open the three records with no source.
Action 24: The drilled list includes the archived loss. The actual target is highlighted in gold.
The drilled list includes the archived loss.
Action 25: Open the existing lost enquiry without editing it. The actual target is highlighted in gold.
Open the existing lost enquiry without editing it.
Action 26: LOST is retained; leave Restore unused. The actual target is highlighted in gold.
LOST is retained; leave Restore unused.
Action 27: The archived loss retains zero probability. The actual target is highlighted in gold.
The archived loss retains zero probability.
Action 28: The lost outcome remains in New stage. The actual target is highlighted in gold.
The lost outcome remains in New stage.
Action 29: The retained loss reason is Too expensive. The actual target is highlighted in gold.
The retained loss reason is Too expensive.

Step 7. Return to the original report and exclude the internal test

Use the Pipeline Analysis breadcrumbs until the original report and its pivot controls return; the first breadcrumb from a form may return only to the drilled list. Confirm the original four-record source pivot before editing its filters. Open Toggle Search Panel → Custom Filter…. Click the field selector initially showing Country, choose Opportunity, set does not contain and enter Internal Reminder. Leave the value field, then click Search. Check that the applied Opportunity facet includes the full Internal Reminder value before saving a favorite. In this capture, the first apply omitted the value and showed no data despite the visible entry. If that happens, click the existing facet’s edit icon to reopen Custom Filter, re-enter Internal Reminder in its existing Opportunity / does not contain condition, leave the field with Tab, then click Search. Verify the complete applied value and the three-record cohort. This native correction changes the report condition without changing or deleting the internal enquiry; the underlying cause of the omitted value was not established.

Action 30: Return first to the drilled Pipeline Analysis list. The actual target is highlighted in gold.
Return first to the drilled Pipeline Analysis list.
Action 31: Return again to the original report pivot. The actual target is highlighted in gold.
Return again to the original report pivot.
Action 32: Check the original four-record source report. The actual target is highlighted in gold.
Check the original four-record source report.
Action 33: Open the original report filters. The actual target is highlighted in gold.
Open the original report filters.
Action 34: Add an exclusion through Custom Filter. The actual target is highlighted in gold.
Add an exclusion through Custom Filter.
Action 35: Change the Country field selector to Opportunity. The actual target is highlighted in gold.
Change the Country field selector to Opportunity.
Action 36: Find and select the Opportunity field. The actual target is highlighted in gold.
Find and select the Opportunity field.
Action 37: Choose does not contain. The actual target is highlighted in gold.
Choose does not contain.
Action 38: Exclude only names containing Internal Reminder. The actual target is highlighted in gold.
Exclude only names containing Internal Reminder.
Action 39: Apply the report condition without editing an enquiry. The actual target is highlighted in gold.
Apply the report condition without editing an enquiry.
Action 40: Check the value shown in the applied exclusion facet. The actual target is highlighted in gold.
Check the value shown in the applied exclusion facet.
Action 41: Edit the applied Opportunity exclusion. The actual target is highlighted in gold.
Edit the applied Opportunity exclusion.
Action 42: Enter Internal Reminder in the reopened condition. The actual target is highlighted in gold.
Enter Internal Reminder in the reopened condition.
Action 43: Apply the complete exclusion condition. The actual target is highlighted in gold.
Apply the complete exclusion condition.
Action 44: Verify Internal Reminder in the applied facet. The actual target is highlighted in gold.
Verify Internal Reminder in the applied facet.

Step 8. Reconcile the final cohort and source gaps

The final Source pivot shows Total3 / Expected Revenue $260 / Prorated Revenue $257.95. Demo Local Website H19 has one record and all $260/$257.95; None has two records and zero entered estimates. The three records are the Qualified service enquiry, the Won example and the archived Lost example. The service enquiry’s displayed probability is 99.21%; $260 weighted by that percentage rounds to $257.95 here. Treat the two missing sources as data to review separately, not as evidence that they arrived through the website.

Action 45: The commercial cohort totals three records. The actual target is highlighted in gold.
The commercial cohort totals three records.
Action 46: The known source holds the $260 estimate. The actual target is highlighted in gold.
The known source holds the $260 estimate.
Action 47: Two commercial opportunities have no source. The actual target is highlighted in gold.
Two commercial opportunities have no source.

Open Toggle Search Panel → Save search. Enter Filter name H68 October Demo opportunities by source, leave Default filter unchecked and click Save once. The saved search belongs to Demo Air Owner in this test. It retains the source grouping, creation-month columns, three selected measures, October 2026 date boundaries, Active-or-Lost scope and internal-test exclusion. No shared/default report or scheduled delivery is configured.

Action 48: Open Favorites for this exact report view. The actual target is highlighted in gold.
Open Favorites for this exact report view.
Action 49: Save this search as a personal view. The actual target is highlighted in gold.
Save this search as a personal view.
Action 50: Name this October Demo source view. The actual target is highlighted in gold.
Name this October Demo source view.
Action 51: Leave Default filter unchecked. The actual target is highlighted in gold.
Leave Default filter unchecked.
Action 52: Save the personal search once. The actual target is highlighted in gold.
Save the personal search once.
Action 53: The saved personal favorite is now applied. The actual target is highlighted in gold.
The saved personal favorite is now applied.

Step 10. Reload and recall the saved view

Reload the report. Because the search is not the default, the initial view no longer has the saved cohort filters. Choose Pivot View before expecting pivot rows, then open Toggle Search Panel and select H68 October Demo opportunities by source. Wait for that favorite’s name and the source rows to appear. Count3, the two source groups and both money measures return. On a fresh report visit, select Pivot View and recall the existing favorite again. The saved search retains its filters, grouping and pivot measures; it does not universally switch a fresh Graph view to Pivot. The two checked pivot recalls returned the same totals. A fresh Graph selection exposed the view difference and required selecting Pivot to inspect the rows. Only one favorite was saved. Reuse it instead of saving another copy, and review its October 2026 period before using it for a different month.

Action 54: Reload the report before recalling the personal view. The actual target is highlighted in gold.
Reload the report before recalling the personal view.
Action 55: The nondefault saved filters are absent after reload. The actual target is highlighted in gold.
The nondefault saved filters are absent after reload.
Action 56: Open the saved personal report list. The actual target is highlighted in gold.
Open the saved personal report list.
Action 57: Recall the existing October Demo source view. The actual target is highlighted in gold.
Recall the existing October Demo source view.
Action 59: Open a fresh report before the second recall. The actual target is highlighted in gold.
Open a fresh report before the second recall.
Action 60: Open the same saved personal report again. The actual target is highlighted in gold.
Open the same saved personal report again.
Action 61: Recall the same favorite without saving a copy. The actual target is highlighted in gold.
Recall the same favorite without saving a copy.
Action 62: Choose Pivot View for the recalled source report. The actual target is highlighted in gold.
Choose Pivot View for the recalled source report.
Action 63: The recalled pivot retains three records and both measures. The actual target is highlighted in gold.
The recalled pivot retains three records and both measures.
Action 58: Review the recalled source totals. The actual target is highlighted in gold.
Review the recalled source totals.

Step 11. Open the source enquiry and compare its actual order

Click List View and expand Demo Local Website H19 and None. The grouped list has two source headers containing one and two records; its two-group counter is not a count of two opportunities. Open Demo Service Enquiry H16. It remains Qualified, with Expected Revenue $260 and Probability 99.21. Its $275.60 Orders smart button opens existing S00001. That sales order shows $260 Untaxed Amount + $15.60 demo tax = $275.60 Total. The CRM estimate and tax-inclusive order total differ for an identifiable reason. Leave the existing order unchanged.

Action 64: Switch the recalled cohort to List View. The actual target is highlighted in gold.
Switch the recalled cohort to List View.
Action 65: Expand the one known website-source record. The actual target is highlighted in gold.
Expand the one known website-source record.
Action 66: Expand the two opportunities without a source. The actual target is highlighted in gold.
Expand the two opportunities without a source.
Action 67: The pager counts two groups, not two opportunities. The actual target is highlighted in gold.
The pager counts two groups, not two opportunities.
Action 71: Return to the same grouped report records. The actual target is highlighted in gold.
Return to the same grouped report records.
Action 72: Open the existing Qualified service enquiry. The actual target is highlighted in gold.
Open the existing Qualified service enquiry.
Action 73: The source enquiry remains Qualified. The actual target is highlighted in gold.
The source enquiry remains Qualified.
Action 74: Expected Revenue is the entered $260 estimate. The actual target is highlighted in gold.
Expected Revenue is the entered $260 estimate.
Action 75: Current probability is 99.21 percent. The actual target is highlighted in gold.
Current probability is 99.21 percent.
Action 77: Open the existing $275.60 sales order. The actual target is highlighted in gold.
Open the existing $275.60 sales order.
Action 78: S00001 has an untaxed amount of $260. The actual target is highlighted in gold.
S00001 has an untaxed amount of $260.
Action 79: The illustrative tax adds $15.60. The actual target is highlighted in gold.
The illustrative tax adds $15.60.
Action 80: The existing order total is $275.60. The actual target is highlighted in gold.
The existing order total is $275.60.

Step 12. Keep outcome, order and cash review separate

Return to Pipeline Analysis and recall the existing favorite when needed. The Won example has no linked order, while the Qualified service enquiry has confirmed S00001; the stage label and linked order answer different questions. All three reviewed opportunities have no Expected Closing date. This guide has not produced a cash forecast, a business win-rate benchmark or an invoice/payment report. The six opportunities, source/stage labels and reviewed orders, invoices, payments, stock and task/time records retained their existing values. The selected portal-user, role, module and mail-route checks also matched the starting state. Only the personal saved-search record is new; these checks cover the selected records and settings.

Action 68: Inspect the Won example without changing its outcome. The actual target is highlighted in gold.
Inspect the Won example without changing its outcome.
Action 69: Won stage is separate from an order or receipt. The actual target is highlighted in gold.
Won stage is separate from an order or receipt.
Action 70: The Won example has no Expected Closing date. The actual target is highlighted in gold.
The Won example has no Expected Closing date.
Action 76: Expected Closing remains blank on the source enquiry. The actual target is highlighted in gold.
Expected Closing remains blank on the source enquiry.

Check the result

One native personal, nondefault Pipeline Analysis favorite recalls the same three commercial opportunities after reload. It retains October 2026 creation dates, name contains Demo, Active OR Lost, internal-test exclusion, Source grouping and Count/Expected Revenue/Prorated Revenue. The actual pivot reconciles Total3/$260/$257.95, known website source1/$260/$257.95 and None2/$0/$0. The archived loss remains Lost/New/zero probability; the service opportunity remains Qualified/99.21% with linked S00001. The native Orders handoff shows its $260 untaxed/$15.60 tax/$275.60 total. The six original opportunities and stage/source definitions retained their existing values. The reviewed sales, purchase, finance, payment, stock and task/time records also matched the starting state, as did the selected portal-user, role, module and mail-route checks. Only the new personal, nondefault favorite was saved; no business transaction or amount was changed.

If your screen differs

Use the report’s period, cohort, active/lost scope and selected measures together. Stage New can include a lost record; Won does not establish an order or receipt. None is missing source data. Grouped-list page counters can count groups rather than underlying opportunities. A saved personal search is not a default, shared dashboard, scheduled report or prediction. This guide tests the owner’s October training cohort and two recalls; different roles, dates, grouping, invoices and payments need their own review. All reviewed Expected Closing dates are empty. Wait for visible settled controls and values after navigation: hidden cached views and immediate snapshots can show prior content. Verify the full exclusion value in the applied facet, not only the visible input before Search. If the value is omitted, use the native facet edit and re-entry sequence in Step 7 and check the cohort before saving. Select Pivot View when a fresh report opens Graph; the saved search does not prove an automatic view-type switch. No source records were changed to normalize the report.

Frequently asked questions

How do I review sales results in Odoo CRM? Open CRM → Reporting → Pipeline and choose a graph, pivot or list for a defined question. In the tested stock Odoo 20 Community workflow, October creation dates, a named commercial cohort and Active-or-Lost scope reconcile three source records. Count, Expected Revenue and Prorated Revenue answer different questions; drill into the underlying opportunities before saving the personal view.
Why do Odoo CRM and invoice totals differ? Compare the actual records, states, dates and amount definitions. This guide’s CRM source has $260 Expected Revenue and $257.95 Prorated Revenue. Its linked S00001 order is $275.60 including $15.60 illustrative tax. That order comparison does not itself reconcile posted invoices, credits, deposits or payments; review those separately rather than treating a pipeline total as accounting revenue.
Can an Odoo CRM report predict collected revenue? No collected-revenue prediction is established here. The demonstrated prorated value uses the opportunity’s amount and current probability, while the reviewed Expected Closing dates are blank. Won, an order total and a recorded payment are separate facts. The saved report supports this cohort review, without proving when or how much cash will be collected.

Continue building the business

Continue with How do I set up a no-code reminder rule in Odoo?. Keep report review separate from the reminder rule’s tested trigger, duplicate guard and stopping behavior.

Talk to an Odoo partner

Bring your current process and the result you need to Onward to plan your Odoo workflow. Talk to an Odoo partner.