Skip to main content

Integration

Connect Shopify and Odoo Without Losing Operational Control

Two systems both think they know your stock. Getting that wrong shows as oversells, wrong costs and a warehouse that stops trusting the screen. This page is how we decide which system owns what, and how we keep them honest.

  • Products & variants
  • Inventory
  • Orders
  • Fulfilment
  • Webhooks
  • Reconciliation

Reviewed by Bhavesh Selarka, COO & Co-Founder, Heliconia Solutions · Odoo 16 Functional Certification · Odoo Partner · Updated

Proof

Two-way sync in productionManufacturing behind the storeLot traceability preservedRetail and wholesale, one catalogOdoo Enterprise

Clients

Businesses that run on what we built

  • Mevalon Produkte
  • TIMmunity GmbH
  • Aria Jewellers
  • Freiburger Bund
  • Jo Ann's
  • Opsio
  • LittleQ

The short answer

How Does a Shopify and Odoo Integration Work?

One system owns each piece of data, and the other receives it. In practice Odoo owns products, stock, costs, fulfilment and finance, while Shopify owns the storefront, the customer experience and the checkout. Orders flow into Odoo, inventory flows out to Shopify, and a reconciliation job proves the two agree. Anything else, especially two systems both editing stock, produces oversells.

The integration itself is not hard. The design decision is: what happens when they disagree? A webhook was missed, a refund was issued in Shopify, a stock adjustment was made in the warehouse. A connector that has no answer for those is a connector you will be reconciling by hand within a month.

Spicy Organic runs this in production: a food manufacturer with purchasing, blending, packaging, batch traceability and wholesale in Odoo Enterprise, and a Shopify store synchronised both ways for products, customers, orders, inventory and fulfilment.

The first decision

Which System Owns Which Data

Agree this before any code. Every argument later is a disagreement about a row in this table.

Which System Owns Which Data
DataSystem of recordFlows toWhy
Products and variantsOdooShopifyThe catalog also drives purchasing, manufacturing and costing, so it cannot live in the storefront
PricesUsually Odoo, sometimes ShopifyBoth directions possibleIf the store runs promotions independently, let it own retail price and keep cost in Odoo
InventoryOdooShopifyStock moves in the warehouse, not in the store. One owner is the only way to avoid overselling
CustomersShopify for accounts, Odoo for the contact recordInto OdooShopify handles login and consent, Odoo needs the partner for invoicing and history
OrdersShopifyInto OdooThe order is created at checkout. Odoo receives it and takes over fulfilment and finance
Fulfilment and trackingOdooBack to ShopifyPicking and dispatch happen in the warehouse, and the customer sees the result in the store
Refunds and returnsShopify for the request, Odoo for the credit noteBothThe money has to end up in the ledger, whatever the customer clicked

Spicy Organic follows exactly this split, which is why its direct-to-consumer and wholesale channels can share one catalog and one inventory.

What we build

The Parts of a Reliable Sync

Each of these exists because we needed it in production, not because a connector feature list mentions it.

  • Product and variant mapping

    Odoo variants, attributes, packaging and units mapped to Shopify variants and options, with a mapping table you can inspect rather than a convention someone remembers.

    • Variants
    • Options
    • Packaging
  • Inventory synchronisation

    Available quantity pushed from Odoo on stock moves, with the buffer and location rules that decide what "available" means for a store that must not oversell.

    • Real availability
    • Buffers
    • Multi-location
  • Order ingestion and state mapping

    Shopify orders become Odoo sales orders with the right customer, taxes, discounts and payment state, and each Shopify status maps to an Odoo state deliberately.

    • Taxes
    • Discounts
    • Payment state
  • Fulfilment and tracking feedback

    Picking and dispatch in Odoo push fulfilment and tracking back to Shopify, so the customer email is triggered by the warehouse rather than by a person remembering.

    • Tracking
    • Partial shipments
    • Notifications
  • Retries, idempotency and queues

    Every message is safe to process twice, failures retry with backoff, and nothing is lost because an API was briefly unavailable. This is the part most integrations skip.

    • Idempotent
    • Backoff
    • No lost events
  • Reconciliation and monitoring

    A scheduled job compares both systems and reports differences before a customer finds them, with alerting when the gap or the queue depth crosses a threshold.

    • Daily checks
    • Alerts
    • Audit trail

The build decision

Off-the-Shelf Connector or Custom Integration?

Try the connector first. It is cheaper and someone else maintains it. Here is where that stops being true.

Off-the-Shelf Connector or Custom Integration?
SituationConnectorCustom integration
Standard catalog, simple variants, one warehouseUsually enoughNot worth building
Manufacturing or batch traceability behind the storeRarely handles itNeeded: lots, blends and packaging have to survive the mapping
Wholesale and retail on the same catalogOften partialNeeded: different pricing, units and order rules per channel
Custom fulfilment or a third-party logistics providerDepends on the connectorUsually needed, because the state machine is yours
Multi-store or multi-companyFrequently a limitNeeded: which entity owns which order is a business rule
You need to see and fix what failedVaries, often opaqueBuilt in: logs, retries and a reconciliation report you can act on

We will tell you when a connector covers your case. Spicy Organic needed custom, because manufacturing, lot traceability and wholesale sat behind the storefront.

How we run it

From Decision to Live Sync

  1. Ownership workshop

    We fill in the matrix above with your team, including the awkward rows: price, refunds, customer records and who may edit stock.

  2. Mapping and rules

    Products, variants, units, taxes, payment methods and order states mapped explicitly, with the edge cases written down rather than discovered in week three.

  3. Build with failure in mind

    Webhooks plus a scheduled catch-up, idempotent handlers, a queue with retries, and logs that say what happened to a specific order.

  4. Backfill and dry run

    Existing products, customers and open orders loaded on a copy first, then compared. Only after the comparison is clean do we point at production.

  5. Cutover

    A quiet window, one system switched to owner, reconciliation run immediately, and a rollback path if the numbers disagree.

  6. Run and watch

    Daily reconciliation, alerting on queue depth and failures, and a named person on our side while the first month of real trading goes through it.

Evidence

Shopify and Odoo, Running Together

A USDA-organic food manufacturer with purchasing, blending, packaging, batch traceability and wholesale in Odoo, and a Shopify store synchronised both ways.

Shopify and Odoo, Running Together
ProjectIndustryOdooKey capabilitiesTechnology
Spicy OrganicOrganic food manufacturing & eCommerceOdoo EnterpriseSpicy Organic Base · Spicy Organic Product Management · Raw Material Management · Manufacturing & BOM ExtensionsOdoo Enterprise · Python · PostgreSQL · OWL / QWeb · Shopify APIs

Integration review

Request an Integration Review

Send us your catalog size, variant structure, warehouses, order volume and what happens today when the two disagree. You get the ownership matrix filled in for your business, an honest connector-versus-custom answer and the risks we would design around.

  • The data-ownership matrix completed for your setup
  • Product and variant mapping approach for your catalog
  • Inventory rules: what "available" means for your store
  • Order and fulfilment state mapping, including refunds
  • Connector or custom, with the reasoning and the cost shape of each

Request the review

What clients say

In Their Words

Questions

Shopify and Odoo Questions, Answered Directly

Bhavesh Selarka

COO & Co-Founder, Heliconia Solutions

Not answered here? Ask Bhavesh directly, the person who reviewed this page, not a sales queue. Odoo 16 Functional Certification.

Ask a question

Which system should hold our stock?

Odoo, in almost every case. Stock moves when goods move, and that happens in the warehouse, in production and on purchase receipts, all of which are Odoo events. Shopify receives the available quantity.

The exception is a pure dropship store with no warehouse of its own, where there may be no real stock to own.

The supply-chain side

Will this stop us overselling?

It removes the main cause, which is two systems editing stock independently. It does not remove the physics: a sync interval and a busy checkout can still oversell the last unit, which is why we set a buffer on fast-moving lines and reconcile daily.

Anyone promising zero oversells without mentioning buffers has not run one of these.

Can we keep selling wholesale through Odoo at the same time?

Yes, and it is a good reason to make Odoo the owner. Spicy Organic runs direct-to-consumer through Shopify and wholesale through Odoo on the same catalog and the same inventory, with different pricing and order rules per channel.

Read the project

Do we need a custom integration or will an app do?

Try an app first. Connectors handle standard catalogs and simple variants well, and someone else maintains them. Build custom when manufacturing, lot traceability, wholesale, multi-company or a bespoke fulfilment flow sits behind the store, because that is where connectors run out.

What happens when the sync fails?

It should be boring. Handlers are idempotent, failures retry with backoff, and a scheduled catch-up picks up anything a missed webhook dropped. A daily reconciliation compares both systems and reports the difference, and we alert on queue depth rather than waiting for a customer complaint.

Should we move the storefront into Odoo instead?

Sometimes, and it is a fair question. Odoo has its own eCommerce, and one system is simpler than two. Keep Shopify when its storefront, apps and checkout are genuinely doing work for you. Move when you're paying for two systems and using one.

If you want the storefront control without Shopify, headless is the third option.

Headless Shopify

Next step

Decide Who Owns the Stock, Then Build

Tell us your catalog, your warehouses and what goes wrong today. We will fill in the ownership matrix for your business and tell you honestly whether an app covers it or you need the integration built.