Skip to main content
AK Ankush Kaura

How to Set Up a Sales Pipeline in Odoo 19 CRM, Step by Step

How to set up a sales pipeline in Odoo 19 CRM: settings, sales team, stages, lost reasons, activities and a first test opportunity.

Published on 27 Oct 2026 · 6 min read

Animated portrait of Ankush Kaura

Short answer: install CRM, decide whether you want the Leads qualification step, create a sales team, set up your stages (developer mode needed), add a short list of lost reasons, then create one test opportunity and drag it across the board. The whole job is a handful of screens. The decisions matter more than the clicks, so I have flagged where I would pause and think.

Applies to

  • Odoo version: 19. I compared the pages listed under Official references with the 20.0 documentation. The only wording change I found was on the sales teams page, where 20.0 adds a line about ticking the Pipeline or Leads box so a team can receive records, and uses “rule-based” instead of “rules-based”. The menu paths below are the same.
  • Edition: Community and Enterprise. Lead mining and enrichment use paid credits and are not covered here.
  • Apps: CRM. Sales is optional and only needed for quotations from the opportunity form.

Before you start

  1. Decide who the pipeline is for. One team with one set of stages is easiest. Split into teams only when stages or ownership really differ.
  2. Write your stages on paper. Four to six is plenty. Name them after something that changes in the real world, such as “Proposal sent” rather than “Working on it”.
  3. Check your access. You need the Sales Manager level in CRM to see the settings page.
  4. Have two or three lost reasons in mind. You can add more later.

Step by step

  1. Open Apps, search for CRM and install it. The mail, calendar and contacts modules come along as dependencies, because the crm module lists them in its 19.0 manifest.
  2. Go to CRM ‣ Configuration ‣ Settings. Tick Leads if you want a qualification step before opportunities. Tick Multi Teams only if one salesperson will sit on more than one team. Leave Rule-Based Assignment off for now. Click Save.
  3. Go to CRM ‣ Configuration ‣ Sales Teams and click New. Fill in Sales Team (the name) and Team Leader. If Leads is on, you will also see Pipeline and Leads tick boxes. Pipeline is on by default. Keep at least one of them ticked: in the 19.0 source, a team with neither ticked has its email alias name cleared, so it stops receiving mail.
  4. On the same form, set the Email Alias and choose who the team accepts email from in Accept Emails From. I would begin with Authenticated Partners or Authenticated Employees if the address will be public, to keep spam out of the pipeline. Add members under the Members tab, then save.
  5. Turn on developer mode: Settings ‣ General Settings ‣ Developer Tools ‣ Activate the developer mode.
  6. Go to CRM ‣ Configuration ‣ Stages. Rename or reorder the defaults (New, Qualified, Proposition, Won) by dragging the handle. Click New to add stages. Fill in Stage Name, Teams (leave empty to share with every team) and tick Is Won Stage? only on the closing stage.
  7. For stages where deals can stall, set Days to rot. Zero turns it off. Leave Requirements with a one-line hint.
  8. Go to CRM ‣ Configuration ‣ Lost Reasons. Click New and type each reason in Description. Odoo ships with a few starter reasons, so edit those before adding new ones.
  9. Go to CRM ‣ Configuration ‣ Activity Types and check the defaults (Email, Call, Meeting, To Do, Upload Document). Add a custom type only if you need a default deadline or chaining.
  10. Go to CRM ‣ Sales ‣ My Pipeline, click New, enter the Opportunity name (required), the Organization/Contact, Email, Phone and Expected Revenue, pick a star priority and click Add.

Worked example

A small accountancy practice sells annual bookkeeping packages. They create one team called “New Clients” with an alias of their choosing. Their stages are New, Intro Call Done, Proposal Sent, Waiting for Signature and Won, with Is Won Stage? only on Won. Waiting for Signature gets a Days to rot value, because a signature that has not arrived is the most common place for a deal to go quiet.

Lost reasons: “Price”, “Chose another provider”, “No response”, “Not a fit”. Short enough that the person marking a deal lost can choose in a second.

The practice then adds a test opportunity named after a fictional client, schedules an activity, drags it through the stages, and finally marks it lost to see the red banner. Archive the test record afterwards so it does not pollute reports.

What you should see

  • The My Pipeline Kanban board with your stages as columns in the order you set.
  • Your test card in the first column, with the star priority and an activity icon once you schedule one.
  • A red Lost banner on the card after you click Lost and Mark as Lost. The reason and closing note are optional in the window, but fill them in to check the list works.
  • A Quotations smart button or New Quotation button on the form if Sales is installed.
  • A rotting card highlighted in red once it passes the stage threshold.

From a data point of view, the card is a crm.lead record with a stage_id. The won stage sets probability to 100. Lost archives the record with probability 0.

Two details help if you later script or integrate with this setup. The email alias on a team creates records with the team already filled in, and the record type is a lead when the Leads setting and the team’s Leads box are both on, otherwise an opportunity. And the team’s assignment domain is validated when you save it: a malformed domain raises an error rather than failing quietly at assignment time.

Troubleshooting

The Stages menu is missing. Developer mode is off. Activate it and reload.

There is no Leads menu at the top. The Leads setting is not ticked in CRM ‣ Configuration ‣ Settings. Once ticked, the menu appears.

A team does not receive anything. Open the team and check that Pipeline or Leads is ticked. If both are off, the email alias is cleared as well, so re-enter the alias name after ticking one of them.

Saving the assignment rules gives a formatting error. The team’s domain must be valid. Rebuild it with Add Filter rather than typing it by hand, and save again.

An email to the alias creates a lead, but I expected an opportunity. That is controlled by the Leads setting and the team’s Leads box. Untick the team’s box if that team should skip qualification.

Rule-based assignment leaves leads unassigned. Each member has a Capacity, and the documentation says the daily limit is that number divided by 30. Also check Pause assignment and Skip auto assignment.

There is no New Quotation button. Install the Sales app.

Converting a lead fails with a probability error. The documentation says a lead at 100 percent cannot be converted. Lower the probability first.

After the board works, look at how the pipeline’s stages, probability and won/lost fit together and the places leads leak. If you want a longer screen by screen walkthrough, there is one on sajjalbajaj.in.

Official references

How this guide was checked: I read the 19.0 documentation pages above, compared them with 20.0, and checked field and checkbox labels against the 19.0 crm source views and models. I did not follow the steps on a live database.

If you would like this set up around your own sales process, get in touch via my site and we can plan it.

Frequently asked questions

Why can't I see Configuration ‣ Stages in Odoo CRM?

The Odoo stages documentation says developer mode must be active to reach that menu. Turn it on under Settings ‣ General Settings ‣ Developer Tools, then reload the CRM app.

Do I need the Leads setting to run a pipeline?

No. Leads add a qualification step before an opportunity exists. Without the setting, enquiries from email aliases and web forms land directly as opportunities.

What stops the New Quotation button from showing on an opportunity?

The Sales app must be installed. The CRM documentation says the button does not appear without it.