원클릭으로
odoo-woocommerce-bridge
Sync Odoo with WooCommerce: products, inventory, orders, and customers via WooCommerce REST API and Odoo external API.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Sync Odoo with WooCommerce: products, inventory, orders, and customers via WooCommerce REST API and Odoo external API.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Version 2.35.0 | PRD to Production | Zero Human Intervention > Research-enhanced: OpenAI SDK, DeepMind, Anthropic, AWS Bedrock, Agent SDK, HN Production (2025)
Enforces a strict input boundary protocol (detect, classify, filter, verify) to ensure untrusted data never reaches business logic raw.
Security audit, hardening, threat modeling (STRIDE/PASTA), Red/Blue Team, OWASP checks, code review, incident response, and infrastructure security for any project.
A user may ask you to create, edit, or analyze the contents of a .docx file. A .docx file is essentially a ZIP archive containing XML files and other resources that you can read or edit. You have different tools and workflows available for different tasks.
Train or fine-tune TRL language models on Hugging Face Jobs, including SFT, DPO, GRPO, and GGUF export.
Scaffold, build, sign, and package SwiftPM macOS apps without Xcode projects.
| name | odoo-woocommerce-bridge |
| description | Sync Odoo with WooCommerce: products, inventory, orders, and customers via WooCommerce REST API and Odoo external API. |
| risk | unknown |
| source | community |
This skill guides you through building a reliable sync bridge between Odoo (the back-office ERP) and WooCommerce (the WordPress online store). It covers product catalog sync, real-time inventory updates, order import, and customer record management.
@odoo-woocommerce-bridge and describe your sync requirements.| WooCommerce | Odoo |
|---|---|
products | product.template + product.product |
orders | sale.order + sale.order.line |
customers | res.partner |
stock_quantity | stock.quant |
sku | product.product.default_code |
order status: processing | Sale Order: sale (confirmed) |
order status: completed | Delivery: done |
from woocommerce import API
import xmlrpc.client
import os
# WooCommerce client
wcapi = API(
url=os.getenv("WC_URL", "https://mystore.com"),
consumer_key=os.getenv("WC_KEY"),
consumer_secret=os.getenv("WC_SECRET"),
version="wc/v3"
)
# Odoo client
odoo_url = os.getenv("ODOO_URL", "https://myodoo.example.com")
db = os.getenv("ODOO_DB", "my_db")
uid = int(os.getenv("ODOO_UID", "2"))
pwd = os.getenv("ODOO_PASSWORD")
models = xmlrpc.client.ServerProxy(f"{odoo_url}/xmlrpc/2/object")
def sync_orders():
# Get unprocessed WooCommerce orders
orders = wcapi.get("orders", params={"status": "processing", "per_page": 50}).json()
for wc_order in orders:
# Find or create Odoo partner
email = wc_order['billing']['email']
partner = models.execute_kw(db, uid, pwd, 'res.partner', 'search',
[[['email', '=', email]]])
if not partner:
partner_id = models.execute_kw(db, uid, pwd, 'res.partner', 'create', [{
'name': f"{wc_order['billing']['first_name']} {wc_order['billing']['last_name']}",
'email': email,
'phone': wc_order['billing']['phone'],
'street': wc_order['billing']['address_1'],
'city': wc_order['billing']['city'],
}])
else:
partner_id = partner[0]
# Create Sale Order in Odoo
order_lines = []
for item in wc_order['line_items']:
product = models.execute_kw(db, uid, pwd, 'product.product', 'search',
[[['default_code', '=', item['sku']]]])
if product:
order_lines.append((0, 0, {
'product_id': product[0],
'product_uom_qty': item['quantity'],
'price_unit': float(item['price']),
}))
models.execute_kw(db, uid, pwd, 'sale.order', 'create', [{
'partner_id': partner_id,
'client_order_ref': f"WC-{wc_order['number']}",
'order_line': order_lines,
}])
# Mark WooCommerce order as on-hold (processed by Odoo)
wcapi.put(f"orders/{wc_order['id']}", {"status": "on-hold"})
def sync_inventory_to_woocommerce():
# Get all products with a SKU from Odoo
products = models.execute_kw(db, uid, pwd, 'product.product', 'search_read',
[[['default_code', '!=', False], ['type', '=', 'product']]],
{'fields': ['default_code', 'qty_available']}
)
for product in products:
sku = product['default_code']
qty = int(product['qty_available'])
# Update WooCommerce by SKU
wc_products = wcapi.get("products", params={"sku": sku}).json()
if wc_products:
wcapi.put(f"products/{wc_products[0]['id']}", {
"stock_quantity": qty,
"manage_stock": True,
})
status = processing or completed.