Knowledge baseOdoo

Odoo as the engine behind your webshop: the FiberNXT case

16 July 20267 min read

A webshop sells; an ERP knows what is in stock, what it costs and whether it has been delivered. As long as those two worlds do not talk, you are retyping orders. For FiberNXT B.V. we connected the webshop — built on the headless commerce platform Medusa — to Odoo. No more manual work between order and invoice, and along the way a few choices that are relevant to any webshop on Odoo.

The architectural choice: integrating outside Odoo

The first decision was the most important: the integration layer lives outside Odoo. Odoo sends simple webhooks on changes; the integration itself — the logic, the translation between shop and ERP — runs as separate software alongside it and talks to Odoo through the external API (JSON-RPC).

That is a deliberate trade-off. You can also build the integration as an Odoo module, in Python, inside the Odoo codebase. But everything you build in Odoo has to be carried forward with every major upgrade — and it demands a team that keeps up with the Odoo internals. Keeping the integration outside keeps Odoo as standard as possible, and that makes upgrades and management a good deal more predictable.

What goes across the wire

Products and prices come from Odoo. The ERP is the source: the range and the prices are managed there and synchronise to the shop. One place to change a price, no difference between what the shop shows and what the invoice says.

Stock is real time. If stock changes in Odoo — a delivery in, an order out — the webshop knows immediately through a webhook. The customer sees the actual stock, not last night's.

An order automatically becomes a sales order. When a customer checks out in the shop, the order appears as a sales order in Odoo within seconds. From there the regular Odoo process runs: picking, delivering, invoicing — fulfilment of the webshop orders happens entirely in Odoo, with the Sales, Inventory, Purchase and Accounting modules.

Payments reconcile themselves. Payment handling sits in the shop (Mollie, through Medusa), but the payment reference is placed directly on the Odoo order. When the payout arrives in the bank account, Odoo matches the transaction to the right order automatically — precisely what reconciliation rules are meant for. The books stay up to date without anyone having to touch them.

The real lesson: where do you draw the line?

The technology — webhooks, API calls, a sync — is not the hardest part. The hardest question is where you draw the automation line: what do you let Odoo do, what do you build in Odoo, and what do you build in your own shop?

That choice is ultimately one about your team, not about technology. Extending your own shop means developing in a stack you already know. Committing heavily to your own Odoo modules means permanently keeping a backend Python developer on the team — and as soon as those modules gain screens as well, potentially front-end developers across several stacks as well. For FiberNXT the balance tipped towards the shop side: Odoo stays standard and does what it is good at (stock, orders, accounting), and all the customisation lives in separate software around it.

Our rule of thumb after this project: build in Odoo what is about Odoo data and does not need to run anywhere else; build outside it what has a life cycle of its own. An integration that evolves with your shop every sprint should not be tied to your ERP's release calendar.

What this delivers

From order to reconciled payment without manual work: no retyped orders, no stock surprises, no open items that have to be matched by hand. And just as important: an Odoo environment that has stayed standard enough to upgrade without drama.

Want something like this built for your shop or platform? We do both the software and the Odoo side — and the conversation about where the line should sit is one we prefer to have before anything gets built.

Frequently asked questions

Frequently asked questions

Do I have to use Odoo's own webshop (eCommerce)?

No. Odoo eCommerce is fine if you want to start quickly within the Odoo world, but you are then tied to Odoo's frontend and templating. If you want full freedom in technology and customer experience, you connect your own shop to Odoo — which is exactly what we did at FiberNXT.

Why webhooks and not polling alone?

Polling means choosing between slow (every few minutes) or heavy (querying continuously). With a webhook, Odoo itself reports that something has changed — a stock movement, a price change — and the integration only then fetches the details. Real time, without needlessly loading your Odoo environment.

Your integration runs on JSON-RPC — is that not deprecated?

That is right: since Odoo 19, XML-RPC and JSON-RPC have been deprecated in favour of JSON-2. The endpoints will keep working for years, so it is no immediate worry — but the migration does belong in the maintenance plan. Because our integration layer lives outside Odoo, that switch is a matter of adapting the API client, not of rebuilding modules.

Answer not found?

Ask an engineer directly — we usually respond within one business day.