外掛說明
Stop copying orders into Odoo by hand. Every order your customers place is typed, checked, and re-typed — or it just flows into Odoo on its own, seconds after checkout, with the customer, the products, the invoice, and the payment already in place. This plugin makes it the second one.
Odoo Integration for WooCommerce connects your store to your Odoo ERP through the OdooConnector cloud service. Set it up once, and your WooCommerce checkout becomes a direct feed into Odoo’s sales, invoicing, and accounting — no CSV exports, no double data entry, no missed orders at month-end.
Compatible with Odoo 16, 17, 18, and 19+ · classic and block (Gutenberg) checkout · WooCommerce HPOS · works with your existing Odoo products via SKU matching.
⚡ Sync WooCommerce orders to Odoo automatically
- Export on checkout — the order is in Odoo before your customer sees the thank-you page, and you choose exactly which statuses qualify (Processing for paid orders, On hold for bank transfer / COD…)
- Export on status change and one-click manual export, for full control
- Your numbering, your rules — keep WooCommerce order numbers in Odoo (with optional prefix/suffix), create orders as quotations or confirmed sales orders, assign a default warehouse and sales team
- Discounts, coupons, and shipping land on Odoo order lines the way your accountant expects
- Flexible customer handling: real customer records, guest orders, or map everything to a single Odoo customer
💳 Odoo invoices and payments, created automatically
- Odoo invoices created automatically at the order statuses you choose
- Payments registered and invoices marked paid — with per-payment-gateway journal mapping, so Stripe money and COD money land in the right books
- Refund in WooCommerce credit note in Odoo. Done.
🔄 Import Odoo sales orders into WooCommerce
- Import Odoo sales orders into WooCommerce, scheduled or on demand
- Choose whether an imported order creates a WooCommerce customer account or stays a guest order — no surprise accounts unless you ask for them
🛡 Built for stores that can’t afford sync surprises
- Background queue with automatic retries — a slow Odoo server never blocks your checkout
- Secure, authenticated webhook callbacks for every sync result
- Human-readable logs: plain-language messages (“Odoo returned a temporary error — retrying automatically”), with the technical details one click away when you want them
- Dashboard with sync statistics and order history at a glance
- Live-chat support built into the settings pages — real help, also on the free plan
Every feature listed above is fully functional in this plugin — there is no license unlock, trialware gate, or disabled code path.
🚀 Ready in minutes
- Install and activate the plugin
- Enter your Odoo URL and credentials, click Test Connection
- Place a test order — watch it appear in Odoo
🧩 Product, customer and inventory sync built in
Product and customer sync are part of this plugin (no add-on needed):
- Product sync in both directions — variations, attributes, categories, and images
- Customer export to Odoo, including real-time export the moment an account changes
- Inventory and price sync, scheduled or on demand, per warehouse (paid service plans)
The free OdooConnector service plan includes 10 orders, 10 products, and 10 customers synced per month; a paid plan removes the limits — and you can try it with a 14-day free trial (cancel anytime, first charge only after the trial). The Features tab shows a plain, honest comparison. All features are fully functional in the plugin itself — allowances are enforced by the service, never by disabled code.
Requirements
- WooCommerce 7.0 or higher
- An Odoo instance (URL, database, username, password)
- Network access to the OdooConnector service
Features
Everything below is built into this plugin and switchable from its settings screens. Each sync area has its own master switch, and import and export are controlled separately — so a store can pull its catalogue from Odoo without ever pushing anything back, or the reverse.
Orders — WooCommerce to Odoo
- Export automatically on checkout, on a schedule you choose, or one order at a time by hand
- Choose exactly which order statuses qualify for export — Processing for card payments, On hold for bank transfer or COD, or any combination your workflow needs
- Create the Odoo record as a Quotation or as a confirmed Sale Order, so orders can land in a queue for review or go straight through
- Keep WooCommerce order numbers in Odoo, with an optional prefix and suffix, so the same reference works in both systems and in your accountant’s inbox
- Assign a default warehouse and sales team, picked from the lists that exist in your Odoo rather than typed by hand
- Tax-inclusive pricing handled correctly, with a default tax and a separate shipping tax
- Optional fiscal positions, applied per order for cross-border and tax-exempt trading
- Discounts and shipping mapped to Odoo order lines, each pointing at the Odoo product you nominate, so your reporting stays clean
- Payment method recorded as its own order line when you want it itemised
- Customer handling your way: create a real Odoo customer per buyer, map every order to a single Odoo customer, or route orders to different Odoo customers by tag
- Automatically validate the order and confirm the delivery in Odoo, when you want the whole flow hands-off
Invoices, payments and refunds
- Create the Odoo invoice automatically, at whichever order statuses you nominate
- Separate control over which statuses mark an invoice in payment and which mark it paid — because “customer paid” and “money cleared” are rarely the same moment
- Force the invoice date to the order date when your accounting period needs them aligned
- Choose the Odoo journal invoices are posted to
- Per-gateway payment journal mapping — Stripe money, PayPal money and cash-on-delivery each land in their own Odoo journal, with no month-end reclassification
- A refund in WooCommerce becomes a credit note in Odoo, optionally posted and reconciled automatically
Orders — Odoo to WooCommerce
- Import Odoo sale orders into WooCommerce, on a schedule or on demand, in batches you size yourself
- Decide what happens when an imported order’s email has no WooCommerce account: create a customer account, or keep it as a guest order
- Products missing from WooCommerce are created from the order line rather than the import failing
- Optional status sync back from Odoo — fulfilment, cancellation and payment state, each switchable on its own, so you can take delivery status from Odoo while leaving payment state to WooCommerce
Products — both directions
- Import from Odoo with variations, attributes, categories and images
- Import variant attributes as local or global attributes: local keeps them on the product, global creates shared WooCommerce taxonomies you can filter and facet by
- Choose exactly what an imported product brings with it — description, images, barcode and cost, plus Odoo’s eCommerce description and media gallery when the Website Sale module is installed
- Exclude whole Odoo product categories from import, so internal or service products never reach your storefront
- On re-import, update everything, update price and stock only, or never touch an existing product — three separate switches, not one
- Export to Odoo automatically the moment a product is saved, or in bulk on demand
- Choose what an export sends: price, stock, categories and featured image, with the image refreshed on every export or set only once
- Match products by Internal Reference (default_code) or by Barcode, so an existing Odoo catalogue links up to your store rather than duplicating
- Nested product categories are created in Odoo with their hierarchy intact, and a category filed in the wrong place is moved rather than duplicated
Inventory and pricing
- Scheduled or on-demand stock and price sync, with independent schedules for each
- Sync Quantity Available or Quantity On Hand, whichever your fulfilment process actually trusts
- Push WooCommerce stock up to Odoo, pull Odoo stock down, or neither — the direction is yours
- Limit stock sync to chosen warehouses and chosen product categories
- Skip zero-quantity records, so an unmanaged product is not forced out of stock by an empty Odoo row
- Let Odoo stock levels drive the WooCommerce stock status, and set the backorder policy that goes with it
- Take over stock management on products that were not previously managed
Customers
- Export customers to Odoo in bulk, or the moment an account is created or changed
- Choose which WordPress roles are exported, so administrators and subscribers stay out of your Odoo contacts
- Address, contact details and billing data carried across
Running it day to day
- Every sync runs through a background queue with automatic retries, so a slow Odoo server never blocks your checkout
- Live progress with a Stop button on every sync screen, including runs started by a schedule
- Sync results reported honestly: how many synced, how many failed, and the failures never quietly disappear from the total
- Human-readable logs — what synced, what did not, and why — with the technical detail one click away, plus a debug mode and log level when you need more
- Dashboard showing synced totals, recent activity, and anything that needs attention
- Odoo ID columns on the WooCommerce orders and products lists, each linking straight to the matching record in Odoo
- Odoo sale order and invoice linked directly from the order edit screen
- Multi-company Odoo supported: pick the company a store syncs with
- Works with WooCommerce HPOS, classic and block (Gutenberg) checkout, and Odoo 16 through 19+
螢幕擷圖







安裝方式
- Upload the plugin folder to
/wp-content/plugins/erp7-solutions-sync-for-odoo-and-woocommerce/(or install via WordPress admin) - Activate the plugin through the ‘Plugins’ screen in WordPress
- Navigate to WooCommerce Odoo Connector and enter your Odoo URL, database, username, and password, then test the connection
- Configure sync preferences and save
- Optionally subscribe to the OdooConnector service from the Features tab for unlimited middleware order sync
常見問題集
-
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 and later 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).
使用者評論
參與者及開發者
變更記錄
2.2.6
- Fixed – A product the importer had already matched could be imported again as a duplicate. When “update existing products” is off, or Odoo reported no change since the last run, the match was made and then discarded without recording the Odoo link — so a product whose Odoo record carries no SKU had nothing left to match on, and the next run created a second copy
- Fixed – Products created while importing an order did not record their Odoo product link, leaving them invisible to product sync and liable to be duplicated by it
- Fixed – Queued product imports stopped importing once any product existed. The check for “is this already imported?” asked WooCommerce a question it quietly ignores, so the first product in the catalogue matched every queued import and each one was skipped against a product it had nothing to do with
- Fixed – Importing a product with variations could fail against Odoo 19 with “Invalid falsy real id” when the list of attribute values had gaps in it
- Fixed – A successful product import left no trace on the Sync Logs screen — only failures were recorded, so a healthy run read as a wall of problems. Each imported product is now listed by name
- Fixed – A finished sync reported every item as successful. “22 of 54 synced, 32 failed” was announced as “22 of 22 synced” because the summary recounted a queue whose failed rows had already been cleaned up; the run now records its own result as it finishes
- Fixed – One completed run was announced twice, once with the real figures and once with a recount of the same queue
- Fixed – The Product sync panel stayed at 100% with “Stop Sync” showing and the start buttons locked after a run had finished, until another admin screen was opened
- Added – An Odoo column on the WooCommerce products list, linking each product to its record in Odoo, matching the column already on the orders list
- Changed – A product already linked to an Odoo record is never silently re-pointed at a different one; the conflict is written to the log instead
2.2.5
- Added – Odoo’s eCommerce description and product media can now be imported into WooCommerce; both are opt-in on the Product Sync tab and require the eCommerce (Website Sale) module in Odoo. The media becomes the WooCommerce product gallery, in Odoo’s own order, and the featured image is unchanged
- Added – Sales team is chosen from the teams that exist in Odoo instead of typing the name by hand
- Added – A progress row for the media import, so a large catalogue shows what is still to come
- Fixed – Top-level WooCommerce categories were filed under whichever Odoo category happened to be read first (often “Deliveries”) rather than being created as top-level categories in Odoo
- Fixed – Nested WooCommerce categories exported flat, because each category was created before its parent existed
- Fixed – A category left in the wrong place stayed there on re-export, and a duplicate was created alongside it; the existing category is now moved to the correct parent
- Fixed – Images taken from Odoo were always saved with a .jpg name even when the file was WebP or PNG, which broke image optimisers, CDNs and WordPress’s own file checks
- Changed – Product categories and the featured image are exported on their own queue after the product itself, so image uploads no longer hold up a catalogue export
- Improved – The media import checks a whole batch of products in one request instead of two requests per product, so catalogues where few products have media finish in seconds rather than minutes
2.2.4
- Fixed – Variations of a variable product all took the parent’s price in Odoo, so only the cheapest variation was priced correctly; each variation now carries its own price
- Fixed – Product import returned no usable data, so inventory runs reported every product as failed and updated nothing
- Fixed – Importing overwrote variation prices in WooCommerce even with Price Sync switched off; the setting is now respected for variations as it always was for simple products
- Fixed – Products mapped to Odoo by variant reference could not be imported at all
- Fixed – A temporary network or Odoo error during import was reported as “not a valid product ID”, so the product was dropped instead of retried
- Fixed – Progress showed 0% for an entire run, or opened at 100% with the previous run’s result, when a new sync was started
- Added – Product export now writes a per-product line to the Logs tab, as product import already did, including the Odoo record each product landed in
- Changed – Product export and inventory sync ask Odoo for variant data in batches, roughly halving the number of requests a catalogue sync makes
2.2.3
- Fixed – Variations exported to Odoo stored the wrong Odoo variant reference, which could send stock and price updates to the wrong Odoo record; affected variations are cleared on update and re-linked on the next sync
2.2.2
- Added – Live progress, a per-item log and a Stop button on the Products, Orders and Customers tabs — including syncs started on a schedule
- Added – Readable sync log (“Order import SUCCESS: Odoo sale order 466 to WooCommerce #16241”) without turning on debug logging
- Added – Refresh button on the Logs tab
- Added – Setup checklist on the dashboard collapses once every sync area is switched on
- Fixed – Fatal error (“Call to private method”) that could take the site down while sync work was being queued
- Fixed – Progress and the Stop button disappearing part-way through a sync that was still running
- Fixed – Progress totals counted earlier runs as well as the current one
- Fixed – Odoo product names could be rendered as HTML in the sync log (security fix)
- Changed – “Select Fiscal Position” is hidden unless fiscal positions are enabled
- Changed – Settings screens, including the order status mapping table, now work on phones and small windows
- Changed – Repeated internal warnings are summarised instead of filling the log
2.2.1
- Fixed – Odoo 19 and newer no longer ask for a username; those versions sign in with the API key alone, and the field is marked “Not required”
- Fixed – Saving connection details now tests them, so a wrong database or password is reported straight away instead of the plugin still showing “Connected”
- Fixed – Connection errors now appear in the Odoo Connection form itself, next to the field that needs correcting
- Added – A wrong database name is now matched against your Odoo address, and the suggested name can be applied in one click
- Added – Dashboard setup checklist showing which of product, order and customer sync are switched on, with a link to each; it collapses once all three are on
- Added – Support email and call-booking links in the API settings card
- Changed – Saving your connection now takes you to the configuration page, and saving configuration takes you to the dashboard
- Changed – Product, order and customer setup tabs move to the end once your store is connected
- Fixed – Queued work now retries on the correct schedule on stores not set to UTC; some stores retried immediately and others waited hours
- Fixed – Large imports and exports now drain many times faster; queued items were only being processed once a minute regardless of backlog
- Fixed – Rate-limited Odoo instances now back off and resume instead of failing repeatedly
- Fixed – Server version now shows “-” when it is unknown, instead of incorrectly reporting 14.0
2.2.0
- Added – Product, customer, inventory and real-time sync are now built into this plugin (the separate Pro add-on is retired and no longer needed)
- Added – Free service plan now includes 10 orders, 10 products and 10 customers synced per month; paid plans remove the limits
- Added – Usage banner on the plugin settings pages showing your remaining free allowance
- Added – Running imports and exports now show a progress card on every admin screen, with a Stop button for each sync
- Fixed – Stopping a sync no longer pauses other syncs that are still running
- Fixed – Stopping a real-time product import now cancels its queued items instead of leaving them to run
- Fixed – Customer export can now be stopped while it is running
- Fixed – Product export and queue-clearing code paths that previously required the add-on
2.1.4
- Added – Dashboard now lists recent order syncs (successes and failures) with links to the WooCommerce order and the Odoo sale order
- Added – Odoo order and invoice IDs on the order screen link directly to the record in Odoo
- Added – Odoo server version is detected automatically — the manual version selection was removed
- Improved – Configuration refresh buttons fetch fresh data from Odoo instead of the stored cache
- Improved – Order export and import write clear success entries and per-run summaries to the logs
- Improved – Scheduled order export settings with per-run result totals
- Fixed – Subscription state display when the service ends a subscription
2.1.3
- Fixed – Various bug fixes and stability improvements
- Improved – Settings, logs, and subscription user interface
2.1.2
- Changed – Pro download and Support links now point at the service domain (wp.odooconnector.cloud)
2.1.1
- Changed – Plugin scope clarified: this plugin focuses on complete order sync (export, import, invoices, payments, refunds); product/customer/inventory sync moved to the separate Pro add-on
- Fixed – Order export on checkout: sync classes now load on front-end requests, so checkout hooks (classic and block checkout) fire reliably
- Fixed – Queue cleanup failed on strict-mode MySQL (invalid DATETIME comparison)
- Fixed – Order import progress counts included deferred webhook rows, so totals no longer fluctuate
- Fixed – Invoice ID extraction handles all Odoo response shapes; refunds fall back to an amount-only credit note line when products are unmapped
- Improved – Settings screens reorganized into cards; dashboard icon alignment; stale progress panels auto-hide
- Improved – Subscription state reconciles from the service (stale local subscriptions are purged)
1.0.0
- Initial public release as ERP7 Solutions Sync for Odoo and WooCommerce
- Order sync through OdooConnector
- WordPress.org compliance: no trialware or plugin-side feature locks
- Mandatory webhook secret (hash_equals); guest orders on import
- Text domain aligned to plugin slug
erp7-solutions-sync-for-odoo-and-woocommerce - Dashboard, logging, HPOS-compatible order handling
