Title: Odoo Integration for WooCommerce
Author: Niraj Gupta
Published: <strong>July 22, 2026</strong>
Last modified: October 23, 2026

---

Search plugins

![](https://ps.w.org/erp7-solutions-sync-for-odoo-and-woocommerce/assets/banner-
772x250.png?rev=3733931)

![](https://ps.w.org/erp7-solutions-sync-for-odoo-and-woocommerce/assets/icon.svg?
rev=3621283)

# Odoo Integration for WooCommerce

 By [Niraj Gupta](https://profiles.wordpress.org/smgom/)

[Download](https://downloads.wordpress.org/plugin/erp7-solutions-sync-for-odoo-and-woocommerce.2.3.5.zip)

 * [Details](https://wordpress.org/plugins/erp7-solutions-sync-for-odoo-and-woocommerce/#description)
 * [Reviews](https://wordpress.org/plugins/erp7-solutions-sync-for-odoo-and-woocommerce/#reviews)
 *  [Installation](https://wordpress.org/plugins/erp7-solutions-sync-for-odoo-and-woocommerce/#installation)
 * [Development](https://wordpress.org/plugins/erp7-solutions-sync-for-odoo-and-woocommerce/#developers)

 [Support](https://wordpress.org/support/plugin/erp7-solutions-sync-for-odoo-and-woocommerce/)

## Description

**Sync WooCommerce and Odoo automatically — orders, products, inventory, customers,
invoices and payments, in both directions, with no CSVs and no manual re-keying.**

This WooCommerce Odoo integration connects your storefront to your back office. 
Set it up once and every order, customer, product and payment reaches Odoo’s Sales,
Inventory and Invoicing apps on its own. [Read the setup guide](https://odooconnector.cloud/docs)
or [see how the plans compare](https://odooconnector.cloud/pricing).

Built for stores that cannot afford synchronization errors, this connector runs 
on an asynchronous background queue. This means a slow Odoo server will never slow
down your WooCommerce checkout.

Fully compatible with Odoo 16, 17, 18, 19, and 20, WooCommerce HPOS, and block-based
checkouts.

#### Automated Order Management (Bi-Directional)

 * **Triggered on Checkout:** Orders export to Odoo before the customer even sees
   the thank-you page.
 * **Status-Based Rules:** Choose exactly which orders export. (e.g., Send “Processing”
   orders automatically, but hold “Pending Payment” or “COD” orders).
 * **Quotation or Sales Order:** Draft incoming WooCommerce orders as Odoo Quotations
   for manual review, or push them straight through as confirmed Sales Orders.
 * **Custom Numbering:** Keep your exact WooCommerce order numbers in Odoo (with
   optional prefixes/suffixes) so your referencing stays clean.
 * **Discount & Shipping Mapping:** Shipping costs and coupon codes land on their
   own specific Odoo order lines, keeping your accountant happy and reporting accurate.
 * **Odoo to WooCommerce Import:** Pull Odoo sales orders down into WooCommerce 
   on a schedule or on demand.
 * **Built for Volume:** Orders travel to Odoo in batches of 25 rather than one 
   at a time, which is what turns a backlog of several thousand orders into a job
   of hours rather than days.

#### Smart Invoicing & Payment Routing

 * **Automated Financials:** Odoo invoices are created automatically based on the
   order statuses you define.
 * **Payment Journal Mapping:** Route funds correctly. Stripe payments, PayPal funds,
   and Cash on Delivery can each land in their own dedicated Odoo payment journal—
   eliminating month-end reclassification.
 * **Automated Credit Notes:** Processing a refund in WooCommerce automatically 
   generates the corresponding credit note in Odoo.
 * **Invoice State Control:** Separate your triggers. Choose one status to mark 
   an invoice in payment and another to mark it fully paid.

#### Complete Product & Inventory Sync

 * **Two-Way Product Sync:** Import and export products, including complex variations,
   attributes, nested categories, and high-res images.
 * **Intelligent Stock Rules:** Sync Quantity Available or Quantity On Hand based
   on what your fulfillment team actually trusts. Limit stock sync to specific Odoo
   warehouses.
 * **Field Mapping:** Carry custom data between systems. Map WooCommerce standard
   or custom fields directly to Odoo custom fields (`x_...`), in either direction,
   including fields on variants.
 * **Barcode & SKU Matching:** Prevent duplicates. Link your existing Odoo catalog
   to your store via Internal Reference (`default_code`) or Barcode matching.
 * **Safe Updates:** On re-import, choose to update everything, update price/stock
   only, or leave existing WooCommerce product details untouched.
 * **Images on Their Own Terms:** Import images on a dedicated Media tab, at the
   size you choose (thumbnail through to the full 1920px), and an image is downloaded
   again only when Odoo’s copy has actually changed.

#### Customer & CRM Alignment

 * **Flexible Customer Handling:** Create a unique Odoo contact for every buyer,
   log guest checkouts, route orders by tag, or map all B2C retail orders to one
   single “Web Sales” customer account.
 * **Role-Based Export:** Choose which WordPress user roles sync to Odoo, keeping
   your ERP contacts free of store administrators and subscribers.

#### Built for Enterprise Reliability

We know what happens when a sync fails during a busy sales event. We built this 
connector to be transparent, resilient, and honest.

 * **Asynchronous Background Queue:** Every sync runs through a background queue
   with automatic retries. Your site performance is completely isolated from Odoo’s
   uptime.
 * **Human-Readable Logs:** No cryptic error codes. Get plain-language messages (
   e.g., “Odoo returned a temporary error — retrying automatically”). Full technical
   payloads are one click away for debugging.
 * **Secure Webhooks:** Authenticated webhook callbacks confirm every synchronization
   result.
 * **Honest Dashboards:** Live progress reporting. See exactly how many records 
   synced and how many failed. Failures never quietly disappear from the total.
 * **Multi-Company Odoo Support:** Explicitly pick which Odoo company your store
   synchronizes with.

#### Pricing & Transparency

Every single feature listed above is fully functional in the plugin itself. There
are no disabled code paths, trialware gates, or hidden “Pro-only” toggle switches
inside WordPress. The connection runs through the OdooConnector service.

 * **Free Plan:** Includes 10 orders, 10 products, and 10 customers synced per month
   forever. Ideal for testing and very low-volume setups.
 * **Paid Plans:** Removes the volume limits for growing stores. Every paid plan
   includes a 14-day free trial (cancel anytime, no charge until the trial ends).
 * **Real Support:** Live-chat support is built directly into the plugin settings
   page — and yes, we provide support to Free plan users, too.

#### Technical Requirements

 * WooCommerce 7.0 or higher
 * Compatible with WooCommerce High-Performance Order Storage (HPOS)
 * An active Odoo instance (URL, database name, username, password)
 * Compatible with Odoo versions 16, 17, 18, 19, and 20
 * Network access to the OdooConnector service

#### Ready in 3 Minutes

 1. Install and activate the plugin.
 2. Enter your Odoo URL and credentials, then click “Test Connection.”
 3. Place a test order in WooCommerce and watch it appear in Odoo instantly.

## Screenshots

[⌊WooCommerce Odoo sync dashboard — what has synced, what runs next, and the last
orders that reached Odoo⌉⌊WooCommerce Odoo sync dashboard — what has synced, what
runs next, and the last orders that reached Odoo⌉[

WooCommerce Odoo sync dashboard — what has synced, what runs next, and the last 
orders that reached Odoo

[⌊WooCommerce product sync with Odoo — import from Odoo and export back, each direction
switched on separately⌉⌊WooCommerce product sync with Odoo — import from Odoo and
export back, each direction switched on separately⌉[

WooCommerce product sync with Odoo — import from Odoo and export back, each direction
switched on separately

[⌊WooCommerce to Odoo order sync settings — export on checkout at the statuses you
choose, and import Odoo orders back⌉⌊WooCommerce to Odoo order sync settings — export
on checkout at the statuses you choose, and import Odoo orders back⌉[

WooCommerce to Odoo order sync settings — export on checkout at the statuses you
choose, and import Odoo orders back

[⌊Odoo sync logs — a plain-language record of every product and order, filterable
by type and context⌉⌊Odoo sync logs — a plain-language record of every product and
order, filterable by type and context⌉[

Odoo sync logs — a plain-language record of every product and order, filterable 
by type and context

[⌊WooCommerce customer export to Odoo — in bulk or the moment an account changes,
limited to the roles you pick⌉⌊WooCommerce customer export to Odoo — in bulk or 
the moment an account changes, limited to the roles you pick⌉[

WooCommerce customer export to Odoo — in bulk or the moment an account changes, 
limited to the roles you pick

[⌊Odoo sync defaults: company, warehouse and price list — company, warehouse, price
list, journals and tax, chosen from your own Odoo⌉⌊Odoo sync defaults: company, 
warehouse and price list — company, warehouse, price list, journals and tax, chosen
from your own Odoo⌉[

Odoo sync defaults: company, warehouse and price list — company, warehouse, price
list, journals and tax, chosen from your own Odoo

[⌊Plans — every feature is in the plugin; the service plan governs how much you 
sync, never what works⌉⌊Plans — every feature is in the plugin; the service plan
governs how much you sync, never what works⌉[

Plans — every feature is in the plugin; the service plan governs how much you sync,
never what works

## Installation

 1. Upload the plugin folder to `/wp-content/plugins/erp7-solutions-sync-for-odoo-and-
    woocommerce/` (or install via WordPress admin)
 2. Activate the plugin through the ‘Plugins’ screen in WordPress
 3. Navigate to WooCommerce  Odoo Connector and enter your Odoo URL, database, username,
    and password, then test the connection
 4. Configure sync preferences and save
 5. Optionally subscribe to the OdooConnector service from the Features tab for unlimited
    middleware order sync

## FAQ

### Is this plugin free? Does it require a paid service?

The plugin is free and every feature in it is fully functional. Synchronization 
runs through the OdooConnector cloud service, whose free plan includes 10 order,
10 product, and 10 customer syncs per calendar month — enough to run a small store
or evaluate everything. Paid service plans remove the limits and add inventory/price
sync, and come with a 14-day free trial.

### How do I sync WooCommerce orders to Odoo?

Install the plugin, enter your Odoo URL and credentials, and enable “Export on checkout”.
From then on every order is created in Odoo automatically — customer, order lines,
invoice, and payment included. You can also export on specific status changes or
with one click from the Orders tab.

### Can I import products from Odoo to WooCommerce?

Yes. Product sync works in both directions: import your Odoo catalog into WooCommerce(
variations, attributes, categories, and images included) or export WooCommerce products
to Odoo, manually or on a schedule.

### Are any features locked behind a paid upgrade in the plugin?

No — everything is built into this one plugin, with no license check, feature gate,
or add-on to install. Here is what each plan of the OdooConnector service provides:

Free:

 * Order export to Odoo — automatic on checkout, on status change, and manual
 * Order import from Odoo, invoice creation, payment registration, and refund sync(
   credit notes)
 * Product import and export, customer export
 * 10 orders, 10 products, and 10 customers synced per month
 * Dashboard, sync logs, and live-chat support

Paid:

 * Everything in Free, with unlimited syncs
 * Inventory and price sync (scheduled and on-demand, per warehouse)
 * Scheduled automation with background processing
 * Priority email support
 * 14-day free trial — cancel anytime

The Plans tab in the plugin shows the full comparison.

### Does it work with Odoo Online (odoo.com) and Odoo.sh?

Yes. Any Odoo instance the OdooConnector service can reach over the internet works:
Odoo Online (odoo.com), Odoo.sh, and self-hosted Odoo Community or Enterprise.

### Which Odoo versions are supported?

Odoo 16 through 20 are supported. For Odoo 16–18 the service communicates with your
Odoo instance over XML-RPC; for Odoo 19 and later it uses Odoo’s modern JSON-2 API.
Your Odoo version is detected automatically when you connect — there is nothing 
to select or configure, and the detected version is shown in the API Connection 
bar.

### How do I create an Odoo API key?

In Odoo, open Preferences  Account Security  New API Key, copy the generated key,
and paste it into the Password / API Key field on the API Settings tab. The key 
is shown only once. An API key is required on Odoo 19 and later; on Odoo 16–18 your
account password also works. Full step-by-step guide, including where to find your
server URL, database name and username: https://odooconnector.cloud/docs/odoo-api-
credentials

### Is HPOS supported?

Yes, this plugin is fully compatible with WooCommerce High-Performance Order Storage(
HPOS).

### How do I sync WooCommerce stock with Odoo inventory?

Turn on Inventory sync in Settings  Products. Stock levels are read from Odoo on
a schedule you choose and written to the matching WooCommerce products, matched 
by SKU. The inventory sync owns quantities on its own — no field mapping is needed
for it, and a mapping rule cannot write stock, so the two can never fight over the
same number.

### How do I sync WooCommerce refunds as Odoo credit notes?

Both directions work. A refund made in WooCommerce is sent to Odoo as a credit note
against the invoice for that order. A credit note raised in Odoo is imported back
as a WooCommerce refund, matched to the order it belongs to — line by line when 
the note names lines, and as a total otherwise.

### Does it work with Odoo Community edition?

Yes. The plugin reads and writes Odoo’s standard models — products, sale orders,
contacts and invoices — all of which are in Community. You need the Sales and Inventory
apps installed for product and order sync, and Invoicing if you want invoices and
payments.

### How do I connect WooCommerce to Odoo 17, 18, 19 or 20?

The same way for every version: paste your Odoo URL, database name, username and
API key on the API Settings tab, then press Test Connection. Your Odoo version is
detected for you — XML-RPC is used for Odoo 16 to 18 and Odoo’s JSON-2 API for 19
and later — so there is nothing to choose.

### What is the difference between the free and paid versions?

Every feature is in the plugin itself, free. The paid plan governs how much you 
sync, never what works: the free plan includes 10 order, product and customer syncs
per month, and Pro removes the limits. Nothing is disabled, no feature is held back,
and your settings keep working if a plan lapses.

## Reviews

![](https://secure.gravatar.com/avatar/d51fd15f4be0f8b515db8c8873cf189e7ce73adef3aa0ae3b1bb500568838ffb?
s=60&d=retro&r=g)

### 󠀁[Perfect plugin, perfect support](https://wordpress.org/support/topic/perfect-plugin-perfect-support-39/)󠁿

 [devdevii](https://profiles.wordpress.org/devdevii/) October 4, 2026

A plugin that does exactly what I needed plus the support is incredible and fast,
very collaborative, and even ready to develop an option specific to my needs, which
really surprised me. The best support I’ve seen so far in my development journey.

![](https://secure.gravatar.com/avatar/acbad6e1bd3528b457f783de4fd19b23e1430f28e35c947c2c28940396fdacd6?
s=60&d=retro&r=g)

### 󠀁[Super plugin, support très reactif](https://wordpress.org/support/topic/super-plugin-support-tres-reactif/)󠁿

 [kevinpenhars](https://profiles.wordpress.org/kevinpenhars/) October 1, 2026

J'utilise ce plugin pour synchroniser mes commandes WooCommerce vers Odoo (commandes,
factures, paiements), et franchement ça tourne bien. Une fois bien paramétré, les
commandes arrivent correctement dans Odoo, sans erreur sur les montants ou les produits,
et la facturation se fait toute seule. J'ai eu quelques questions techniques en 
phase de test, et le support a toujours répondu vite, avec des corrections rapides
quand il y avait un souci. C'est clairement un plugin sur lequel je peux compter
au quotidien. Je recommande pour qui veut relier sérieusement sa boutique à Odoo.

![](https://secure.gravatar.com/avatar/dc21a9313cf5f3118988139acc3ef2f4a82f1942896649ed55a5d4b4e92876eb?
s=60&d=retro&r=g)

### 󠀁[Good support and works great](https://wordpress.org/support/topic/good-support-and-works-great/)󠁿

 [kocheric](https://profiles.wordpress.org/kocheric/) September 1, 2026

Just wanted to leave a quick review because the support team literally saved my 
sanity this week. I was trying to get our Woo shop connected to Odoo and got stuck
trying to map out a couple of custom inventory flows. Reached out to support expecting
a automated reply, but they actually jumped in and helped me tweak the config until
everything ran right. The plugin has pretty much everything you need for syncing
orders and stock without making it overly complicated. Really glad I found this 
one.

![](https://secure.gravatar.com/avatar/275327baafb9d924f817b5f2dc52bcb75caf47d58eedbf3e104b4c623dbbaa42?
s=60&d=retro&r=g)

### 󠀁[Top-notch Odoo Connector](https://wordpress.org/support/topic/top-notch-odoo-connector/)󠁿

 [seanholyfields](https://profiles.wordpress.org/seanholyfields/) August 19, 2026

Easily one of the best connector plugins on the market. It covers all the features
required for a solid integration and functions flawlessly. Special thanks to the
support team, who went above and beyond to help me configure everything quickly.
Highly recommended!

 [ Read all 8 reviews ](https://wordpress.org/support/plugin/erp7-solutions-sync-for-odoo-and-woocommerce/reviews/)

## Contributors & Developers

“Odoo Integration for WooCommerce” is open source software. The following people
have contributed to this plugin.

Contributors

 *   [ Niraj Gupta ](https://profiles.wordpress.org/smgom/)

[Translate “Odoo Integration for WooCommerce” into your language.](https://translate.wordpress.org/projects/wp-plugins/erp7-solutions-sync-for-odoo-and-woocommerce)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/erp7-solutions-sync-for-odoo-and-woocommerce/),
check out the [SVN repository](https://plugins.svn.wordpress.org/erp7-solutions-sync-for-odoo-and-woocommerce/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/erp7-solutions-sync-for-odoo-and-woocommerce/)
by [RSS](https://plugins.trac.wordpress.org/log/erp7-solutions-sync-for-odoo-and-woocommerce/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 2.3.5

 * Added – Shipment tracking reaches Odoo. With “Send shipment tracking to Odoo”
   on (Orders tab, off by default), the tracking number and status a shipping plugin
   stores on an order go to that order’s delivery in Odoo, with a note on the delivery
   and on the sales order naming the carrier, number and status. It reads WooCommerce
   Shipment Tracking, Advanced Shipment Tracking, AfterShip, YITH Order Tracking
   and Germanized, the fields many smaller plugins use, and any field you name under“
   Custom tracking fields”; the same number from two plugins is sent once. Only 
   news is sent: a new number or a changed status. A private note on the WooCommerce
   order says what went where. “Tracking as a note line” also puts each new number
   on the Odoo sales order as a line. Where Odoo has no Delivery app the number 
   goes in the delivery’s notes. Needs the matching connector update
 * Added – “Get shipping status from Odoo” (Orders tab, off by default). Once an
   order’s deliveries are validated in Odoo, the WooCommerce order gets their tracking
   numbers — through WooCommerce Shipment Tracking or Advanced Shipment Tracking
   when installed, otherwise in the order emails — and a note naming the delivery,
   and is marked Completed unless “Complete shipped orders” is off. Open orders 
   are checked once an hour in one request. Needs the matching connector update
 * Added – “Mark the Odoo delivery done” (shown with shipment tracking, off by default).
   When every package on an order reports Delivered, the Odoo delivery is validated
   with its full quantities, once per order. This takes the stock out in Odoo. A
   delivery Odoo will not validate as it stands (a back order, lot or serial numbers)
   is left alone and the order notes why. Needs the matching connector update
 * Added – “Odoo tax for each WooCommerce rate” on the Orders tab: map each WooCommerce
   tax rate to the Odoo sales tax it means. Matching by percentage cannot tell two
   Odoo taxes of the same rate apart — goods and services both at 20%, a reverse-
   charge 0% — and took the first. A mapped rate gets the tax you chose on product,
   shipping and coupon discount lines; a rate left on “Match by rate”, and every
   store that never fills the table, works as before. Needs the matching connector
   update
 * Added – A Health check under Health  Overview. One button checks the site address(
   HTTPS, not a local address), WordPress’s scheduler, the OdooConnector service
   and, through it, Odoo access with your address, database and key, the chosen 
   company, and whether results from Odoo can reach this site — and says how to 
   fix each problem it finds. Needs the matching connector update; without it the
   Odoo checks show as not checked
 * Fixed – Export Orders respects the export date range. The scheduled export and
   live orders kept to it, but the Export Orders button queued every unsynced order,
   so orders outside the range were sent to Odoo anyway. The button now picks only
   orders dated in the range, and the queue checks the range before sending, so 
   an order queued before the range was set is skipped too

#### 2.3.4

 * Fixed – Orders sent to Odoo as they happen go into the sales team chosen under
   Sales Team Mapping. Only orders sent with Export Orders carried it; every other
   order landed in Odoo’s default team, so a store that picked “Website” found its
   orders under “Sales” (or its translation). Orders already in Odoo keep their 
   team, and with no team chosen Odoo still picks one

#### 2.3.3

 * Added – Customer import (Odoo  WooCommerce) has controls you can find. The flow
   existed but had no screen: its switch and frequency were on a tab that is not
   in the menu, there was no way to start it, and nothing said whether it had ever
   run. It now has a card on the Customers tab with a switch, a frequency, an Import
   Customers button and the time of the last run. Addresses are optional: off, only
   the name, email and phone come over and WooCommerce’s own addresses are left 
   alone. A run queues every customer Odoo has, instead of the same arbitrary 500
   every time while the rest stayed unreachable. Contacts are read in batches rather
   than one at a time, so a thousand customers take a minute instead of eight. An
   Odoo too large for one run carries on from where it stopped. A run shows its 
   progress and names each contact as it arrives — customer import was missing from
   the list the sync widget reads, so it reported nothing anywhere
 * Added – Field mapping for Orders and Customers. The tabs said “Coming soon” for
   something three-quarters built: the sync paths already applied a mapping and 
   only the editor was missing. Order export, order import, customer export and 
   customer import now all map custom fields
 * Added – Your settings are sent to support, redacted. An Odoo password, username,
   API key or webhook secret is never included — only whether one is set — so a 
   configuration question can be answered without handing over admin access to your
   site
 * Added – “Publish Odoo internal notes”, off by default. See the fix below for 
   why it exists
 * Added – “Update price on existing products”, on by default, under Products  Export
   to Odoo. Turn it off where Odoo owns pricing: an export then carries names, SKUs,
   categories and stock as usual but never changes the price of a product Odoo already
   has. A product being created is still given its price, because there is nothing
   to preserve. The mirror of “Update prices” on the import side, which has governed
   the other direction all along
 * Added – “VAT from WooCommerce on each line” under Orders  Shipping and discounts,
   off by default. Each exported order line, shipping included, gets the Odoo sales
   tax matching the rate WooCommerce charged — a 5.5% book and a 20% gift card each
   get theirs, and an untaxed line stays untaxed — ahead of the Sync defaults order
   tax. A rate with no matching Odoo tax keeps the tax it would have had, and the
   log says so. The Orders tab now explains which tax a line gets with it on and
   off. Needs the matching connector update
 * Added – The Odoo order shows the coupon codes used and the customer’s note from
   checkout. Neither reached Odoo before. Coupon codes on orders sent with Export
   Orders need the matching connector update
 * Added – An exported order’s total is checked against WooCommerce’s. A few cents
   of rounding are covered by one untaxed “Rounding (WooCommerce total)” line on
   a service product, so Odoo’s total matches; a larger difference is logged and
   left as it is, not hidden. Needs the matching connector update
 * Added – A warning under Export Stock while order export is on too. Each exported
   order already creates a delivery in Odoo, so writing WooCommerce’s quantity as
   on-hand takes sold items off twice
 * Fixed – A product sync no longer attaches a category the product does not belong
   to. Products filed under one category came back from every sync with an unrelated
   one as well — women’s vests also under footwear, men’s windbreakers also under
   t-shirts — the same products and the same wrong pairing on every run, and correcting
   them by hand was undone by the next sync. The plugin records which Odoo category
   each WooCommerce category stands for, and nothing kept that one to one; where
   two of them claimed the same Odoo category, the import took whichever had been
   recorded first, which was not the right one. That record is now kept one to one,
   a category is identified by its name and its place in the tree rather than by
   whichever row answered first, and an import can take back a category it assigned
   and no longer sends. A category you added in WooCommerce yourself is left alone
 * Fixed – Refunding part of an order no longer credits all of it in Odoo. A refund
   entered as an amount — the ordinary way to refund part of an order — arrived 
   with no lines, which read as “refund everything”: a 25.00 refund against a 110.00
   invoice raised a 110.00 credit note and marked the invoice reversed, crediting
   the customer 85.00 nobody had given them. An amount smaller than the invoice 
   now credits that amount. A refund for the whole invoice still reverses it line
   by line, which keeps the invoice’s own tax treatment
 * Fixed – Editing a customer’s billing address no longer adds another contact to
   them in Odoo every time. One customer reached six, and the oldest — the one Odoo
   displays and earlier records point at — held the address they had moved away 
   from. The customer save was using the matcher written for order addresses, which
   keeps a separate contact for each distinct address because an order already shipped
   has to keep the address it went to. A customer’s own address book is now one 
   invoice and one delivery contact, kept current
 * Fixed – A refund imported from Odoo is no longer sent straight back to Odoo as
   a second credit note. Nothing asked where a refund had come from, so an imported
   credit note was raised again — crediting the order twice, once by whoever raised
   it in Odoo and once by this
 * Fixed – An invoice whose reply was lost can be found again. When the call that
   creates an invoice timed out on the way back, Odoo had created it but the store
   never learned its number, and every retry was told the order was already invoiced
   and treated that as a failure. Refund export for that order then failed for good
   with “No invoice found in Odoo for this order”. A retry now returns the invoice
   that already exists
 * Fixed – An imported product is not put on sale without a price. A new product
   was created published and out of stock with no price at all, and stayed that 
   way until the separate inventory and price sync ran — on a daily schedule, a 
   day of shop a customer could neither buy from nor judge. It is created as a draft
   now and published as soon as it has a price. This only happens where “Update 
   prices” is on, because the price sync is what publishes it; with that off nothing
   would ever lift the draft and the import behaves as before. A product you have
   already published is never unpublished by an import, and a draft you created 
   yourself is left alone
 * Fixed – A WooCommerce order cancelled in Odoo is no longer reported as a refusal.
   The cancellation itself worked, and the order was then noted with “Odoo did not
   cancel this order” and a warning in the log, because the plugin was looking for
   a word in the reply that the reply does not carry
 * Fixed – An order Odoo has locked now completes in WooCommerce. Odoo’s final state
   was being read as “processing”, so Completed could never arrive from Odoo however
   the store was configured. Odoo 19 and 20 have no such state, so this affects 
   16, 17 and 18
 * Fixed – The settings reported for support are the settings you have. Most of 
   them are kept in a single record, and that record was large enough to be dropped
   whole as “too large” — so 93 of the 130 settings the support view describes read
   as never configured while the plugin was using real values
 * Fixed – A tax of 10% is written in the log as 10%, not 1000%
 * Fixed – “Export Price” and “Export Stock” apply to variations. They were read
   only when building a simple product, so a store that had turned Export Price 
   off kept sending variation prices to Odoo while its simple products withheld 
   theirs — the settings quietly meant “simple products only”. The values are now
   left out of the payload rather than sent as zero, and every place that writes
   a variant treats a missing price as “leave Odoo’s alone”: sending the 0 they 
   previously fell back to would have made a setting that means “do not export prices”
   erase them instead
 * Fixed – Odoo’s internal notes could be published on your storefront. Odoo keeps
   two description fields: an internal one staff write for each other, and a Sales
   Description it shows customers. The import put the internal one into the WooCommerce
   long description — the body of the public product page. The customer-facing text
   is used now; the old behaviour is available as a setting
 * Fixed – “Odoo Order Creation State: Quotation” was ignored and every exported
   order arrived confirmed. The cause was a step that confirmed any draft order “
   to trigger tax calculation”, whatever the setting said. Odoo works out the tax
   on a quotation by itself. Asking for an invoice still confirms the order, because
   Odoo cannot invoice a quotation, and the log says so when it happens
 * Fixed – Customers were exported even when no user role was selected. The scheduled
   run and the Start Export button both refused, as the help text promised; the 
   live update when a customer was saved checked nothing and sent every one
 * Fixed – An order tax deleted in Odoo now fails the export with the name of the
   setting that holds it and the page to fix it on, instead of Odoo’s own “Record
   does not exist or has been deleted. (Record: account.tax(284,), User: 2)”
 * Fixed – A WooCommerce order cancelled after export now cancels its Odoo sale 
   order
 * Fixed – Credit notes raised in Odoo can be imported as WooCommerce refunds on
   demand, not only on a schedule
 * Fixed – Order status import no longer reopens orders you have finished. Completed
   and Cancelled orders were being set back to Processing
 * Fixed – Pressing Update on an unchanged product no longer rewrites Odoo’s price
   and stock with WooCommerce’s older copy, and no longer writes a price of zero
   over it. A simple product is written twice in Odoo — on the template and on its
   variant — and the second write was sending the regular price over the sale price
   the first had just set, or a zero when there was no price to send
 * Fixed – The inventory and price import honours “Exclude from Odoo sync”
 * Fixed – New import settings apply to products you already have, instead of waiting
   for the Odoo product to change
 * Fixed – A product image replaced in Odoo now reaches WooCommerce, and the old
   file no longer stays behind in the Media Library. Images are deliberately left
   out of the check that decides whether a product needs rewriting, because an image
   carries a check of its own — but the two were each waiting for the other, so 
   a product whose only change in Odoo was its picture kept the old one indefinitely
 * Fixed – Buttons that finish with nothing to do say so. “Import Images” wrote 
   its message into a panel it then animated shut, so the button looked broken
 * Fixed – Run counts describe the run. “Products Created: 37” for three new products,“
   imported ” in the log for products that were skipped, and a dashboard reading
   0 exported after two exports
 * Fixed – Each Products sub-tab reports its own last run. Inventory and Media showed
   the product import’s time under their own heading
 * Fixed – The dashboard names an order the way Odoo does — S00042, or your WooCommerce
   number — instead of Odoo’s internal row id, which appears nowhere in Odoo and
   cannot be looked up
 * Fixed – Products with no value in the field your store matches on are counted
   and reported once, with the field named. A catalogue with 34 such products logged
   34 failures on every run
 * Fixed – The connection message reports the version Odoo itself gives, not the
   one picked in the dropdown, so it stops disagreeing with the badge beside it
 * Fixed – A coupon sent to Odoo as a discount line takes the tax down as it does
   in WooCommerce. The discount is split into one line per VAT rate, each with that
   rate; a single untaxed line left Odoo taxing the full price (Odoo 56.47 for a
   WooCommerce 55.80). Orders sent with Export Orders need the matching connector
   update
 * Fixed – With a Discount product named, orders exported as they happen send the
   coupon as its own line, as the Orders tab says, instead of discounting the product
   lines. The “Discount the product lines instead” switch greys as soon as a product
   is typed, not only after saving
 * Fixed – Checkout no longer waits 15–30 seconds for the customer to be written
   in Odoo. With customer export on, a customer saved at checkout is sent by the
   background queue; saves in wp-admin still go at once
 * Fixed – Export Products no longer re-sends a product nobody changed. A product
   whose price or stock had just been sent went out again on the next run. The first
   run after updating sends each product once more
 * Fixed – The Export Products panel stays open when the run ends and says what 
   happened — sent, unchanged, left out, failed — instead of disappearing. A run
   with nothing to send still logs that it finished, including one started straight
   after another
 * Fixed – The order export summary adds up: never a negative “skipped” or a total
   of 0, and an order exported on its own reads “1 exported, 0 skipped or failed(
   of 1 total)”
 * Fixed – Saving Connection or Sync defaults returns to the same tab once setup
   is done, instead of moving on to the next setup step every time
 * Fixed – “Next Scheduled Sync” counts order import and customer import schedules.
   A store scheduling only those read “Not scheduled”
 * Fixed – Prices go to Odoo as 25.99, not 25.989999999999998, on hosts whose PHP
   writes decimals at full precision
 * Fixed – The Cache tab shows when cached Odoo data expires on hosts with Redis
   or Memcached, instead of “Expired” for everything even after Refresh
 * Fixed – “Undefined array key 0” warnings in PHP logs when Odoo returned a linked
   record as a record rather than a pair. The link itself — a sales team’s company,
   for one — was lost too
 * Fixed – A line with no tax is noted in the log instead of being reported as a
   fault
 * Fixed – Cancelling an order in WooCommerce reaches Odoo even when the store’s
   connector token had just been cleared — it expires, and it is cleared when the
   company is changed in Sync defaults. The cancel was refused as “not connected”
   until some other call fetched a new token; it now logs in first. Card and plan
   changes on the Plans screen benefit the same way
 * Changed – Help text that described behaviour the plugin does not have. Shipping,
   fee and coupon amounts are not dropped when you name no product — one is created
   from the method or fee name. Only one price goes to Odoo, which has a single 
   sales price per product, and it is the one a customer pays
 * Changed – The Cache tab no longer offers Territories, Cost Centers or Customer
   Groups. They are vocabulary from another system, nothing read them, and refreshing
   them did nothing
 * Changed – “Enable Product Export” turns the feature on; it no longer sends a 
   product every time one is saved. Exporting on save is its own setting now, “Export
   as products are saved”, off by default. The master switch registering the save
   hooks meant anything that saves products in bulk — a CSV import, a bulk edit,
   another plugin — produced one request to Odoo per product with no pacing, which
   is a common cause of timeouts during an import. The Export Products button is
   unaffected: the master switch still governs it
 * Changed – A product with no SKU is no longer exported to Odoo, and the log names
   the product and says why. SKU is what the two systems match on — it becomes Odoo’s
   Internal Reference, or Barcode under the other mapping, and it is how a later
   export finds the record it already created instead of making a second one. Variations
   were already refused for exactly this, so a store could export a SKU-less product
   while every SKU-less variation under it was skipped. It is one rule now. A variable
   product is the exception it has to be: Odoo keeps the reference on each variant
   and a template with several of them commonly has none, so a parent without a 
   SKU is exported as long as its variations have them — and refused only when nothing
   underneath has one either

#### 2.3.2

 * Added – Order status changes in Odoo can now update orders that already exist
   in WooCommerce, not only orders being imported for the first time. One switch,“
   Update order”, and it is obeyed by both the manual import and the scheduled one
 * Added – Product import schedules are followed as set. A schedule changed to Daily
   kept running hourly, and “Batch size” now means what it says — how many records
   are read from Odoo per call — instead of silently capping the whole run
 * Added – A product import whose previous run is still going is skipped rather 
   than queued behind it, so an hourly schedule and a two-hour catalogue no longer
   pile up
 * Fixed – The Plans tab could show a Pro card with no price and no subscribe button,
   with no way to pay. A failed price lookup was being cached as “this connector
   sells nothing” for five minutes; a failure is now a failure, the last known prices
   keep serving, and when there is genuinely nothing to show the card says so and
   offers to retry
 * Fixed – “Pro plan active” could appear on a store that had never paid, while 
   the page below it offered a free trial. The badge read a leftover local record;
   it now reads the same verdict as every other screen
 * Fixed – A subscription that had been cancelled or moved to another store could
   linger locally forever. The hourly check now acts on “this store has no subscription”
   instead of ignoring it
 * Fixed – A checkout in progress was not recorded locally at all: the column holding
   its id was too short for the id, and the write failed without a word
 * Fixed – Importing images only asks Odoo for the products that have one. A catalogue
   of 20,000 products with few photos queued 20,000 jobs to discover there was nothing
   to fetch
 * Fixed – Progress bars count the run you are watching. Four flows measured themselves
   against every row the site had ever queued, or against a start time the database
   could not read, so a 3,942-order export opened at 3,996 and a scheduled import
   reported from stale counters
 * Fixed – Excluding a product category now excludes it everywhere — the scheduled
   import, the manual import and the counts all honour it
 * Fixed – A variant whose SKU changed in Odoo is picked up again. Products were
   compared by a date that moves on any edit, so a renamed SKU could be skipped
 * Fixed – Credit notes are matched to the WooCommerce order they belong to more
   reliably, including orders exported to Odoo before the note was raised
 * Fixed – The dashboard’s “Products Synced” tile counts the catalogue, not the 
   successes twice: a run of 100 with 4 failures reads 96/100
 * Fixed – A sync started from an external cron manager shows its own progress and
   its own log, instead of 0% under the previous run’s output
 * Fixed – “Subscription already active” no longer blocks a new checkout when nothing
   is actually active — an abandoned checkout or a lapsed trial is not a subscription
 * Fixed – The payment method can be updated with any method the account offers,
   not card only
 * Changed – The Orders and Customers tabs under Field mapping say “Coming soon”
   on the page instead of in a tooltip nobody sees. Their standard fields already
   sync; only custom-field mapping is still to come

#### 2.3.1

 * Fixed – Activating the plugin could fail outright on stores west of UTC. A one-
   off queue repair that runs during activation read a class constant before activation
   had loaded that class, which is a fatal error rather than a warning — and it 
   only fires on a negative GMT offset, so every store in the Americas met it and
   no store east of London did

#### 2.3.0

 * Added – Odoo 20 is supported end to end. Order import reads a line’s description
   from `label`, which is where Odoo 20 moved it — on Odoo 20 every imported line
   previously arrived with an empty description. Invoicing, payment registration
   and credit notes were re-checked against Odoo 20’s own call shapes, and product
   images are read in the form Odoo 20 returns
 * Added – Credit notes raised in Odoo import into WooCommerce as refunds, matched
   to the order they belong to, line by line where the note names lines
 * Added – “Export Invoice” now issues the invoice at every point an order reaches
   Odoo, not only on one path. Stores had 7,958 exported orders and no invoices
 * Added – A notification email address, so welcome, payment and uninstall mail 
   can go somewhere other than the store’s admin address
 * Fixed – A sync the plan does not cover now stops and says so. Product import,
   product export and inventory sync used to retry the service’s refusal every couple
   of hours indefinitely — one store did so for six days with its progress bar frozen
   at 50% and nothing on screen explaining why
 * Fixed – The free monthly allowance is honoured even when the service cannot be
   reached. An unanswered usage check was treated as “no limit”, and one store queued
   its entire 20,003-product catalogue on a free plan
 * Fixed – Pressing Import Products no longer leaves the previous run’s “an active
   plan is required” notice on screen after the plan is upgraded
 * Fixed – Product export no longer stalls silently when the service declines to
   read your Odoo categories. The queued items are failed with the reason instead
   of being retried for ever
 * Fixed – Two PHP warnings on sites with WP_DEBUG on: an undefined variable in 
   the billing history fetch (which also meant the row limit never reached the service)
   and an undefined array key on stores with no customer accounts

#### 2.2.9

 * Fixed – Stop could not end a sync that was still collecting the products it was
   about to work on. Nothing had been queued yet, so Stop found nothing to cancel
   and left the run marked as preparing: the widget went on reporting “Sync in progress”
   and the button could be pressed repeatedly with no effect
 * Fixed – A new sync opened showing the previous run’s log lines beneath a progress
   bar reading 0%, which reads as a run already well under way. The console is now
   cleared the moment a run starts collecting, and says what it is doing
 * Fixed – Starting an image import on a large catalogue read the Odoo link back
   one product at a time — twenty thousand extra database queries inside a single
   admin request, long enough to be cut off before the run had queued anything

For older releases, see the full changelog: https://plugins.svn.wordpress.org/erp7-
solutions-sync-for-odoo-and-woocommerce/trunk/changelog.txt

## Meta

 *  Version **2.3.5**
 *  Last updated **8 hours ago**
 *  Active installations **20+**
 *  WordPress version ** 5.8 or higher **
 *  Tested up to **7.1.3**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [ERP](https://wordpress.org/plugins/tags/erp/)[inventory sync](https://wordpress.org/plugins/tags/inventory-sync/)
   [odoo](https://wordpress.org/plugins/tags/odoo/)[order sync](https://wordpress.org/plugins/tags/order-sync/)
   [woocommerce](https://wordpress.org/plugins/tags/woocommerce/)
 *  [Advanced View](https://wordpress.org/plugins/erp7-solutions-sync-for-odoo-and-woocommerce/advanced/)

## Ratings

 5 out of 5 stars.

 *  [  4 5-star reviews     ](https://wordpress.org/support/plugin/erp7-solutions-sync-for-odoo-and-woocommerce/reviews/?filter=5)
 *  [  0 4-star reviews     ](https://wordpress.org/support/plugin/erp7-solutions-sync-for-odoo-and-woocommerce/reviews/?filter=4)
 *  [  0 3-star reviews     ](https://wordpress.org/support/plugin/erp7-solutions-sync-for-odoo-and-woocommerce/reviews/?filter=3)
 *  [  0 2-star reviews     ](https://wordpress.org/support/plugin/erp7-solutions-sync-for-odoo-and-woocommerce/reviews/?filter=2)
 *  [  0 1-star reviews     ](https://wordpress.org/support/plugin/erp7-solutions-sync-for-odoo-and-woocommerce/reviews/?filter=1)

[Your review](https://wordpress.org/support/plugin/erp7-solutions-sync-for-odoo-and-woocommerce/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/erp7-solutions-sync-for-odoo-and-woocommerce/reviews/)

## Contributors

 *   [ Niraj Gupta ](https://profiles.wordpress.org/smgom/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/erp7-solutions-sync-for-odoo-and-woocommerce/)