Why WooCommerce + Odoo?
WooCommerce powers 25%+ of all online stores. Many businesses start with WooCommerce for the storefront but need a real ERP for inventory, accounting, manufacturing, and multi-channel operations. Odoo fills that gap — WooCommerce sells, Odoo manages.
What Syncs
| Data | Direction | Details |
|---|---|---|
| Products | Odoo → WooCommerce | Name, price, images, categories, stock |
| Orders | WooCommerce → Odoo | Sale orders with line items, taxes, shipping |
| Customers | WooCommerce → Odoo | Customer records as res.partner |
| Inventory | Odoo → WooCommerce | Stock levels after Odoo operations |
| Order Status | Odoo → WooCommerce | Processing → shipped → completed |
| Refunds | WooCommerce → Odoo | Credit notes in Odoo |
Integration Options
Option 1: OCA WooCommerce Connector
- Free, open-source module maintained by OCA
- REST API integration with WooCommerce
- Webhook-based order sync
- Requires Odoo technical setup
Option 2: Paid Connectors
- Webkul, Emipro, and others on Odoo Apps Store
- $150-500, GUI-based configuration
- Support and updates included
Option 3: Custom via REST API
from woocommerce import API
import xmlrpc.client
# WooCommerce connection
wcapi = API(
url="https://your-store.com",
consumer_key="ck_xxx",
consumer_secret="cs_xxx",
version="wc/v3"
)
# Fetch new orders
orders = wcapi.get("orders", params={"status": "processing"}).json()
for order in orders:
# Create sale order in Odoo via XML-RPC
partner_id = find_or_create_customer(order['billing'])
lines = [(0, 0, {
'product_id': map_by_sku(item['sku']),
'product_uom_qty': item['quantity'],
'price_unit': float(item['price']),
}) for item in order['line_items']]
odoo.execute_kw(db, uid, pwd, 'sale.order', 'create', [{
'partner_id': partner_id,
'order_line': lines,
'client_order_ref': f"WC-{order['id']}",
}])WooCommerce REST API Setup
- WordPress Admin → WooCommerce → Settings → Advanced → REST API
- Add key → Description: "Odoo Integration"
- Permissions: Read/Write
- Generate → copy Consumer Key and Consumer Secret
- Set webhook: WooCommerce → Settings → Advanced → Webhooks
- Add webhook: Topic = Order created, Delivery URL = https://your-odoo.com/woocommerce/webhook
Product Mapping
# Map products by SKU:
# WooCommerce product SKU = Odoo product default_code
# This is the most reliable mapping method
# Variable products (sizes, colors):
# WooCommerce variations map to Odoo product variants
# Match by variation SKU → Odoo variant default_codeCommon Issues
| Issue | Fix |
|---|---|
| Webhook delivery fails | Ensure Odoo URL is HTTPS and publicly accessible. Check WP webhook logs. |
| Products don't match | Ensure SKUs are identical in both systems. Use default_code in Odoo. |
| Tax calculation mismatch | Disable WooCommerce tax calculation or map WC tax classes to Odoo fiscal positions. |
| Images not syncing | Check file size limits. WooCommerce images need public URLs for Odoo to fetch. |
| Duplicate orders | Use client_order_ref with WC order ID to detect duplicates before creating. |
Architecture
WordPress + WooCommerce
↓ REST API + Webhooks
Odoo Connector Module
↓
Odoo Sale Orders → Inventory → Accounting → Fulfillment
↓
Order status + tracking → WooCommerceDeployMonkey + WooCommerce
Deploy Odoo on DeployMonkey with WooCommerce integration. The AI agent helps configure product mapping, troubleshoot sync issues, and monitor order flow. Keep WooCommerce for the storefront, use Odoo for everything else.