Odoo is a massive ecosystem. The number of ready-made modules, apps, and built-in features is huge — from advanced production scheduling, through automated warehouse rules, to multi-currency accounting.

And yet, the same scenario keeps playing out at many companies: a need for a new feature comes up in a meeting, and the first thing someone says is: "Let's write a dedicated module for that."

That's an easy trap to fall into. A lack of deep familiarity with the Odoo standard leads companies to pay thousands for coding solutions the system already has... in its standard configuration.


A real-life example: how forgotten custom "ribbons" saved the budget

I recently sat in on a standard client meeting where we were scoping a task for the shop and product view. The client needed the template modified so certain items would show a clear notice about limited availability.

The system already had some tags and badges showing other product attributes, but adding another one would have meant rebuilding the template and writing custom code. Before we could even estimate the developer hours, there was a great plot twist.

While reviewing the system, it turned out the client already had custom Product Ribbons built, automatically overlaying the product thumbnail in the shop — nobody at the company just remembered they existed. The feature had been built during an earlier project and was never documented, so over time it simply faded from the team's memory.

The result? Zero extra code, zero money spent on developers, zero extra risk on future upgrades. All it took was turning on and configuring something that had already been sitting in the system the whole time.


Three consequences of ignoring Odoo's standard features

When we skip a thorough analysis of what the system can already do and jump straight to writing our own modules, sooner or later we run into three problems:


The cost of writing the code is only the beginning

The biggest mistake management makes is looking at custom module development purely through the lens of the developer's first invoice.

The cost of writing the code is just the tip of the iceberg. The real cost shows up later, in maintenance, migrations, and missing documentation.

Every line of custom code in Odoo carries concrete financial and operational risk down the line:


The "Standard First" rule – how to do it right

Before deciding to write even a single line of custom Python code, the analysis process should follow a clear hierarchy:

  1. Standard Odoo configuration: Can this be done using existing settings, automation rules, or built-in UI elements like product ribbons?
  2. Modules from the OCA (Odoo Community Association) community: Has this problem already been solved and tested by thousands of developers worldwide, as a proven, free open-source solution?
  3. No-code modifications (Odoo Studio): Is a simple view change or a new field enough, without touching the underlying database architecture?
  4. Dedicated code (custom development): Only once the above options fall short, and the business requirement offers a genuine competitive edge, do we sit down to write a custom module — and write its documentation at the same time!

Summary

Writing custom modules in Odoo is a great option, but it should be a deliberate last resort, not the first choice. A good developer doesn't measure their worth by the number of lines of code they write, but by how well they can put the system's existing potential to work, without steering the company into a dead end of undocumented code.

Before you commission a new feature, make sure you're not paying to reinvent the wheel.


Looking for a way to optimize your Odoo?

Want to check whether your system is using the full potential of its standard features, or is weighed down with unnecessary, undocumented code? Book a consultation — I'll run an audit and show you where it's actually worth writing code, and where the standard is enough.

Book a meeting