← Back to all posts Odoo eCommerce & webshop

Connect Shopify to Odoo: the complete guide

Shopify sells, Odoo runs your business. But the moment stock, orders, returns and accounting have to add up across channels, the integration becomes decisive. A deep guide to the trade-offs, the choices and the why: from data strategy and stock patterns to connector choice and go-live.

Also in: Nederlands Deutsch

Shopify is excellent at what it does: selling. But it is not an ERP. As soon as stock, purchasing, production, returns and accounting have to add up, and certainly if you have multiple channels, the question is not “how do I connect Shopify to Odoo”, but “where should the truth live”. This is the deep guide: the trade-offs, the choices and the why. For anyone who wants to set up an integration properly, and at the same time a reference for our own consultants.

When is Shopify alone no longer enough?

Shopify runs your webshop fine. It pinches the moment your business grows bigger than the sales channel. The signals, and why they occur:

  • Stock never quite matches. You sell in multiple places (webshop, B2B, marketplaces, POS) and each channel keeps its own count. Without a central source it inevitably drifts apart.
  • Manual copying into accounting or a stock system. Every manual step is a source of errors and delay, and it does not scale with your order volume.
  • Purchasing, production or assembly that Shopify does not know. Shopify does not know what a purchase order, a bill of materials or a production order is. As soon as stock arises from purchasing or production, you need a system that knows those processes.
  • Margin not visible. Cost price, purchasing and sales sit in separate systems, so you do not know per order or product what you really earn.
  • Consumer and business mixed up. Different prices, VAT treatment and stock per audience are hard to keep strictly apart in Shopify alone.

These are not webshop problems. They are signals that you need a business platform behind your webshop. That is exactly where Odoo sits.

The core decision: where should the truth live?

The most important choice you make before installing any connector: which system is leading for your stock?

If Shopify is leading, you continuously keep two systems aligned by hand, and you lose the moment you sell on more than one channel: the webshop does not know what your B2B sale or your POS just deducted. If Odoo is leading, there is a source of truth. Odoo knows your real stock (purchasing, receipts, production, returns, multiple warehouses) and pushes available quantities to every channel.

For almost every business that does more than a single webshop, the answer is: Odoo is the single source of truth, Shopify is a sales channel. The rest of this guide assumes you make that choice, and shows how to make it real.

The data architecture: what syncs, which way, and why

A good integration is not “everything with everything”, but a deliberate choice per data type. Every row below is an explicit decision, with a reason:

DataDirectionWhy this direction
Products (title, price, description, media)One side leading (usually Odoo)Editing both sides causes conflicts; pick the source
Stock / availabilityOdoo to ShopifyOdoo knows the real stock, prevents overselling
OrdersShopify to OdooSales arise on the channel, are processed in Odoo
CustomersShopify to OdooCreated or matched as the order comes in
Shipping / trackingOdoo to ShopifyFulfilment happens in Odoo, status back to the customer
Returns / credit notesShopify to OdooReverse plus restore stock at the correct location
Payment / reconciliationShopify to OdooBooked automatically and matched against the bank

Direction matters more than the connector. Editing products in both systems creates conflicts; keeping stock in Shopify alongside Odoo produces drift. Two rules for conflicts: (1) define exactly one leading system per field, and (2) let the non-leading system only display that field, not edit it.

Stock strategy: the heart of the integration

This is where it all stands or falls. Most failed integrations are, at their core, stock problems.

Available is not the same as physical. What you push to Shopify is not your physical stock, but your available stock: physical minus reserved minus an optional buffer. Push physical stock and you sell things that are already reserved.

Reservations and a safety buffer. Decide per channel whether you hold a buffer (for example not showing the last few units online) to dampen overselling on simultaneous sales. This is a deliberate margin against race conditions, not a technical detail.

Real-time versus scheduled syncing. Real-time feels ideal, but Shopify has API limits and at high volume a continuous push can run you into rate limits. The trade-off: real-time for fast movers and scarce stock, scheduled (every X minutes) or event-driven for the rest. Choose deliberately per product group instead of wanting everything real-time.

Multiple warehouses and locations. If you sell from multiple warehouses or partly dropship, Odoo decides which location fulfils an order and which sum of locations you push as available to Shopify. Lay down those rules before you integrate.

Separating B2B and B2C. This is where it most often goes wrong. Two patterns:

  • Separated stock: separate warehouses or locations for B2B and B2C. Strict, predictable, but you have to actively allocate stock.
  • Shared pool with reservation: one stock, where B2B orders reserve early so they are not bought away by the B2C webshop. More flexible, but demands discipline in the reservation process. Without one of these two, your B2C webshop sells the stock you meant for a B2B customer. The choice depends on how strict the separation must be and how much manual work you accept.

Products and mapping: the SKU is your key

Everything hangs on a reliable link key, and that is the SKU. Without consistent SKUs between Shopify and Odoo you get no reliable mapping of stock and orders.

  • Variants: a Shopify product with variants maps to product variants in Odoo. Make sure the variant SKUs match on both sides, otherwise a sold variant deducts the wrong stock.
  • Direction of product management: choose whether you maintain products in Odoo or in Shopify. Odoo-leading gives a clean source for price, cost and stock; Shopify-leading suits teams that work content-first. Not both.
  • Metafields and content: SEO copy and rich content often prefer to live in Shopify. Agree which fields are Shopify-only, so a sync does not overwrite them.

Bundles and kits: where it quietly goes wrong

Shopify bundles and Odoo kits look the same but work differently, and this difference quietly breaks your stock.

A bundle that sells as one product on Shopify must, in Odoo, deduct the stock of the components, not of a fictitious bundle product. If the integration deducts the bundle as a single item, your component stock is wrong after every bundle sale, and you only see it once the counts diverge. Odoo solves this with bills of materials or kit products that deduct at component level. Agree up front how bundles, kits and variants are mapped, and test explicitly that a bundle sale reduces the correct components.

The order flow: from checkout to booking

An order goes through more than “it comes in”:

  1. Order comes from Shopify into Odoo, with customer, lines, discounts and shipping method.
  2. Payment is linked: Shopify Payments, iDEAL, credit card. For accounting you want the receipt reconciled against the order.
  3. Fulfilment happens in Odoo: picking, packing, shipping from the correct location.
  4. Tracking goes back to Shopify, so the customer sees their status.
  5. Return or credit note comes back into Odoo: reverse and, crucially, restore stock at the correct location, including handling partial returns.

Every step is a decision: automatic or with control, immediate or batched. For accounting, reconciling payments against orders is the point where many integrations stall halfway.

Tax and accounting: where a local partner wins

This is where a generic international connector often falls short and where Dutch knowledge makes the difference:

  • VAT and fiscal positions: B2C with VAT, B2B with reverse charge or intra-community, that requires the right fiscal positions in Odoo.
  • EU sales and OSS: sell across the border to consumers and the One Stop Shop scheme and per-country VAT come into play.
  • Peppol and e-invoicing: increasingly relevant for business invoicing in the Netherlands and the EU.
  • Reconciliation and daily closing: the bridge between your sales channel and books that add up.

This is exactly why “installing a connector” is not the same as “your e-commerce accounting adds up”.

Multiple stores and channels: the allocation rules

Multiple stores (per country, brand or B2B/B2C) can hang off one Odoo environment, each with its own warehouse, price list and channel. The pitfall is stock allocation: without rules one store sells the others empty. Decide up front how stock is allocated and reserved, whether you use a separate location per store, and how you handle shared stock. This is the same question as the B2B/B2C separation, one level broader.

Choosing the connector: a decision matrix

There are roughly three routes. None is universally best; choose on scenario:

RouteStrong whenWatch out
App-store connector (e.g. Webkul, Emipro)Standard scenario, live fast, limited budgetLess control over edge cases; customisation often hard; quality varies per vendor
Odoo own Shopify connectorYou want to stay within the Odoo ecosystemScenario coverage can be narrower than a specialised app
Custom integration (via the API)Complex or unique flows, full controlRequires Odoo.sh or on-premise and maintenance; every customisation is upgrade risk

The selection criteria: number of stores and countries, direction and frequency of the sync, product mapping, bundles/kits and variants, order statuses, control over stock updates, and your hosting form (customisation requires Odoo.sh or on-premise). Weigh maintenance too: an integration is not a one-off project but a living component that has to keep working through every Shopify and Odoo upgrade. Buyers often search by connector name, but the connector is the final piece, not the starting point. We compare the real apps, their prices and reviews, and the architecture questions most comparisons skip, in choosing the best Odoo-Shopify connector.

Implementation approach: how to set it up properly

The order that makes the difference between an integration that lasts for years and one you keep repairing:

  1. Fit-gap first. Map your e-commerce processes, channels, stock flows and accounting requirements before you choose a connector.
  2. Lay down the data strategy. Per data type: which system is leading, which way it syncs, real-time or scheduled.
  3. Design the stock model. Warehouses, locations, buffers, B2B/B2C separation, allocation rules.
  4. Build on staging and dry-run. Test with real scenarios: a bundle sale, a partial return, simultaneous sales on two channels, an order across multiple warehouses.
  5. Go live with a stock baseline. Start with matching stock on both sides, and actively monitor for drift in the first weeks.

Failure modes and diagnosis (for consultants)

When it goes wrong, the cause is almost always one of these. Recognise the pattern:

  • Stock drifts apart. Cause: stock kept in two places, or physical instead of available pushed, or a channel (POS, B2B) deducts outside Odoo. Fix: one source, push available, all channels through Odoo.
  • Overselling. Cause: sync frequency too low for fast movers, no buffer, or no B2B/B2C separation. Fix: real-time for scarce stock, buffer, separation.
  • Stock wrong after a bundle sale. Cause: bundle deducted as a single item instead of components. Fix: kit or bill of materials at component level.
  • Duplicate customers. Cause: no matching on email at creation. Fix: matching rule on a unique field.
  • Orders get stuck. Cause: unknown SKU, missing fiscal position, or a payment method without mapping. Fix: complete the mapping and set up error handling.
  • Accounting does not reconcile. Cause: payments not reconciled against orders, or wrong VAT treatment. Fix: automate reconciliation, fiscal positions per audience.

In short

Shopify sells, Odoo runs your business. Make Odoo the single source of truth, decide per data type which way the sync goes, push available instead of physical stock, separate B2B and B2C stock deliberately, map bundles at component level, arrange tax and reconciliation, and only choose the connector once the data strategy is set. Then the integration becomes a foundation instead of a risk - and 42 is finally the answer in both systems.


Want to know whether your stock or channel problem is an integration or a platform choice? Schedule a no-obligation Quickscan and we will map your e-commerce processes, your scope and your biggest risks in 20 minutes.


Read more: Odoo hosting: Online, Odoo.sh or self-hosting? · Odoo Community vs Enterprise · What does an Odoo implementation cost? · Odoo reviews: 2,500+ reviews · All Odoo comparisons

Frequently asked questions

Why connect Shopify to Odoo?

Shopify is strong as a sales channel, but it is not an ERP. As soon as stock, purchasing, production, accounting and multiple channels (webshop, B2B, marketplaces) have to add up, separate software gets stuck on double entry and stock that never matches. Connecting Shopify to Odoo makes Odoo the beating heart: orders arrive from Shopify, stock and fulfilment are managed centrally, and accounting follows automatically.

Can Odoo be the single source of truth for my Shopify stock?

Yes, and that is usually the right setup. Odoo keeps the real stock (purchasing, receipts, production, returns, multiple warehouses) and pushes available quantities to Shopify. Your store then shows what actually exists, instead of you keeping two systems aligned by hand. That prevents overselling and stock drifting apart.

Which Odoo-Shopify connector is the best?

There is no universally best connector; it depends on your scenario. There are app-store connectors (for example from Webkul or Emipro), Odoo own Shopify connector, and custom integrations. Choose based on: number of stores, direction and frequency of the sync, product mapping, bundles/kits, order statuses, returns and how much control you want over stock updates. The connector matters less than which data is leading and which way it syncs.

Does an Odoo-Shopify integration work with multiple stores?

Yes. Multiple Shopify stores can hang off one Odoo environment, each linked to its own warehouse, price list and channel. The important thing is to decide up front how stock is allocated across the channels, so one store does not sell the others empty.

How do I prevent overselling between my B2B and B2C stock?

By defining strictly separated stock in Odoo (separate warehouses or locations) and deciding per channel which stock goes to which Shopify store. Odoo stays the source; every sale reduces the correct stock pool. Without that separation, your B2C store sells the stock you reserved for B2B customers.

What does a Shopify-Odoo integration cost?

The connector itself is often limited (an app subscription or one-off module), but that is rarely where the cost sits. The real work is the setup: product mapping, stock strategy, order flow, returns, tax and aligning the channels. An integration you do not think through up front costs the most afterwards.

Recognize this from your own setup?

A 30-min scan turns hunches into a concrete view, what stays standard Odoo, what becomes custom, what doesn’t need code at all.

Get in touch ← Back to blog