- WooCommerce Development
- Sep 5, 2026
- 7 min read
WooCommerce ERP Integration: Odoo vs NetSuite vs SAP Business One
A WooCommerce ERP integration keeps products, stock, prices, customers, orders and invoices in sync between your store and your ERP, with one system clearly owning each type of data. For most stores the ERP owns products, stock and prices, and WooCommerce owns the order until it is handed over. How you build it (a connector plugin, middleware or custom code) depends less on the ERP brand and more on data volume, pricing complexity and how fast stock changes.
This guide covers the decisions we make on every ERP project, then how Odoo, NetSuite and SAP Business One differ in practice.
What data should sync between WooCommerce and an ERP?
Start by deciding the source of truth for each data type. Two systems both allowed to edit the same field is the most common cause of broken integrations.
| Data | Usual source of truth | Direction | Typical frequency |
|---|---|---|---|
| Products (SKU, name, attributes, weight) | ERP | ERP to store | On change, plus nightly check |
| Marketing content (descriptions, images, SEO) | WooCommerce | Stays in store | Not synced |
| Stock levels | ERP or WMS | ERP to store | Near real time for fast sellers |
| List prices and tiers | ERP | ERP to store | On change |
| Customer-specific prices | ERP | ERP to store, or live lookup | On change or per request |
| B2B customers and credit limits | ERP | ERP to store | On change |
| Web customers (B2C) | WooCommerce | Store to ERP | With the first order |
| Orders | WooCommerce | Store to ERP | Immediately after payment |
| Order status and tracking | ERP or WMS | ERP to store | On change |
| Invoices and credit notes | ERP | ERP to store (PDF or link) | On creation |
| Refunds | Depends on process | Agree one direction | On creation |
Two rules save a lot of pain later:
- SKU is the key. Every product and variation needs a unique SKU that matches the ERP item code exactly. Fix duplicates before writing any code.
- Content stays in WooCommerce. ERPs are bad at rich descriptions and images. Sync the facts, write the marketing copy in the store.
Should sync be real-time or scheduled?
Neither alone. Reliable integrations combine events for speed with scheduled jobs for correctness.
Real-time (event-driven). WooCommerce can send webhooks on topics like order.created, order.updated and product.updated, signed with an HMAC-SHA256 hash in the X-WC-Webhook-Signature header. Good for pushing paid orders to the ERP within seconds.
The limits matter. WooCommerce disables a webhook after 5 consecutive failed deliveries, and the documentation describes no replay of missed events. Treat webhooks as a fast trigger, not a guarantee: if the ERP or middleware is down for an hour, orders can be skipped until someone notices.
Scheduled (batch). A job runs every few minutes or hours and pulls changes since the last run. Slower, but it catches everything. Note that WooCommerce REST batch endpoints handle up to 100 objects per request by default, so a 50,000 SKU price update is 500 calls and needs a queue.
What we usually build:
- Orders go to the ERP on payment through a queue, with retries.
- Stock and price changes come from the ERP as deltas every few minutes.
- A nightly reconciliation job compares both sides and fixes drift.
- Every failed record is logged and alerts a person, not just a log file.
Connector plugin, middleware or custom integration?
| Approach | How it works | Good for | Watch out for |
|---|---|---|---|
| Connector plugin or ERP app | A ready product that maps standard fields | Standard catalogs, standard prices, low to medium volume | Fixed mapping, limited B2B logic, dependency on one vendor's updates |
| Middleware (iPaaS) | A hosted platform with flows between systems | Several systems (ERP, WMS, marketplaces), IT teams that want visibility | Subscription cost, still needs someone to design and maintain flows |
| Custom integration | Code written for your data and rules | Customer-specific pricing, large catalogs, unusual processes | Higher upfront cost, needs documentation and an owner |
In our projects we often see the same path: a store starts with a connector, grows into B2B pricing or a second warehouse, and the connector becomes the bottleneck. If you already know your pricing is complex, plan for custom or middleware from the start.
Odoo vs NetSuite vs SAP Business One: how integration differs
| Criterion | Odoo | NetSuite | SAP Business One |
|---|---|---|---|
| API | JSON-2 API in Odoo 19; XML-RPC and JSON-RPC deprecated | NetSuite web services | Service Layer (REST, OData, JSON) |
| Ready connectors | Many third-party modules on the Odoo Apps store | Oracle's NetSuite Connector, Celigo, marketplace plugins | Mostly SAP partner add-ons and middleware |
| Plan or hosting catch | Needs the Custom plan for external API or custom modules | Licence and connector subscription | Service Layer setup on your SAP server |
| Typical fit | SMEs wanting one system for sales, stock and accounting | Mid-market and multi-entity companies | Established SMEs with SAP partners |
Odoo
Odoo has its own eCommerce app, so WooCommerce plus Odoo usually means the store is too important or too custom to replace. Two things to check before you start:
- Plan. Odoo's pricing page lists "External API" as a feature of the Custom plan, and the Standard plan runs on Odoo Online without custom modules. A WooCommerce connector module from the Odoo Apps store or an external sync both need the Custom plan in practice.
- API version. The XML-RPC and JSON-RPC endpoints many older connectors use are scheduled for removal in Odoo 22 (fall 2028). New integrations should use the JSON-2 API. The Odoo 19 documentation also says API keys cannot be created with a lifetime longer than three months, so plan key rotation.
NetSuite
NetSuite has the most ready-made options. Oracle's own NetSuite Connector lists WooCommerce as a supported storefront. The Celigo WooCommerce to NetSuite template covers customers, products, orders, order status and refunds. On the WooCommerce side, the NetSuite Integration for WooCommerce extension costs $399 per year and syncs orders, inventory, price levels, customers and fulfillments.
Check the details. For example, the Celigo template description does not include stock level sync, so confirm which flows you get before you buy.
SAP Business One
SAP B1 integrations normally run through the Service Layer, a REST API on HTTP and OData with JSON, available on SUSE Linux and on Windows since version 10.0 PL01. Pricing is where SAP B1 projects get complex: price lists, special prices for business partners, period and volume discounts all combine. Decide early whether WooCommerce stores the final prices or asks SAP for them.
How do you sync customer-specific prices?
This is the hardest part of B2B ERP work. There are two patterns:
- Pre-synced prices. The ERP pushes each customer's price list to WooCommerce, stored per customer or group. Fast storefront, but large matrices (10,000 SKUs times 500 customers) need careful storage and delta updates.
- Live price lookup. WooCommerce asks the ERP for the price when a logged-in buyer views the catalog or cart. Always correct, but slower and dependent on ERP uptime, so it needs caching and a fallback price.
We usually pre-sync and cache, and use live lookup only at checkout for final confirmation when the ERP rules are too complex to replicate.
How long does a WooCommerce ERP integration take?
It depends on the number of flows and on how clean the ERP data is. As a rough guide:
- One flow with a ready connector (for example stock from ERP to store): a few days of setup and a week or two of testing.
- Standard two-way sync (products, stock, prices, orders, status): usually 4-8 weeks including mapping, staging tests and a pilot period.
- B2B with customer-specific pricing, several warehouses or middleware: often 2-3 months.
The biggest delays are rarely code. They come from duplicate SKUs, missing tax codes, unclear refund processes and waiting for ERP consultants to open API access. Start those conversations in week one.
Integration checklist before launch
- Every SKU in WooCommerce matches one ERP item, with no duplicates.
- Taxes and rounding match between systems on the same test orders.
- Guest orders map to a defined ERP customer (a web customer account or a new record).
- Order edits, cancellations, partial shipments and refunds each have an agreed flow.
- Your connector is compatible with High-Performance Order Storage, which is on by default for new stores since WooCommerce 8.2.
- Failed syncs raise an alert, and someone owns fixing them.
- A nightly reconciliation compares stock and order counts.
- The integration is tested on staging with a copy of real data, not ten sample products.
When to get help
If a connector covers your data and processes out of the box, start there and test it on staging. If you have customer-specific pricing, several warehouses or an ERP without a solid connector, get the data flows designed first. Our WooCommerce ERP integration team starts with a field mapping and a fixed price, and for B2B stores we often pair it with B2B and wholesale work.