Integrating Odoo with Shopify without losing your mind

Connecting Odoo and Shopify sounds simple until you ship your first refund and accounting screams. We have built this integration enough times to share the recipe that works.
Pick a single source of truth, per object
- Products and stock: Odoo wins. Shopify mirrors what Odoo says.
- Customers: Shopify creates, Odoo enriches. Email is the join key.
- Orders: Shopify creates, Odoo processes fulfilment and accounting.
- Prices and promos: depends. If your store team owns campaigns, keep them in Shopify and pull into Odoo for reporting.
Use webhooks plus a reconciliation job
Webhooks are great for real-time events but they will drop. Always pair them with a nightly reconciliation that re-fetches the last 48 hours and corrects gaps. We have caught dozens of missed orders this way.
Inventory is the hardest part
Live stock sync to Shopify can melt your Odoo on flash sales. Buffer it: queue stock changes, batch them every 30 to 60 seconds, and reserve safety stock per channel. If you sell the same SKU online and in-store, also use Odoo's reservation system properly so you do not oversell.
Returns and refunds
Map a Shopify refund to an Odoo credit note tied to the original invoice. Auto-create a return picking only if your warehouse confirms receipt, otherwise you will accumulate ghost inventory. Yes, this means a small workflow at the warehouse, but it pays off in clean books.
When to use a connector vs custom
Off-the-shelf connectors are fine for a basic catalogue under a thousand SKUs. Above that, or with multiple warehouses, multiple stores, or B2B pricing, you will outgrow them within a year. Build it once, build it well.
Up next
How to actually measure ROI on your Odoo investment