← All posts

What is customer churn, and how to see it in Odoo

30 September 2026

Customer churn, or attrition, is the share of your customers who stop buying over a given period. The definition is simple. The problem is that in B2B a customer rarely leaves all at once. They order less, then less often, then not at all, and nobody notices before the third stage.

The textbook definition

Take the customers who bought in one period (year N-1), count those who bought nothing in the next (year N). The ratio is the churn rate.

On the Odoo of a security equipment distributor, 314 accounts had ordered between July 2024 and July 2025. The following year, 107 of them ordered nothing. Churn rate: 34%. A third of customers lost in a year is brutal.

Why that number misleads

Those 107 accounts were worth 180,000 € the year before, out of 4 million. 4.5% of revenue. They are small customers, often one-off orders: churn by customer count mostly measures the ones that did not matter.

Now look at the accounts that stayed but whose purchases were cut by half or more. There are 64. They did 1.66 million the year before. They did 590,000 € the year after. The loss is 1.07 million, six times the loss from the customers who disappeared. And none of them shows up in a churn rate.

In B2B, the churn that costs money is not the customer who leaves. It is the customer who stays at half.

The calculation that is actually useful

Three rules, learned on this kind of data:

With those three rules the list goes from 107 useless names to about ten accounts where someone has to call this week.

How to see it in Odoo

Odoo has no churn report. What you can do by hand: Sales, Reporting, Sales Analysis, group by customer and by year, export, and do the division in a spreadsheet. It works, once a quarter, for whoever has the time. That is not what is missing most.

What is missing is the explanation. A rep shown "revenue halved" asks why. A rep told us exactly that: "il faudrait avoir une explication du churn", we need an explanation of the churn. A score, however well computed, does not answer. What answers is the card: revenue before and after, orders before and after, the last order date, the objection noted on the last call, and the overdue balance. With that, they know whether they are calling about a price, a dispute or a competitor.

How ERP-BI does it

Every night, ERP-BI compares, company by company, the last 12 months with the 12 before. The important accounts whose revenue halved surface in the recommendations, with those five lines of explanation. Alongside, a fuller churn score combines eight signals (lateness against the reorder rhythm, order trend, unpaid invoices, open tickets, tone of recent calls, a competitor named, registry status), and each signal only counts when it has data. But it is the card, not the score, that gets the phone picked up.