Running an HVAC business with Odoo

How do I track where my Odoo CRM leads come from?

Workflow overview: How do I track where my Odoo CRM leads come from?
Workflow overview. Instructional screenshots show the actual demo interface.

Save source, medium and campaign labels on an Odoo opportunity, then group the visible pipeline by Source.

Alex wants to see where service enquiries came from. The office can save a reported source on an existing opportunity and group its current pipeline by that label. This example uses a fictional website enquiry and leaves unknown sources blank.

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 opportunity qualification. Reuse Demo Service Enquiry H16, customer Demo Property H08 and its existing qualification Notes. This is a manual-label workflow using CRM and native marketing fields. Website-form capture is a separate pending lesson.

Step-by-step workflow

Stock Odoo 20 Community, owner role. Save reported Source, existing Website Medium and a fictional Campaign on the same qualified enquiry. Reopen the fields, then group List View by Source under My Opportunities: one labelled record and two unknowns. Qualification Notes, other enquiries, contacts, orders, finance and stock stay unchanged. These manual labels and filtered counts establish no automatic website attribution, conversion, acquisition cost or campaign ROI.

Step 1. Open the existing enquiry

Open CRM → Pipeline and select Demo Service Enquiry H16. Check the customer, salesperson and Qualified stage. Reuse this record; creating another lead would split the example's enquiry and quotation history.

Action 1: Open the app menu. The actual target is highlighted in gold.
Open the app menu.
Action 2: Choose CRM. The actual target is highlighted in gold.
Choose CRM.
Action 3: Reuse the existing Demo Service Enquiry H16. The actual target is highlighted in gold.
Reuse the existing Demo Service Enquiry H16.
Action 4: Keep Contact Demo Property H08. The actual target is highlighted in gold.
Keep Contact Demo Property H08.
Action 5: Keep the existing salesperson. The actual target is highlighted in gold.
Keep the existing salesperson.
Action 6: The enquiry remains Qualified. The actual target is highlighted in gold.
The enquiry remains Qualified.
Action 7: Open Notes to review the existing qualification context. The actual target is highlighted in gold.
Open Notes to review the existing qualification context.
Action 8: Preserve the stated request, service site and next action. The actual target is highlighted in gold.
Preserve the stated request, service site and next action.

Step 2. Find the marketing fields

Choose Extra Info. In Marketing, locate Campaign, Medium, Source and Referred By. Use the reported origin of an enquiry; an empty value is appropriate when the office has no reliable source.

Action 9: Open Extra Info. The actual target is highlighted in gold.
Open Extra Info.
Action 10: Use Marketing Source for the reported enquiry origin. The actual target is highlighted in gold.
Use Marketing Source for the reported enquiry origin.

Step 3. Select the channel and source

Set Medium to the existing Website entry. In Source, type Demo Local Website H19 and choose the native Create option if it is absent. This fictional source describes the reported origin; it does not prove how a visitor arrived at the website.

Action 11: Find the existing Website medium. The actual target is highlighted in gold.
Find the existing Website medium.
Action 12: Select the existing Website entry. The actual target is highlighted in gold.
Select the existing Website entry.
Action 13: Enter the fictional reported source. The actual target is highlighted in gold.
Enter the fictional reported source.
Action 14: Create Demo Local Website H19 once through the native option. The actual target is highlighted in gold.
Create Demo Local Website H19 once through the native option.

Step 4. Set the campaign and save

In Campaign, enter Demo Autumn Service H19 and choose Create if absent. Leave Referred By blank. Choose Save manually, wait for the form to settle, then reopen Extra Info. Confirm all three labels persist on the same enquiry.

Action 15: Enter the fictional autumn service campaign. The actual target is highlighted in gold.
Enter the fictional autumn service campaign.
Action 16: Create Demo Autumn Service H19 once. The actual target is highlighted in gold.
Create Demo Autumn Service H19 once.
Action 17: Leave unsupported Referred By blank. The actual target is highlighted in gold.
Leave unsupported Referred By blank.
Action 18: Commit the selected labels on the enquiry heading. The actual target is highlighted in gold.
Commit the selected labels on the enquiry heading.
Action 19: Save the same enquiry once and wait for readback. The actual target is highlighted in gold.
Save the same enquiry once and wait for readback.
Action 20: Reopen Extra Info on the same saved enquiry. The actual target is highlighted in gold.
Reopen Extra Info on the same saved enquiry.
Action 21: Confirm Source persisted as Demo Local Website H19. The actual target is highlighted in gold.
Confirm Source persisted as Demo Local Website H19.
Action 22: Confirm Medium persisted as Website. The actual target is highlighted in gold.
Confirm Medium persisted as Website.
Action 23: Confirm Campaign persisted as Demo Autumn Service H19. The actual target is highlighted in gold.
Confirm Campaign persisted as Demo Autumn Service H19.

Step 5. Group the visible pipeline by Source

Return to CRM → Pipeline, choose List View, open Toggle Search Panel, and select Group By → Source. Keep the visible My Opportunities filter explicit: it limits the report. In this fixture, Demo Local Website H19 has one record and None has two. Review the rows before drawing conclusions.

Action 24: Return to Pipeline. The actual target is highlighted in gold.
Return to Pipeline.
Action 25: Choose List View. The actual target is highlighted in gold.
Choose List View.
Action 26: Keep the My Opportunities filter explicit. The actual target is highlighted in gold.
Keep the My Opportunities filter explicit.
Action 27: Open Toggle Search Panel. The actual target is highlighted in gold.
Open Toggle Search Panel.
Action 28: Choose Source under Group By. The actual target is highlighted in gold.
Choose Source under Group By.
Action 29: Close the search panel to review the grouped list. The actual target is highlighted in gold.
Close the search panel to review the grouped list.
Action 30: The reported source has one visible record. The actual target is highlighted in gold.
The reported source has one visible record.
Action 31: Open the reported-source group. The actual target is highlighted in gold.
Open the reported-source group.
Action 32: That row is the same qualified H16 enquiry. The actual target is highlighted in gold.
That row is the same qualified H16 enquiry.

Step 6. Keep unknowns and reporting limits visible

Leave unsupported sources empty. Group counts describe the records included by the current filter; they do not establish all enquiries, revenue, customer acquisition cost or marketing ROI. The training rows have zero Expected Revenue. Automatic website attribution still needs its own native verification.

Action 33: None contains two visible records with unknown source. The actual target is highlighted in gold.
None contains two visible records with unknown source.
Action 34: Open None without inventing a source. The actual target is highlighted in gold.
Open None without inventing a source.
Action 35: Review all three filtered rows; Expected Revenue remains zero. The actual target is highlighted in gold.
Review all three filtered rows; Expected Revenue remains zero.
Action 36: These counts describe My Opportunities, not all leads or campaign ROI. The actual target is highlighted in gold.
These counts describe My Opportunities, not all leads or campaign ROI.

Check the result

Opportunity 3 retains Source Demo Local Website H19, Medium Website and Campaign Demo Autumn Service H19 after reopening. Its customer and Qualified stage remain. Group By → Source under My Opportunities shows one labelled row and two None rows. Other enquiries retain blank source values and their prior outcomes; no new customer, lead, order or invoice was created.

If your screen differs

These labels were entered manually. They do not establish automatic website tracking, first-touch/last-touch attribution or real campaign results. The enquiry's displayed Probability recalculated to 91.67% during the saved-field test; it is a native CRM estimate, not measured campaign conversion. Group results change with filters and archive visibility. Website-form capture remains unverified in H18.

Frequently asked questions

How do I track the source of leads in Odoo CRM? On this opportunity form, Extra Info exposes Marketing Source, Medium and Campaign. Save a reliable reported source, reopen it, then group the filtered pipeline by Source.
Does Odoo automatically track website lead sources? This guide verifies manual source labels and grouping only. Automatic website capture and visitor attribution require separate tests; the presence of marketing fields does not prove either workflow.
Why are some Odoo opportunities missing a lead source? The None group includes visible records with no saved source. Keep unknown origins blank and check the report's filters before comparing counts. Do not replace missing information with a guessed campaign.

Continue building the business

Use activities for an internal follow-up. Website enquiries remains a separate draft pending native verification.

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.