Skip to Content

Sell on WooCommerce, then fulfill, invoice and restock in Odoo

This WooCommerce Odoo integration imports your store's orders as Odoo sale orders, with their shipping, fee and coupon lines. Stock moves both ways, and WooCommerce is set to completed once you validate the delivery. Connect one store or several.

  • Odoo 17.0 – 19.0
  • Community & Enterprise
  • Odoo.sh · On-premise
  • Not for Odoo Online

WooCommerce order and stock work before and after the connector

Without the connector by hand

  1. Retype store orders into Odoo with their shipping, fee and discount lines.
  2. Create each buyer's billing and delivery contact by hand.
  3. Edit stock counts in WordPress after every Odoo delivery.
  4. Upload new products, prices and images to the store one at a time.
  5. Mark shipped orders completed in the WooCommerce admin.
  6. Issue a refund in the store, then record it again in Odoo.
  7. Check the store for canceled orders before you invoice.

With the connector automatic

  1. Orders import as Odoo sale orders with those lines, on the schedule you set.
  2. Billing, delivery and company contacts are created while the order imports.
  3. Stock export can run every 30 minutes once you switch the job on.
  4. One export sends up to 80 listings with price, stock and images.
  5. Validate the delivery, and the order is set to completed in WooCommerce.
  6. Click Refund In WooCommerce, pick restock, and the store is updated.
  7. Orders canceled in the store are canceled in Odoo at the next import.

Orders, customers, stock and prices between WooCommerce and Odoo

Every object the connector handles, which way it travels and what triggers it.

DataDirectionWhat happens & when
Orders WooCommerce to Odoo

A schedule you set, a new order in the store, or a manual import.

Billing and delivery contacts WooCommerce to Odoo

Created or reused while an order is imported.

Products and variants Both ways

Import Listings, or an export or update you run from Odoo.

Stock levels Both ways

A manual export or import, or the stock jobs you switch on.

Prices Odoo to WooCommerce

The Update Prices operation, or the daily price job when active.

Product images Both ways

Included with product import, export and update operations.

Product categories WooCommerce to Odoo

An imported product referencing them, or the Import Categories operation.

Product tags Both ways

The Import Tags operation, then sent back with product export and update.

Completed order status Odoo to WooCommerce

A fully validated delivery, then your click or the status job.

Refunds Odoo to WooCommerce

You confirm Refund In WooCommerce on the imported sale order.

Order cancellation Both ways

You click Cancel In WooCommerce, or the store reports it canceled.

Mapped extra store fields Both ways

Runs with customer, listing and order imports and tracking export.

Odoo WooCommerce Integration features

Import orders with shipping and fees

Store orders become Odoo sale orders carrying their line items, shipping and fee lines. Discounts and coupon codes come across with them. You can fetch everything changed inside a date range, or type specific WooCommerce order numbers when you only need a few. Only orders whose store status matches your filter are imported, and Processing is the default.

The Odoo import orders screen for WooCommerce, with date range and order ID options

Run every import from one screen

The Operations button on your store card opens a single wizard for imports. Pick products, categories, tags or stock, set the options and click Process. Product imports create listings and variants in Odoo with name, description, SKU, weight and images. You choose whether existing listings are overwritten and whether the imported price is written into the store pricelist.

The Odoo operations wizard listing WooCommerce import options such as listings, orders and inventory

Publish products with their variants

Add Odoo products to listings, fill in categories, tags, weight and attributes, then export. A single run sends up to 80 listings, including description, price, stock and one image per variant. You decide whether each product appears as published or as a draft. Simple and variable products both work, and every variant needs its own internal reference, since WooCommerce matches on SKU.

The Odoo export wizard sending WooCommerce listings with price, inventory, image and publish options

Send Odoo stock and prices to the store

The export side of the same wizard updates what shoppers see. Update Inventory sends the quantity your Stock Based On setting produces, either On Hand, Forecasted or Free To Use, for variants with Manage Stock? enabled. Update Prices sends the regular and sale price of each variant from the store pricelist, and skips any listing priced at zero.

The Odoo export operations screen for WooCommerce inventory, price and listing updates

Refund an order from the sale order

Open the imported sale order and click Refund In WooCommerce. You set the quantity to refund per line and adjust the shipping and tax amounts. Tick Restock In WooCommerce to put the goods back into store stock, and Refund via Payment Gateway? to have the gateway handle the money. When the store already refunded the buyer, mark the Odoo order refunded instead.

The Odoo refund screen for a WooCommerce order, with per-line quantities and restock options

Decide how paid orders are processed

Each row matches a WooCommerce payment gateway and a financial status of paid, unpaid or any. You pick the workflow that runs for that combination, covering confirmation, invoicing, delivery validation and payment registration, plus the payment term applied to the order. An order with no matching row is skipped and written to the log, so you can add the row and import it again.

Odoo order workflow rows matching WooCommerce payment gateways and financial statuses

Set the intervals for unattended syncs

Each store carries its own timing for the jobs you want running. Order import starts at every 15 minutes, order status export at every 25 and stock export at every 30, while stock import and price export run daily. Change the interval, then switch a job on. It is worth spacing them apart so the server is not doing everything at once.

The automatic jobs tab in Odoo with intervals for WooCommerce order, stock and price syncs

Compare your stores on one dashboard

The dashboard reports on sales across the stores you have connected, so you can weigh one against another. It highlights top-selling products, categories and the countries buyers order from. Each store also has its own view with the same breakdown for that shop alone. Because the orders sit in Odoo, the regular Odoo reports and accounting use the same figures.

An Odoo dashboard comparing WooCommerce stores by sales, top products and countries

How to connect WooCommerce to Odoo

  1. Step 1

    Create the store API keys

    In WordPress, open WooCommerce, Settings, Advanced, REST API and click Add key. Give it a description, choose the user and set permissions to Read/Write. Copy the consumer key and secret, since the secret is shown once.

  2. Step 2

    Add the store in Odoo

    Go to Marketplaces, Configuration, Instance and click New. Name the store, select WooCommerce, then paste the shop URL with https, the consumer key and the secret. Click Test Connection. A guided wizard covers the same ground.

  3. Step 3

    Set products, stock and orders

    Choose the warehouse, the pricelist and whether missing SKUs create Odoo products. Pick the quantity basis for stock export, the order statuses you want imported, and how taxes on imported orders are applied.

  4. Step 4

    Add workflows and confirm

    Add a workflow line for each payment gateway and financial status you accept, then click Confirm. Odoo checks the credentials and brings in the store currency, the weight unit and the gateways your store has enabled.

  5. Step 5

    Import the catalog and start the jobs

    Run Import Listings, Import Categories and Import Tags from the Operations wizard to fill Odoo with your store data. Then set the intervals on the automatic jobs tab and switch on the ones you need.

Supported Odoo versions

Odoo versionEditionsHosting PriceLatest release
19.0 Community & Enterprise Odoo.sh · On-premise €231 19.0.1.0.5 Buy
18.0 Community & Enterprise Odoo.sh · On-premise €231 Buy
17.0 Community & Enterprise Odoo.sh · On-premise €231 Buy

Support for Odoo WooCommerce Connector

The developers who build the app answer your tickets.

Free app support from purchase
60 days
First response in working hours, typical
4–6 hours
Support hours, 10:00–18:00 IST
Mon–Fri

Questions before you buy

Not answered here? Talk to the team.

The connector ships for Odoo 17.0, 18.0 and 19.0, in both Community and Enterprise. It installs on Odoo.sh and on on-premise servers. Odoo Online does not allow third-party apps, so the connector cannot be installed there. The module also needs Base Marketplace, and it talks to your store through the official WooCommerce REST API v3.

Yes. You add one store record per shop in the same Odoo database, and there is no fixed limit on how many. Each one keeps its own credentials, product and order settings, payment workflows and job intervals. That means a store in one country can import on a different schedule and use a different pricelist than another.

It matches on SKU alone, so each product and variant needs a unique internal reference in both systems. If nothing matches and Create Odoo Products? is off, the listing stays unlinked until you connect it. Turn that setting on and Odoo creates the product instead. Grouped products are not imported and are written to the log.

Check three things. The order status has to be in your store's status filter, which starts at Processing only. Orders created before the Import Order After date are skipped on purpose. Most often there is no workflow row for that order's payment gateway and financial status, so the order is logged and passed over. Add the row, then import again.

No. Prices read from the store are written to the pricelist attached to that store record, not onto the Odoo product itself. Exports work the same way round, sending the pricelist price for each variant back to WooCommerce. Listings priced at zero in the pricelist are skipped when prices are exported.

Start with the key. A read-only key cannot export products, update stock, push order status or process refunds, so it has to be Read/Write. Re-check the shop URL, consumer key and secret, and use Test Connection. Live store updates need an HTTPS site and a confirmed store record. Detailed messages sit under Marketplaces, Queues, Logs.

Yes. You map a WooCommerce meta field to an Odoo model and field, and choose whether it applies to customer, listing or order imports, or to the tracking details sent back. Date fields take a parsing format. Mapped values are written only for records the connector creates, and they overwrite whatever is in the Odoo field.

When the store reports an order as canceled or refunded, the connector cancels the matching Odoo order during the next import or update run. Orders canceled or refunded in the store that were never imported are simply skipped. Orders the store marks completed have their Odoo delivery validated automatically.

Top 10 Odoo Apps Store seller

One team behind every one of them: every connector on this page is built and supported by the same people — Odoo partners since 2020.

sales on the Odoo Apps Store
3,000+
apps published
100+
countries running them in production
100+

Talk to the team that built it

Contact us
100%