Singularity Edge
IntegrationsBy Juan David Suárez·September 18, 2026·15 min read·Updated September 20, 2026

Connecting WooCommerce to Holded or Odoo: what each one actually syncs

If you sell through WooCommerce and run your business on Holded or Odoo, connecting them is one of the automations that saves the most hours. Every order generates its invoice, stock updates itself, and you stop copying data from one screen to another.

The trouble is that the two integrations have little in common. They do not sync the same things, they do not run in the same direction, and one of them carries an infrastructure requirement that rules out a lot of people, with nobody warning you until you have already paid for the licence.

Here is exactly what each one does, what its limits are, which fits your case and how to set it up without leaving your store selling what you do not have.

1. The decision that comes before choosing a tool

Before looking at connectors there is one question to answer. When you change a product's price, where do you change it? And stock, who holds the correct figure, the store or the ERP?

This is what defining a source of truth means. Every piece of data needs a single system that owns it, while the other simply receives. When both can write the same field, sooner or later one overwrites the other and you end up with stale prices or negative stock.

WooCommerce owns it

The Holded model
  • You create and edit products in the store
  • The ERP receives the catalogue and issues invoices
  • Convenient if your team lives in WordPress
  • Falls short with several sales channels

The ERP owns it

The Odoo model
  • You create products and price lists in the ERP
  • The store is a shop window that receives
  • Necessary if you sell across several channels
  • Demands more discipline and more setup

2. WooCommerce with Holded, how it really works

Holded has its own WooCommerce integration. It installs as a WordPress plugin and connects with an API key. It needs nothing special from your hosting, and that is its great advantage.

What Holded's integration syncs and in which direction
DataDirectionConditions
ProductsWooCommerce to Holded onlyEvery product needs a SKU. Simple and variable products are supported.
StockBoth waysRequires the inventory add-on, a matching SKU, and simple or variable products.
OrdersWooCommerce to HoldedThey become an invoice, a sales receipt or a sales order, as you configure.
CustomersWooCommerce to HoldedA contact record is created from the order details.
Swipe to see the full table →

According to Holded's help documentation, checked in September 2026.

The three details that change the project

  1. 01Two-way stock is not included. You need Holded's inventory add-on, which is paid separately. This is the detail that wrecks the most budgets, because many people assume stock syncs on the base plan.
  2. 02Only «Completed» orders get invoiced. If you configure orders to arrive as invoices or receipts, Holded imports them only once you mark the order as completed in WooCommerce. An order sitting in «Processing» generates nothing.
  3. 03The catalogue only flows one way. Whatever you change in Holded does not reach the store. Edit a product there and the site keeps showing the old version.

For a store selling finished products from a single warehouse, with a team working in WordPress that mainly wants to stop writing invoices by hand, this integration covers the case with very little setup.

3. WooCommerce with Odoo, and the requirement that rules many people out

This is not a minor detail, it is an infrastructure and cost decision. To connect Odoo with WooCommerce you have to be on Odoo.sh, Odoo's platform for projects with development, or on your own server. Both mean a higher plan and someone to administer the environment.

So which connector do you use

You use third-party modules published on Odoo's Apps Store. The two most widely used are Emipro's connector, covering Odoo versions 8 through 19, and VentorTech's, covering 16 through 19 in both Community and Enterprise. Both are paid and come on top of your licence.

What you get in return

  • Forecast stock, not just what is on the shelf. You can publish the quantity you will have, counting what is already reserved and what is arriving on a purchase order.
  • Bundles and kits calculated for you. Odoo looks at the scarcest component and publishes how many kits you can genuinely sell.
  • Several warehouses. Consolidate stock or assign a warehouse to each store.
  • The order runs the whole chain. It arrives as a sales order, reserves stock, generates the delivery note, issues the invoice and records the payment, with nothing done by hand.
  • Tracking flows back to the store. When you prepare the shipment in Odoo, the tracking number and the status change reach WooCommerce and the customer sees them.
  • Price lists by customer type. Different prices for wholesale and retail, managed from the ERP.

It is far more powerful, and it is also far more of a project. If your operation needs none of the above, you are paying for complexity you will never use.

4. Side by side

The differences that decide it
HoldedOdoo
ConnectorHolded's own integrationThird-party module, paid
Where the ERP can liveIts cloud, no requirementsOdoo.sh or your own server. Not Odoo Online
Who owns the catalogueWooCommerceOdoo
StockBoth ways, with the inventory add-onPhysical, forecast, per warehouse and with kits
Bundles, batches and serial numbersNot supportedSupported
Order lifecycleBecomes a sales documentOrder, reservation, delivery note, invoice and payment
Tracking sent back to the storeNoYes
Time to go liveDaysWeeks
CostSubscription plus inventory add-onLicence, module, hosting and consulting
Swipe to see the full table →

5. Which one suits you

Do you sell bundles, manufacture, work with batches or run more than one warehouse?

Yes, at least oneOdoo
  • Budget for Odoo.sh or your own server
  • Paid third-party module
  • A project of weeks
No, I sell finished productsHolded
  • Its own integration, no requirements
  • Add the inventory add-on
  • Live in days

Choose Holded if…

  • You sell finished products you buy ready-made, with no assembly.
  • Your team creates and edits products in WordPress and wants to keep doing that.
  • You work with one warehouse, or two without complicated rules.
  • What hurts is invoicing and reconciling the books, not logistics.
  • You do not want to administer servers or take on a long project.

Choose Odoo if…

  • You sell bundles or kits, or manufacture part of what you sell.
  • You have several warehouses, or traceability by batch or serial number.
  • You sell across several channels at once and need genuinely unified stock.
  • You have different prices for wholesale and retail.
  • You want to know your real margin per product and per channel.

6. The tax side, which is where it usually hurts

An integration that syncs products beautifully but taxes badly will create more work than it saves. These are the points to settle before connecting anything.

  1. 01Set up your taxes in the ERP first. If an order arrives with a VAT rate the ERP does not have configured, it will assign whatever it can and you will be fixing invoices by hand.
  2. 02Add a tax ID field to checkout. WooCommerce does not include one, so you need a plugin. Then check with a test order that the number genuinely reaches the customer record in the ERP, because that is where most failures happen.
  3. 03Decide when invoicing happens. With Holded, the invoice is issued when you mark the order complete, which usually means on despatch rather than on payment. If days pass between the two, or worse, a month boundary, talk it through with your accountant before you build it.
  4. 04Review sales outside your country. Intra-EU sales and exports need their own configuration, and that is defined in the ERP, not in the store.

7. The mistakes that break an integration

Almost every problem that reaches us comes from the same five things, and all of them are avoidable before connecting.

  1. 01Empty or duplicated SKUs. This is cause number one. A product without a SKU does not sync and says nothing. A duplicate makes two products share stock and you end up selling what you do not have.
  2. 02Syncing stock both ways without thinking. If the store and the ERP can both write the same figure, a simultaneous sale in both places leaves the number wrong. Decide who owns it and stick to it.
  3. 03Not planning for returns. A sale syncs by itself, but a return needs the original invoice to exist in the ERP. Skip that and your credit notes end up orphaned.
  4. 04Creating duplicate customers. Without a shared key, the same customer arrives three times with three different emails. Decide whether you match on email or tax ID and be consistent.
  5. 05Logging nothing. If the integration leaves no trace of each sync, the day an order goes missing there will be no way to find out what happened. A reviewable error log is not optional.

8. How to set it up without breaking the store

You never connect straight onto the live store. This is the order we follow.

Phases of an integration
PhaseWhat happensWhat has to be true to move on
1. Clean-upAudit the catalogue, assign SKUs to everything and remove duplicates. Set up taxes and warehouses in the ERP.No product without a SKU and no SKU repeated.
2. StagingClone the store and connect it to a test ERP environment.The connection works without touching real data.
3. Initial loadSync the catalogue and customers in one pass and compare the figures.Prices and stock match in both systems.
4. Test ordersSimulate a purchase, a return, a cancellation and a shipment.All four cases produce what they should, errors included.
5. ProductionSwitch on automatic sync and watch it for the first few days.The logs show no unattended errors.
Swipe to see the full table →

Phase 1 takes the longest and is the one most often skipped. It is also the one that decides whether the integration works.

Frequently asked questions

Questions about connecting WooCommerce to Holded or Odoo: what each one actually syncs

Not on Odoo Online, because it accepts neither third-party nor Apps Store modules, and the WooCommerce connector is exactly that. You need Odoo.sh or your own server. Worth knowing before you buy the plan.

Both ways, yes, but it requires Holded's inventory add-on, which is paid separately, plus matching SKUs and simple or variable products.

The usual cause is the order status. If you configure orders to arrive as invoices or receipts, Holded only imports them once the order is marked «Completed» in WooCommerce. An order in «Processing» produces nothing.

They simply do not sync, and usually without warning. That is why the first phase of any integration is auditing the catalogue and making sure everything has a unique SKU.

Yes, and it is a common path once the operation gets more complex. The migration is far easier if you keep the catalogue clean and the SKUs consistent from the start.

It depends on what has to be synced and whether the standard integration is enough or development is needed. We assess it once we have seen the detail, and we will also tell you if your case can be solved without custom development.

Let's talk about your
next project.

No sales pitch. A direct conversation about how automation and web development can transform your operation in the age of AI.

Support across Spain, LATAM and the USA

Spain · Colombia · Latam · USA
A direct reply and assessment in under 24 hours.

We respect your privacy. Your details will only be used to handle your enquiry.