Skip to Content

Odoo Shopify Integration: A Step-by-Step Setup Guide

July 17, 2026 by
Tayyab Rasheed

This is the practical setup walkthrough: what to configure, in what order, and how to verify each step before the next one. It assumes you have already decided which system owns your stock and prices. If you have not, read Odoo and Shopify integration first, because that decision shapes everything below and is the one that actually causes these projects to fail.

Before you start: three prerequisites

  • A Shopify private or custom app, with API access scoped to products, inventory, orders, customers and fulfilment. Read-only scopes are worth using during testing.
  • A staging Odoo database, not production. Every step here should be proven on a copy first.
  • A decision, written down, on who owns what. Products, stock, prices, orders, customers. One line each. This takes ten minutes and saves the project.

Odoo ships no Shopify connector in version 19, in Community or Enterprise, so step one is choosing a route: a connector from the Odoo Apps Store, a middleware platform, or a custom build.

Step 1: install and authenticate

Install your chosen connector on staging and connect it with the Shopify API credentials. Confirm the connection reads before you let it write: most connectors have a test or fetch action that pulls a small amount of data without changing anything.

Set the connector to one-way, Shopify to Odoo, for now. Two-way sync is where mistakes multiply, and there is nothing to gain from enabling it before the mapping is proven.

Step 2: map products, and expect this to take the longest

Sync a handful of products first, not the catalogue. Pick deliberately awkward ones: a product with several variants, one with a long description, one with a non-standard tax treatment.

Check specifically that:

  • Variants line up. Shopify's option model and Odoo's attribute model do not agree on the details, and deep variant structures are where these projects overrun.
  • Internal references match the field the connector uses to identify a product. This is what prevents duplicates later.
  • Descriptions stay split. Odoo owns the internal description, Shopify owns the storefront copy. Merging them means a marketing edit gets overwritten by a sync at 2am.

Only once a sample maps cleanly should you run the full catalogue.

Step 3: customers, then orders

Sequence matters. Products, then customers, then orders, because each depends on the one before it.

For customers, confirm the match key is the Shopify customer id stored on the Odoo partner, not the email address. Email matching creates duplicates the first time somebody checks out as a guest and then registers.

For orders, sync open orders only. Historical orders usually should not come across at all: they add volume, risk and reconciliation work for data you can read in Shopify whenever you need it.

Step 4: turn on the stock feed, one way

Stock flows out of Odoo and into Shopify. Odoo knows about incoming purchase orders, reservations, returns and multiple locations. Shopify knows what it has been told.

Set the sync interval deliberately. Overselling is almost always a frequency problem rather than a mapping problem, so this is the number to tune if customers start ordering things you do not have.

Step 5: run one full order end to end

This is the test that matters, and it is the one most often skipped.

Place a real order on the storefront and follow it the whole way: order lands in Odoo, stock reserves, delivery is created, invoice is raised, payment reconciles, and the payout matches. Then do a refund and a partial return, because those are implemented last and break first.

Check the payout carefully. Shopify Payments settles net of fees, in batches, on its own schedule, so what arrives in the bank is not the sum of the orders. If the fees are not modelled as a cost, bank reconciliation will never clear.

Step 6: go live, then watch stock

Run both systems in parallel briefly with the sync one way and compare: order counts, stock levels on a sample of products, and one full order including its payout.

After cutover, watch stock specifically for the first fortnight. That is the failure customers notice.

Set up monitoring before you need it

Alert on silence, not only on errors. The failure that actually hurts is a sync that stopped running, and an error-only alert cannot see it by definition. A check for "no successful order sync in the last hour" is the single most valuable piece of monitoring on the integration.

Frequently asked questions

How do I integrate Odoo with Shopify?

Connect them through a third-party connector from the Odoo Apps Store, a middleware platform, or a custom build, because Odoo ships no native Shopify module. Then configure in dependency order: products, customers, orders, and finally the stock feed.

The full sequence:

  1. Create a Shopify custom app and scope its API access
  2. Install the connector on a staging Odoo database and authenticate read-only first
  3. Map a small sample of awkward products and verify variants and references
  4. Sync the catalogue, then customers, then open orders only
  5. Enable the stock feed one way, out of Odoo
  6. Run one full order end to end including a refund and a payout
  7. Run parallel briefly, compare, then cut over

Expert tip. Decide who owns stock and prices before you install anything. That decision determines the whole configuration, and changing it after go-live means redoing the integration rather than adjusting it.

Does Odoo have a native Shopify connector?

No. There is no Shopify module in Odoo 19, in Community or Enterprise. This is worth stating plainly because a lot of published material implies otherwise.

Odoo does ship native payment providers and some marketplace support, and Shopify is not among them. Your three options differ mainly on who maintains the connection at the next Odoo version:

  • An Apps Store connector, fastest to start and the usual choice, with quality that varies enormously between publishers
  • A middleware platform, more expensive monthly but bringing retries and monitoring you would otherwise build
  • A custom build, full control of the mapping and full ownership of the maintenance

Common mistakes

  • Buying the first connector you find without checking its supported Odoo versions and last update date
  • Choosing a connector abandoned one version back, which becomes an upgrade problem attached to your order flow
  • Assuming the connector's demo catalogue resembles your variant structure

How long does an Odoo Shopify integration take to set up?

A standard catalogue on an off-the-shelf connector is usually days rather than weeks. What extends it is almost never the connection itself.

The things that actually add time:

  • Variant complexity. The single biggest driver. Deep option structures need mapping and testing product by product.
  • Tax treatment. Shopify calculates its own way; Odoo has fiscal positions and rounding rules. Reconciling them is deliberate work.
  • Payout reconciliation. Modelling fees so the bank actually reconciles.
  • Data cleanup. Duplicate products or customers in either system surface during the first sync, not before.

Expert tip. Budget more time for testing than for configuration. Setting up a connector is a day. Proving that refunds, partial returns and payouts all behave is the part that protects your accounts.

Why is my Odoo Shopify sync causing overselling?

Almost always because the stock sync interval is too long for your order rate, not because the mapping is wrong. Between syncs, Shopify is selling against a stock figure that is already stale.

Check these in order:

  1. Sync frequency. Shorten the interval and see whether the problem reduces proportionally. If it does, that was the cause.
  2. Direction. Confirm stock flows out of Odoo only. If Shopify can write stock back, the two will fight and Shopify will sometimes win.
  3. Which quantity is being sent. On-hand versus forecasted versus available makes a large difference once reservations exist.
  4. Multiple locations. If Odoo holds stock across warehouses, confirm which one feeds the storefront.

Expert tip. Send available quantity rather than on-hand once you have reservations in Odoo. On-hand includes stock already promised to other orders, which is exactly the figure that causes overselling.

For the architectural decisions behind all of this, who owns which data and where these projects go wrong, see our full guide to Odoo and Shopify integration. If you would rather not run it yourself, we build and support these connections as part of our Odoo integration service.

How to Choose an Odoo Implementation Partner