Skip to Content
eCommerce, POS and multichannel

How to keep stock in sync across your webshop, stores and marketplaces (and stop overselling)

dooPartners· 3 March 2026 · 6 min read
How to keep stock in sync across your webshop, stores and marketplaces (and stop overselling)

Stock stays in sync when Odoo owns the quantity, every channel reads availability from it, and the sync interval is shorter than the pace at which you sell. That is the short answer. What follows is how to get there.

Your webshop says five in stock. Your store just sold the last two over the counter. A marketplace order comes in for three. Now you owe a customer a product you do not have, and someone has to send the apology email.

Overselling is not bad luck. It happens because your stock lives in more than one place at once, and the places do not agree fast enough. Here is why it happens in Odoo, and how to fix it.

Why overselling happens

Every sales channel keeps its own idea of "available". Your webshop platform, your point of sale, and each marketplace all hold a number. When a sale happens in one channel, the others do not know until something syncs them. In the gap between two syncs, two customers can buy the same last unit.

The fix is not "sync harder". The fix is to give every channel one place to ask: how many do we really have?

Webshop Store / POS Marketplace reads availability Odoo single source of truth Warehouses & locations
All sales channels read stock availability from Odoo.

The fix: make Odoo the single source of truth

1

Let Odoo own the stock.

Stop maintaining quantities by hand in each channel. Odoo holds the real on-hand and forecasted numbers per product and per warehouse. Every channel reads from there.

2

Connect each channel to Odoo.

Your webshop, your POS and your marketplaces each push their sales into Odoo and pull availability back. Odoo's own eCommerce and POS share stock natively. External platforms (Shopify, WooCommerce, Amazon, a marketplace) connect through a connector or an integration layer.

3

Decide how stock is shared.

If you sell the same product on three channels, decide the rule. One shared pool that any channel can sell from, or a reserved buffer per channel so a marketplace never eats your store's safety stock. Odoo lets you split stock by warehouse or location to do this.

4

Solve the timing.

This is where most setups quietly fail. Native Odoo eCommerce and POS update in real time because they share the same database. External connectors usually sync on a schedule, every few minutes, and some marketplaces only accept updates in batches. The shorter the gap, the less you oversell. For high-volume sellers, near real-time sync is worth the effort.

In practice the hard part is rarely the sync itself, it is the volume and the timing. When you sell a lot across several systems, a large amount of data moves back and forth, and pushing all of it constantly is neither fast nor reliable. In our own builds we usually run incremental updates through the day, so only what actually changed gets sent, and then a full sweep at night to catch anything that drifted out of step. That keeps the daytime traffic light and the morning figures honest.

Odoo holds the real on-hand and forecasted stock per product.

The part that trips people up

A few things catch almost everyone

Odoo POS can run offline, and offline sales only reach the backend when the till reconnects. During that window your other channels do not see those sales. Plan for it.

Marketplace updates are often delayed by the marketplace itself, not by Odoo. You can sync instantly and still oversell if the marketplace only refreshes every fifteen minutes.

A connector that "works" in a demo can still drift under real volume. Test with your busiest day, not a quiet one.

Each channel pushes sales into Odoo and pulls availability back.

Quick checklist

  • Odoo holds the real stock, not each channel by hand.
  • Every channel reads availability from Odoo.
  • You have a clear rule for shared versus reserved stock.
  • You know your sync frequency per channel, and it is short enough for your volume.
  • You have tested it under peak load.

FAQ

Does Odoo sync stock with Shopify in real time?

Odoo's own eCommerce and POS share stock in real time. Shopify connects through a connector that usually syncs on a schedule, so it is near real time, not instant. The interval is what determines your overselling risk.

Can I reserve stock per sales channel in Odoo?

Yes. Split stock by warehouse or location and let each channel sell from its own pool, or share one pool with a safety buffer. The right setup depends on your volume and your channels.

Why does Odoo show stock available when a store already sold it?

Because the store's sale had not reached Odoo yet, or another channel had not pulled the update. Shorten the sync interval and make sure offline POS sales reconcile quickly.

Read next Odoo POS offline mode: how it works and how to keep sales in sync

Open knowledge. Are you an Odoo partner who solves these problems too? Contribute your own solutions and grow toward Gold with the network.

For partners
When to get a partner

Some problems need a pair of hands, not a how-to.

dooPartners is a worldwide network of independent, Odoo-certified partners. Local where you are, with the network behind them when a project grows beyond one agency. You keep one point of contact, and you choose who you work with.

Find a partner near you