Shopify–Odoo Integration · intermediate · 10 min read
Inventory Synchronization Strategies
Stock sync between Odoo and Shopify: system of record, location mapping, reserved quantity, oversell prevention, and multi-warehouse patterns.
Last reviewed 2026-07-30 · Estimated effort: 2–6 weeks typical implementation slice
Table of contents
Inventory sync fails when Shopify and Odoo both adjust quantities freely or when warehouse locations map incorrectly to Shopify locations — customers see stock that cannot ship.
Strong strategies declare Odoo or WMS as quantity master, push available-to-promise (not raw on-hand) to Shopify, map each Odoo warehouse or location to Shopify inventory locations explicitly, and reserve stock when orders import before fulfillment posts.
High-volume stores combine event-driven updates for hot SKUs with scheduled reconciliation jobs to catch drift from missed webhooks or manual adjustments.
Overselling during a promotion is often an inventory sync design problem, not a Shopify capacity issue. The fix is architectural: one master, clear location maps, and honest availability math.
This article covers ERP-side stock strategy. It does not cover Shopify inventory apps unrelated to Odoo truth.
Pick one system to originate quantity changes: receipts, adjustments, cycle counts, and manufacturing output. Odoo is the usual master when pick-pack-ship runs in warehouse apps. Shopify should receive inventory level sets or adjustments derived from Odoo, not compete with them.
If dropship vendors update stock in Shopify only, define an exception path that still lands adjustments in Odoo for reporting — otherwise finance and operations diverge.
Shopify customers care about what they can buy now. Export available quantity: on-hand minus reserved minus safety stock minus quarantine locations. Pushing raw internal quants including blocked or inspection locations causes false availability or false shortages.
Decide whether incoming PO quantities contribute to sellable stock on the storefront. Many B2C programmes exclude inbound until received to avoid oversell on delayed shipments.
- ▸Define safety stock buffers per channel or location
- ▸Exclude scrap, quarantine, and transit locations from sellable totals
- ▸Align reservation timing with order import and payment capture rules
Each Shopify location should map to one or more Odoo stock locations or warehouses with documented aggregation rules. Wrong mapping oversells one region while another warehouse sits full — a common multi-site failure mode.
When Odoo uses multi-step routes, ensure the integration reads from the location that actually feeds ecommerce fulfillment, not an upstream input location.
Near-real-time pushes suit fast-moving SKUs; nightly reconciliation catches drift from manual Odoo adjustments, failed jobs, or webhook gaps. Most mature estates use both.
After large imports or inventory adjustments in Odoo, trigger targeted Shopify updates for affected SKUs instead of full-catalog sweeps that burn API limits.
- ✓Document a location mapping matrix signed by warehouse and ecommerce leads.
- ✓Push available-to-promise quantities, not unfiltered internal quants.
- ✓Reserve or decrement stock in Odoo when orders import if fulfillment lag exists.
- ✓Run daily reconciliation comparing Shopify levels to Odoo for top SKUs.
- ✓Alert on sudden large deltas — they often indicate mapping errors or duplicate jobs.
- ✓Use scheduled sync as backstop even when webhooks handle most updates.
- !Bidirectional stock writes with no conflict resolution.
- !Mapping entire Odoo company stock to one Shopify location when multiple warehouses exist.
- !Ignoring reserved quantities and showing sold units as available.
- !Syncing on-hand from quarantine or return locations to the storefront.
- !Assuming order import alone keeps stock accurate without fulfillment feedback loops.
- !Full-catalog inventory pulls every few minutes under rate limit pressure.
Inventory sync is a one-master, many-locations discipline — available quantity, explicit maps, and reconciliation beat reactive oversell firefighting.
Pair stock strategy with order import timing so reservations and fulfillments stay coherent.
Stock move
Receipt, sale, or transfer.
Update quants
Odoo inventory truth.
Publish ATP
Channels receive availability.
Exception
Oversell / conflict handling.
Client / Channel
Users & devices
Odoo Application
Business logic
PostgreSQL
System of record
Workers / Cron
Async work
- clientapp(HTTP)
- appdb(ORM)
- appjobs(queue)
Frequently asked questions
Should Shopify decrement stock when an order is placed?
Shopify decrements on its own when orders are created. Odoo should reflect the sale via imported orders and reservations. Avoid configuring both systems to independently subtract the same sale without coordination.
How do bundles and kits affect inventory sync?
Odoo may track component stock while Shopify sells a bundle SKU. Define whether availability is computed from components in middleware or whether a phantom BOM drives a single exported quantity.
What about POS or other channels sharing Odoo stock?
All channels consuming the same Odoo quants must share one availability formula. POS sales should reduce the same pool exported to Shopify — usually via Odoo as master with channel-specific buffers.
Related articles
Product Synchronization Best Practices
How to sync Shopify products and Odoo catalog records: SKU masters, variants, barcodes, attributes, external IDs, and conflict rules without silent duplicates.
View →Order Synchronization Workflow
End-to-end Shopify order import into Odoo: idempotency, tax and payment mapping, partial fulfillments, refunds, cancellations, and fulfillment feedback.
View →Shopify Webhooks vs Scheduled Sync
When to use Shopify webhooks, cron reconciliation, or both: latency, completeness, failure modes, and recovery patterns for Odoo integration.
View →Choosing the Right Integration Architecture
Compare in-Odoo connectors, middleware workers, and hybrid patterns for Shopify–Odoo: scale, security, multi-company, and long-term maintainability.
View →Related services
Fighting oversells or stock drift?
We review location maps, ATP formulas, and sync jobs to align Shopify availability with warehouse reality.
