A customer buys the last jacket from your website at 2:14 p.m. At 2:16 p.m., another customer buys the same jacket at your store counter. One of them is about to get an apology email. Selling in two places from two stock counts is how overselling happens, and it's the most common reason retailers move to a connected system.
Silent Infotech helps retailers set up this kind of connected inventory in Odoo. It's a certified Odoo Implementation Partner with 450+ projects delivered and 100+ certified professionals. Its retail work includes custom retail ERP solutions with real-time omnichannel synchronization, and it supports both the Enterprise and Community editions of Odoo.
In this guide, I'll walk you through how online and in-store stock stays in sync in Odoo, what to configure, and what tends to go wrong. It's written in plain language, in the order you'd actually do it.
The idea behind the sync
Here's the good news. In Odoo, you don't usually "sync" online and store inventory the way you would between two separate tools. The Website (eCommerce) app and the Point of Sale app both read from and write to the same Inventory app. If both channels point at the same warehouse or stock location, they share one pool of stock automatically.
So the real job is less about syncing and more about setting things up so that both channels draw from the right place, at the right time, with clean data. Get that right, and most of the sync takes care of itself.
Step 1: Clean up your product data first
Before touching any settings, check your products. Sync problems often start with messy product records, not with technology.
Make sure products are tracked as inventory items, so Odoo actually records quantities. The label for this differs by version.
Use the same product record for both channels. Don't create one product for the store and another for the website.
Check variants, such as size and color, and make sure each has its own barcode or internal reference.
Confirm units of measure. A product bought by the case and sold by the piece needs sensible conversions.
Remove duplicates. Two records for the same item guarantee two different stock numbers.
It's tedious, but a clean catalog saves you weeks of confusion later.
Step 2: Plan your warehouse and location structure
Decide how physical stock maps onto Odoo. There are a few common patterns:
One central warehouse. Online orders and store sales both draw from one location. It's the simplest setup and works well for a single shop or a shop with a stockroom.
One warehouse per store, plus a central warehouse. Each store has its own stock. Transfers move goods between them. It's more realistic for multi-store retail, and it lets you see exactly what each location holds.
Store stock that also serves online orders. Online orders can be fulfilled from a store, which is useful for click-and-collect and ship-from-store.
Pick the pattern that reflects how you really operate. Changing it later is possible, but it's much easier to get right at the start.
Step 3: Connect your website to the right warehouse
Your website needs to know which warehouse's stock to use when it shows availability and reserves items. In the website settings, assign the warehouse for your shop. This tells Odoo, "when someone orders online, check and reserve stock from here."
If you run more than one website, you can assign a different warehouse to each. Just make sure the warehouse you choose is the one whose stock should be visible to online customers. If your website points at a warehouse the store never sells from, you've quietly built two separate inventories.
Step 4: Configure the POS to use the same stock
Now check the POS side. In the POS configuration, look at the inventory settings, including the operation type and stock location the POS uses. Sales made at that register should reduce stock from the same warehouse your website uses, or from a location that rolls up into it.
There's one detail that surprises many retailers. In many Odoo versions, stock movements from POS sales are posted when the POS session is closed, not at the exact moment of each sale. That means online availability may lag until the session closes. Behavior varies by version and configuration, so test it in your own setup. For busy stores, this timing difference matters, and your implementation partner can advise on the best way to handle it, such as closing sessions more often or adjusting the flow.
Step 5: Control what the website shows
Syncing stock is one thing. Deciding what customers see is another. On each product's eCommerce settings, you can usually choose how availability behaves, for example:
Sell regardless of stock, useful for made-to-order or backorderable items.
Show stock and prevent sales when there isn't enough. This is the safest choice for scarce items.
Show stock only below a threshold, like "only 3 left."
For fast-moving products, consider holding back a small safety buffer, so the website never promises the last unit that might be sold in the store a moment later. It's a small trade-off that prevents a lot of disappointment.
Step 6: Set up click-and-collect and ship-from-store
Specialty retailers love these because they turn stores into fulfillment points. Odoo supports in-store pickup as a delivery method, letting customers choose a store to collect from. When they do, the order is tied to that store's stock.
For ship-from-store, you decide which locations are allowed to fulfill online orders, and under what conditions. Keep the rules simple to start with. Complicated routing rules are hard to debug when something goes wrong.
Step 7: Keep counts accurate
A perfect sync of wrong numbers is still wrong. Your system is only as good as your physical counts, so build habits around accuracy:
Use barcode scanning for receiving, transfers and counts. It's faster and far less error-prone than typing.
Run cycle counts on your fastest-moving and highest-value items regularly, instead of one giant annual count.
Post inventory adjustments **with a reason, so you can spot patterns like shrinkage or damaged stock.
**Set reordering rules, so low stock triggers purchasing before you run out.
Silent Infotech also builds cross-platform mobile apps for Odoo and works with RFID and IoT devices, which can make counts quicker on the shop floor.
Step 8: Test end to end before you go live
Never trust a sync you haven't tested. Before launch, run through real scenarios with a few test products:
Sell in store, check online. Does availability drop when it should?
Sell online, check the store. Is the item reserved and reflected in the warehouse?
Sell the last unit in both places. What happens? Does one order get blocked or flagged?
Process a return. Buy online, return in store, and check that stock goes back correctly.
Transfer stock between stores. Do both locations update?
Try click-and-collect. Is the right store's stock reserved?
Try a variant. Does the correct size and color change, not just the parent product?
Write down the results. If something behaves oddly, you've caught it before a customer did.
Common mistakes to avoid
Separate warehouses per channel with no link. This creates two inventories and guarantees mismatches.
Untracked products. If Odoo isn't tracking quantities, it can't sync them.
Ignoring timing. Not knowing when stock moves post can cause surprise overselling.
Messy variants and barcodes. Duplicate or missing barcodes lead to wrong items being deducted.
Skipping training. Store staff and warehouse teams need to understand why accurate scanning matters.
Going live without testing. The first real customer shouldn't be your test case.
When to bring in an Odoo partner
Standard Odoo handles the basics well. But retailers often need more: marketplace connections, integrations with payment gateways and shipping providers, custom fulfillment rules, or a migration from an older system. Silent Infotech's team works on exactly these things, including API integrations, IoT and thermal printer connections, and migrations. A partner can also review your setup and tell you where stock might quietly go out of step.
Final thoughts
Syncing online and in-store inventory in Odoo comes down to a handful of decisions: clean product data, a sensible warehouse structure, both channels pointing at the same stock, clear availability rules and accurate physical counts. Get those right, and Odoo does the heavy lifting.
Start small, test thoroughly, and expand once you trust the numbers. The goal is simple: when your system says there's one left, there really is.
Top comments (0)