Start a Project
AEO & GEO

Odoo WooCommerce Integration: Setup Guide

19 min read
Adam Khaled

Adam Khaled

Founder, Web25

Odoo WooCommerce Integration: Setup Guide

Quick answer: An Odoo WooCommerce integration syncs products, stock, orders and customers between your WooCommerce store and Odoo, so nobody retypes data. You can use a connector app, an automation tool or custom code. Your Odoo hosting decides which is possible, because Odoo Online cannot run apps from the Odoo Apps Store.

Key takeaways

  • Stock and prices usually flow from Odoo to WooCommerce, and orders and customers flow back.
  • Odoo Online cannot run connector apps from the Apps Store, and its API access needs a Custom plan, so check your hosting first.
  • Odoo 19 added the JSON-2 API, and the older XML-RPC and JSON-RPC endpoints are scheduled for removal.
  • Odoo shows several stock numbers, so decide which one the store may sell.
  • WooCommerce switches a webhook off after more than five failed deliveries, and an Odoo API key lasts three months at most.

Table of contents

If your stock and accounting live in Odoo and you sell through WooCommerce, someone is probably copying orders and stock numbers between the two. This guide explains how an Odoo WooCommerce integration works, which way to build it, and what to check before you spend money.

What does an Odoo WooCommerce integration sync?

An Odoo WooCommerce integration moves data between your online store and Odoo, so both show the same facts. Odoo is business software that can hold your inventory, sales orders, invoices and customer records in one system.

The WooCommerce connector from Emipro Technologies on the Odoo Apps Store is one example. It lists orders, customers, inventory, order status updates, prices from Odoo pricelists, tracking numbers, refunds, and product, category and tag import and export. That list is a good guide to what a typical integration covers.

Odoo WooCommerce data flow: stock and prices go out, orders and refunds come back
DataUsual directionWhy it matters
Products and SKUsEither way, one system leadsBoth systems agree on what each item is
Stock levelsOdoo to WooCommerceStops the store selling items you do not have
PricesOdoo to WooCommerceOne place to maintain pricelists
OrdersWooCommerce to OdooSales and the warehouse see every web order
CustomersWooCommerce to OdooOne contact record for sales and invoices
Shipping status and trackingOdoo to WooCommerceCustomers see delivery updates
Cancellations and refundsBoth waysKeeps the books correct after changes

A common choice is Odoo as the owner of stock and prices, and WooCommerce as the owner of orders and customers. Your setup may differ.

How can you connect Odoo to WooCommerce?

There are three ways to connect Odoo to WooCommerce: a connector app, an automation tool, or custom code. Start with the simplest one that covers your real workflow, and move up only when it does not.

MethodBest forWatch out for
Connector app, such as Emipro’s WooCommerce connectorStandard product, stock, order and refund flows, and several WooCommerce stores on one Odoo databaseIt is a paid third-party app, each Odoo version of it is sold separately, and it needs hosting that can run Apps Store modules
Automation tool, such as Zapier or Pabbly ConnectLight flows, for example a new WooCommerce customer creating a lead in OdooZapier’s Odoo app is Odoo CRM, and the Odoo actions on its WooCommerce page cover leads and contacts, so stock sync is not among them
Custom codeCustom fields, several warehouses, approval rules, or full control over errors and loggingBuild and maintenance cost, so it needs documentation and tests, and it has to follow Odoo’s API changes

If a connector covers your flows, use it. There is no point paying for custom development to rebuild what a ready-made app already does.

Custom code starts to pay off when your process does not fit the standard one. Typical triggers are custom fields or modules in Odoo, stock held in several warehouses with different rules, or an approval step before an order is confirmed.

If you are still choosing a store platform, you could also skip WooCommerce. Odoo’s documentation describes Odoo eCommerce as an open-source platform for building and managing an online store. Keep WooCommerce when you already have a store, WordPress content or plugins you rely on, because moving all of that is a project of its own.

Does your Odoo hosting allow an integration?

It depends on where Odoo runs, because hosting decides which connection methods you can use. Odoo’s documentation says Odoo Online is incompatible with custom modules or modules from the Odoo Apps Store. A connector app is one of those modules, so it cannot be installed there.

Where Odoo runsConnector app from the Apps StoreDirect connection through Odoo’s API
Odoo OnlineNo, according to Odoo’s documentationOnly on a Custom Odoo pricing plan. The API documentation says it is not available on One App Free or Standard plans
Odoo.shYes. Odoo’s documentation describes adding community or custom modules to a branch of your GitHub repositoryAsk Odoo to confirm it for your contract, because the documentation ties API access to pricing plans
On-premiseYes. Emipro’s connector lists on-premise installs as supportedSame question for your contract

This is based on Odoo’s 19.0 documentation, checked in October 2026. Do this check before you pay for a connector or ask for quotes, because it can rule out the easy option.

For custom code, Odoo 19 added the JSON-2 API, which uses an API key sent with each request. Odoo’s documentation says the older XML-RPC and JSON-RPC endpoints are scheduled for removal in Odoo 22 (fall 2028) and Odoo Online 21.1 (winter 2027), and names JSON-2 as the replacement. Anything built on the old endpoints will need to move, so ask every provider which API it uses.

How do you set up an Odoo WooCommerce integration in 8 steps?

To set up an Odoo WooCommerce integration, check your Odoo hosting, decide which system owns each type of data, create secure access on both sides, map your products by SKU, build the stock and order flows, add a check that compares both systems, and test on a copy before going live. The steps below follow that order.

Step 1: Check your Odoo hosting and API access

Find out whether you run Odoo Online, Odoo.sh or an on-premise install, and which plan or contract you have. That answer decides whether a connector app or direct API access is possible.

Step 2: Decide the source of truth for each type of data

Write down which system wins for products, prices, stock, orders, customers and shipping status. When two systems can change the same field, they eventually disagree, so give each field one owner.

Step 3: Create secure access on both sides

In WooCommerce, the REST API documentation says pretty permalinks must be on, because default permalinks will not work, and it recommends HTTPS. Create the API keys for a dedicated WordPress user, since the keys follow that user’s roles, and choose Read, Write or Read/Write access to match the job.

In Odoo, create the API key for a dedicated user with only the access rights the sync needs. Odoo’s documentation says keys cannot last longer than three months, so put a key rotation date in someone’s calendar.

Step 4: Map your data

List how a WooCommerce record becomes an Odoo record. Odoo’s Internal Reference field and WooCommerce’s SKU field, the unique code for each product, are the usual match, and Emipro’s connector matches products on exactly that pair. Make every SKU unique on both sides, and map taxes, shipping methods, payment methods and warehouses. A rushed map shows up later as orders that land in the wrong place.

Step 5: Build the stock flow, from Odoo to WooCommerce

First decide which Odoo number the store may sell. Odoo’s stock report shows On Hand, Free to Use, Incoming and Outgoing, and defines Free to Use as on-hand stock that is not reserved for delivery or manufacturing orders. Pick one rule, then test it with a confirmed order that has not been reserved yet, to see what number the store would show.

Then update only the WooCommerce products that match by SKU, and skip the rest. WooCommerce tracks quantity only for products with stock management switched on, and the API leaves that off by default, so check it on every product you sync.

Step 6: Build the order flow, from WooCommerce to Odoo

Use a WooCommerce webhook, a message the store sends to another system when something happens, to start the flow when an order is created or changes. Each order should create or find the customer and create a sales order in Odoo. Store the WooCommerce order number on the Odoo record, so that if the same order arrives twice, your code can see it already exists and skip it.

Read orders through the REST API, not straight from the database. WooCommerce’s High-Performance Order Storage has been on by default for new stores since WooCommerce 8.2 in October 2023, and it keeps order data in dedicated tables instead of the posts tables.

Step 7: Send shipping status and refunds back

When Odoo ships an order, send the tracking details to WooCommerce so the customer is notified. Handle cancellations and refunds in both directions, each as its own small flow with its own tests.

Step 8: Add a reconciliation check, then test before going live

WooCommerce disables a webhook automatically after more than five consecutive delivery failures, and counts any answer that is not a 2xx, 301 or 302 as a failure. If Odoo is down during an upgrade, the webhook can switch itself off and new orders stop reaching Odoo until someone turns it back on. Add a scheduled job that compares recent orders and stock in both systems and reports any difference.

Then test on a copy of your Odoo database and a staging copy of the store, with writes off first. Run the first live week with alerts on, and watch every error.

What did we learn from a similar WooCommerce sync?

Web25 built a custom WooCommerce and POHODA integration for Mirael3D, a store selling 3D-printing filament. It is not an Odoo project, because POHODA is accounting software popular in Slovakia and Czechia. The WooCommerce side is the same kind of work, with stock flowing one way and orders the other.

The Mirael3D POHODA case study shows what mattered in practice:

  • A stock field that looked like “available” did not subtract orders received but not yet processed, so the site sold the last unit and a later stock push restored the old number. The fix calculates sellable stock from the raw quantity minus committed orders, and never goes below zero.
  • The connector ran in dry-run mode, with writes disabled, until the final log had been checked line by line. A full audit of 129 matched products then found no stock discrepancies.
  • Cancelled orders ran through an off, log-only or live switch, and products with no match went to a draft review queue instead of being published.

This is one project on one pair of systems, so treat it as an example of method. Odoo has its own stock numbers and its own quirks, which is why step 5 starts with a test.

What does an Odoo WooCommerce integration cost?

There is no honest single price, because the cost depends on a handful of factors you can list before you ask for a quote. A standard connector setup is a small job, and a custom sync with unusual rules is a larger one.

FactorPushes the cost up when
Number of flowsYou sync products, stock, prices, orders, shipping status and refunds, not just orders
Odoo hosting and planYour hosting rules out a connector app, so a direct API connection is the only route
Custom fields and modulesOdoo has custom fields or modules that the standard flow ignores
Warehouses and storesStock sits in several warehouses, or several WooCommerce stores share one Odoo database
Catalog and order volumeA large catalog or high order volume needs careful scheduling
MethodA connector is a paid app that is bought again for each Odoo version, while custom code adds build and maintenance work
MonitoringYou want alerts, key rotation and someone to fix issues after launch

Budget for the time after launch as well. An integration touches money and stock, so it needs monitoring, and our guide to website maintenance packages covers how ongoing care is usually priced.

What mistakes break the sync?

Most failures trace back to a check nobody made before launch.

  • Buying a connector before checking that your Odoo hosting can run it.
  • Leaving SKUs empty or duplicated, so products match wrongly or not at all.
  • Letting an Odoo API key expire, because keys last three months at most.
  • Trusting webhooks alone, when WooCommerce can switch one off after repeated failures.
  • Building on the old XML-RPC or JSON-RPC endpoints, which are scheduled for removal.
  • Testing on live data instead of a copy and a dry run.

Who should build an Odoo WooCommerce integration?

Web25 is our agency, and it does not build Odoo integrations. This guide is here to help you choose well, not to sell you a project.

For the Odoo side, use an Odoo partner or a ready connector. An Odoo partner knows your Odoo version, hosting and modules, and those decide most of this project. A connector covers standard flows if your hosting can run it.

Web25 builds WooCommerce stores and custom API integrations between online stores and business software, like the WooCommerce and POHODA sync above, and keeps them monitored afterward. Our backend and API service page explains how we work. The general method is in our guide to custom API integration services, and the Shopify NetSuite integration guide walks through another pairing in detail. If your books are in Xero, read the Xero WooCommerce integration guide. If your ERP is NetSuite, read the NetSuite WooCommerce integration guide. If your ERP is Microsoft Dynamics 365, read the Dynamics 365 ecommerce integration guide.

FAQ

Not always. On Odoo.sh or on-premise, with standard flows, a connector app can handle products, stock, orders and refunds through setup screens, although someone still has to install and test it. You need a developer when you are on Odoo Online, when you have custom fields or approval rules, or when you want your own logging and error handling.

Emipro's connector page says its app works with Odoo Enterprise, both on-premise and on Odoo.sh, and with Community. It does not install on Odoo Online. Other connectors differ, so read the compatibility list for the exact app and Odoo version you plan to buy before you commit to it.

Yes. Emipro's connector page says you can connect as many WooCommerce stores as you want to a single Odoo instance, with a pricelist mapped per store. With custom code you can do the same by keeping store-specific rules in a configuration layer, as we did in the Mirael3D project, so a new store means new settings rather than a new build.

There is no single right interval. It depends on how fast your stock moves and how costly an oversell is. Connectors such as Emipro's update stock manually or through scheduled actions. Fast-moving items with small stock need frequent updates, and slow items do not. Whatever you choose, subtract committed orders from the quantity you send, so a delay cannot sell the last unit twice.

Ask which Odoo version and hosting they support, which Odoo API they use, how they test before going live, who owns the code and the API keys, and who watches the sync afterward. Ask to see Odoo work as well. A copy of your database plus a dry run is a good answer to the testing question.

Plan to update it. Emipro's FAQ says each version of its connector is sold separately, starting from version 13. Odoo's older XML-RPC and JSON-RPC endpoints are also scheduled for removal, so custom code that uses them has to move to JSON-2. Test the new Odoo version on a copy of your database, with the integration switched on, before you upgrade production.

What to do next

Find out where your Odoo runs and which plan you have, then list the flows you need: products, stock, orders and shipping status. Those two answers tell you whether a connector is possible. Take them to your Odoo partner or connector vendor, together with the questions in the FAQ above.


Written by Adam Khaled, Founder, Web25. Last updated October 2026.

More from the blog

Odoo WooCommerce Integration: Setup Guide | Web25 Blog