New: Odoo and Dynamics 365 cost calculators.Estimate your costs

Shopify Odoo integration for ecommerce brands

A Shopify Odoo integration keeps Shopify as the storefront and puts Odoo behind it when stock, purchasing, wholesale orders, returns and accounting need one owner.

FlecticUpdated 14 min read

A Shopify Odoo integration keeps Shopify as the storefront and puts Odoo behind it when stock, purchasing, wholesale orders, returns and accounting need one owner. Odoo's native Shopify connector pulls orders every 10 minutes by default, on a schedule and does not sync in real time, so it suits a business where a short delay is acceptable. App-store connectors that use Shopify webhooks and map each Shopify location to an Odoo warehouse cover more cases, but each listing states its own Odoo versions and editions, so check the fit before you buy. A single-channel Shopify store with a low SKU count is often well served by Shopify, an inventory app and QuickBooks. Odoo starts to earn its place when you sell wholesale, sell on marketplaces, make products or hold stock in several warehouses. Shopify's pricing page lists 10 inventory locations on Basic, Grow and Advanced, and 200 on Plus, so count your locations before you choose a connector.

Shopify with Odoo, or Shopify with an inventory app?

The useful question is whether a second system will own work that Shopify does not do well on its own: stock across locations, purchasing, wholesale order terms and a ledger that matches the stock you sold. The table shows which side of that line your business sits on.

  • Sales channels (Shopify with an inventory app and QuickBooks: One storefront, little or no wholesale · Shopify with Odoo behind it: Storefront plus wholesale, marketplaces or stores that share stock)
  • Warehouses (Shopify with an inventory app and QuickBooks: One site, or a 3PL that sends stock reports · Shopify with Odoo behind it: Several warehouses or branches that move stock between them)
  • Products (Shopify with an inventory app and QuickBooks: A low SKU count with simple variants · Shopify with Odoo behind it: Kits, bills of materials, lot or serial tracking, or made-to-order goods)
  • Orders (Shopify with an inventory app and QuickBooks: Standard retail prices · Shopify with Odoo behind it: Contract prices, minimum order quantities or buyer purchase orders)
  • Finance (Shopify with an inventory app and QuickBooks: Monthly bookkeeping that one person can close · Shopify with Odoo behind it: Sales, stock and cost values that must post to one ledger without re-keying)

A single-channel store with a low SKU count is often fine on Shopify, an inventory app and QuickBooks. Adding Odoo then means one more system to run, train people on and pay for per user. If most of the right-hand column describes your business, a connected back office is worth scoping. If most of the left-hand column does, spend the effort on the inventory app's sync settings instead.

The Odoo eCommerce vs Shopify comparison covers the other route, moving the storefront itself into Odoo, which this article does not assume.

Who owns each record in a connected setup

Two systems break when both edit the same field and nobody has said which value wins. Before you choose a connector, write down the owner of each record and the direction it travels. The table below combines the sync behavior in Odoo's documentation for the native connector with the behavior listed for the bisync connector, which is where the two differ.

  • Products (Suggested owner: Split by field: Shopify for storefront copy and images, Odoo for cost and price lists · Native connector: Imported from Shopify · Bisync connector: Two-way, with a conflict policy)
  • Prices (Suggested owner: Odoo, when wholesale price lists live there · Native connector: Not described in the connector documentation · Bisync connector: Exported from Odoo)
  • Customers (Suggested owner: Shopify, which holds the checkout login · Native connector: Imported from Shopify · Bisync connector: Imported from Shopify)
  • Orders (Suggested owner: Shopify captures the order; Odoo holds the confirmed sales order · Native connector: Imported as confirmed sales orders, every 10 minutes · Bisync connector: Imported from Shopify)
  • Payments (Suggested owner: Shopify Payments or your gateway · Native connector: Odoo creates the invoice and payment automatically · Bisync connector: Payouts imported for Shopify Payments stores only)
  • Inventory (Suggested owner: Odoo, one count per warehouse · Native connector: Pushed to Shopify after each order pull · Bisync connector: Exported to Shopify; two-way sync is an option)
  • Fulfillment (Suggested owner: The system that ships the parcel · Native connector: Deliveries validated in Odoo are pushed to Shopify; fulfillments created in Shopify are pulled in with carrier and tracking · Bisync connector: Fulfillments exported from Odoo)
  • Refunds and returns (Suggested owner: Shopify starts the refund; accounting reviews the credit note · Native connector: Refunds imported; returns synced only when they start in Shopify · Bisync connector: Refunds arrive as draft credit notes for review)

Pay the closest attention to the rows where two systems can edit the same thing: products, prices and inventory. Write the owner of each row on one page, and have finance and operations both sign it before anyone builds a flow. Flectic's integration work starts the same way, with one named owner per record agreed before any flow is built.

Three ways to connect Odoo and Shopify

Three options cover most cases. The right one depends on how quickly orders must reach Odoo, how many locations you run and how unusual your business rules are.

  • Odoo's native Shopify connector (Order timing: Every 10 minutes, no webhooks · Locations: Not described in the documentation · Check before you buy: Ask for a written answer on multi-location stock)
  • App-store connector with webhooks (Order timing: New orders within seconds, per the listing · Locations: Shopify Locations mapped to Odoo warehouses · Check before you buy: Odoo version and edition, and Odoo Online support)
  • Custom integration (Order timing: Whatever you design and test · Locations: Whatever you design and test · Check before you buy: Build, testing and maintenance budget)

Odoo's native Shopify connector

The native connector sits in Odoo's Sales app. It brings in orders through scheduled actions, not webhooks, and the documentation states that it does not perform real-time synchronization. Odoo pushes stock to Shopify after each order pull, and it pulls stock from Shopify only at setup or to fix a mismatch. The documentation covers orders, products, inventory, deliveries, returns, refunds, invoices and payments. It does not describe handling several locations or warehouses, so ask for a written answer on that and test it against a copy of your own data before you commit.

App-store connectors

App-store connectors add what the native connector leaves out. Odoo Shopify Connector PRO maps Shopify Locations to Odoo warehouses and syncs stock per location. For each location you choose free, on-hand or forecasted quantity. It uses webhooks for new orders, which its listing says arrive within seconds, and scheduled jobs for stock and products. The same listing supports Odoo 16 to 19 on Enterprise or Community and says Odoo Online is not supported. If you run Odoo Online, that rules this connector out before any other question.

The bisync connector for Odoo 19.0 moves products in both directions and sends prices and fulfillments from Odoo to Shopify. Its conflict policy decides a winner when a record changes on both sides between syncs: Odoo wins, Shopify wins or the newest edit wins. Each resolution goes to a conflict log with the fields that differed. Its listing and its installation notes name different module dependencies, so check both before you install.

A custom integration

Build your own when the rules are unusual: deposit-based orders, price lists the connectors do not model, or one marketplace feeding the same stock as your store. A custom build owns its own failures and its own upgrades, so budget for testing and maintenance as well as the build. Flectic's system integration service follows one rule for every flow: standard connectors first, a documented custom connector only where none exists, and test scenarios run before sign-off.

How stock stays accurate across locations

Overselling happens when the storefront cannot see stock that is already promised to someone else. The fix starts with the location mapping and the reserve rule. A faster sync alone does not stop it.

Assume a brand sells one SKU on Shopify. It holds 40 units in its main warehouse, 15 at a 3PL and none in its store, and 10 of the warehouse units are reserved for a wholesale order. If the Shopify location for the main warehouse is set to free quantity, the storefront shows 30 units, because Odoo subtracts the reserved stock. If that location is set to on-hand quantity, the storefront shows 40, and it can sell 10 units that a wholesale buyer is waiting for. The same product can look right in one location and wrong in another, so the quantity type belongs in the location map.

Set up each location as a warehouse in Odoo first. Odoo's warehouse documentation requires a name, a short code of up to five characters, an address and the owning company for each one. Then work through these rules before go-live:

  1. Map each Shopify location to exactly one Odoo warehouse, then compare one SKU's count on both sides.
  2. Choose the quantity type for each location with the warehouse lead, not the developer, and write it on the location map.
  3. Hold back stock for wholesale and B2B orders in Odoo, so the storefront reads a number that already excludes it.
  4. Pull counts from Shopify only at setup or to fix a known mismatch. Odoo's documentation names those two cases.
  5. Compare counts for a sample of SKUs at every location each day during the first month, and widen the check once the numbers hold.

What the connection costs beyond the build

The build is not the only cost. Shopify's plan limits decide how many locations and staff accounts you can run, and the payment provider you use changes the fees.

  • Basic (Inventory locations: 10 · Additional staff accounts: Not included · Fee on third-party payment providers: 2%)
  • Grow (Inventory locations: 10 · Additional staff accounts: 5 · Fee on third-party payment providers: 1%)
  • Advanced (Inventory locations: 10 · Additional staff accounts: 15 · Fee on third-party payment providers: 0.6%)
  • Plus (Inventory locations: 200 · Additional staff accounts: Unlimited · Fee on third-party payment providers: 0.2%)

Source: Shopify pricing. Third-party fees apply when you use a payment provider other than Shopify Payments, and the rate depends on your plan. Check plan prices on that page for your country. This article does not quote them.

Odoo bills licenses per user. According to Odoo's pricing page, implementation and hosting sit outside the plan fee, and the Standard plan includes all apps on Odoo Online. Multi-company, Studio and external API access belong to the Custom plan. Clients and suppliers who use the portal are not paying users, so your license count covers your own staff. Use the calculator below to price the license mix for your roles.

A connector is a separate purchase. Each app listing sets its own price and supports specific Odoo versions, so put the connector license in the same budget line as the Odoo licenses. Ask the vendor to confirm the price for your Odoo edition in writing.

A phased rollout that keeps orders shipping

Connect one channel and one location first, then add the rest. Orders keep flowing from the storefront while the records move, and a problem stays inside one location until it is fixed.

  1. Map the records and the locations, and agree the owner of each row in the table above.
  2. Build the first connection for one channel and one warehouse. Stock and orders for that location use the new flow, and everything else keeps the current process.
  3. Run both systems side by side for one full order cycle, and compare the stock count for the sample SKUs at each location.
  4. Cut over one location at a time, with a named owner for every failed sync.
  5. Review sync errors and the conflict log every week for the first month, then move to a monthly check.

This is the decision point. If your team cannot yet name the owner of every record, Flectic's ERP for retail and e-commerce offer starts with that map. Each phase gets a fixed price in the written proposal before it starts, so you know what the first connection costs before the build starts. The call below is the place to test your owner map with a Flectic consultant.

Mistakes that break a Shopify and Odoo connection

  1. Letting two systems edit the same product or price field with no conflict rule. Write the rule into the connector setup before go-live.
  2. Choosing a connector without checking the Odoo version and edition. The PRO listing rules out Odoo Online.
  3. Reading "real-time" as one thing. The native connector brings in orders every 10 minutes, and a webhook connector can deliver new orders within seconds.
  4. Pulling stock from Shopify into Odoo on every run. Odoo's documentation limits that to setup or a known mismatch.
  5. Leaving a 3PL's stock outside Odoo. If the 3PL holds stock you sell, its count needs a mapped warehouse in Odoo, or the storefront sells units you cannot ship.
  6. Skipping refund review. Bisync refunds arrive as draft credit notes, so someone in accounting has to approve each one.

How Flectic can help

Flectic connects your POS, eCommerce, inventory and finance on Dynamics 365 or Odoo, so each unit is counted once and ships from the best location. The offer fits retailers who sell in store, online and on marketplaces, where each channel keeps its own stock. Flectic sends a written proposal with a fixed price for each phase before work starts. Read how the ERP for retail and e-commerce offer is scoped, then Book a free discovery call.

Sources

Frequently asked questions

Can Shopify and Odoo share one stock count?

Yes, when each Shopify location maps to one Odoo warehouse and the connector pushes stock after each change or order. Odoo's native connector pushes stock after each order pull, and app-store connectors differ on timing, so ask the vendor how often each location is updated. Set the rule for reserved stock before go-live so the storefront never sells units already promised to a buyer.

Does Odoo's Shopify connector work in real time?

Odoo's native Shopify connector does not perform real-time synchronization. It runs on scheduled actions and brings in orders every 10 minutes. Some app-store connectors use Shopify webhooks for new orders, which their listings say arrive within seconds, so ask for that behavior in writing before you buy.

Do I need Odoo Enterprise to connect Shopify?

It depends on the connector. The Odoo Shopify Connector PRO listing supports Odoo 16 to 19 on Enterprise or Community and says Odoo Online is not supported. The native connector's documentation does not name an edition, so confirm the edition and version with the vendor before you buy any connector.

When is Shopify with an inventory app enough?

A single storefront with one warehouse, little or no wholesale and a low SKU count usually runs well on Shopify, an inventory app and QuickBooks. Odoo starts to earn its place when several channels share stock, when you ship from several warehouses, or when you need manufacturing or wholesale order workflows. Check the number of inventory locations your plan allows before you decide.

Should Shopify or Odoo own product prices?

Decide field by field and write the owner down before the first sync. Many teams keep storefront copy and images in Shopify and cost and price lists in Odoo. Without a written conflict rule, a change made in both systems can overwrite the other.