{"id":335597,"date":"2026-07-22T12:20:48","date_gmt":"2026-07-22T12:20:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/connector-for-odoo\/"},"modified":"2026-09-18T11:42:25","modified_gmt":"2026-09-18T11:42:25","slug":"erp7-solutions-sync-for-odoo-and-woocommerce","status":"publish","type":"plugin","link":"https:\/\/cn.wordpress.org\/plugins\/erp7-solutions-sync-for-odoo-and-woocommerce\/","author":14895929,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.2.8","stable_tag":"2.2.8","tested":"7.0.5","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Odoo Integration for WooCommerce","header_author":"Smgom","header_description":"Sync WooCommerce products, orders, customers, and inventory with Odoo ERP through the OdooConnector cloud service. Supports all Odoo versions via a single unified API.","assets_banners_color":"2d2040","last_updated":"2026-09-18 11:42:25","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/odooconnector.cloud","header_author_uri":"","rating":5,"author_block_rating":0,"active_installs":20,"downloads":992,"num_ratings":5,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"smgom","date":"2026-07-22 12:20:35","revision":3618563},"2.1.1":{"tag":"2.1.1","author":"smgom","date":"2026-07-24 12:45:48","revision":3621276},"2.1.2":{"tag":"2.1.2","author":"smgom","date":"2026-07-27 06:13:50","revision":3624017},"2.1.3":{"tag":"2.1.3","author":"smgom","date":"2026-07-30 07:17:46","revision":3628070},"2.1.4":{"tag":"2.1.4","author":"smgom","date":"2026-08-03 07:12:06","revision":3632450},"2.2.0":{"tag":"2.2.0","author":"smgom","date":"2026-08-06 06:22:59","revision":3636162},"2.2.1":{"tag":"2.2.1","author":"smgom","date":"2026-08-07 06:10:14","revision":3637414},"2.2.2":{"tag":"2.2.2","author":"smgom","date":"2026-08-07 16:23:15","revision":3638102},"2.2.3":{"tag":"2.2.3","author":"smgom","date":"2026-08-18 10:47:51","revision":3652567},"2.2.4":{"tag":"2.2.4","author":"smgom","date":"2026-08-20 05:46:25","revision":3655879},"2.2.5":{"tag":"2.2.5","author":"smgom","date":"2026-08-21 16:09:30","revision":3659338},"2.2.6":{"tag":"2.2.6","author":"smgom","date":"2026-09-04 10:07:06","revision":3681011},"2.2.8":{"tag":"2.2.8","author":"smgom","date":"2026-09-18 11:42:25","revision":3701899}},"upgrade_notice":{"2.2.8":"<p>Much faster order export and import \u2014 orders now travel in batches of 25 rather than one at a time. Adds product field mapping, a Media tab for images, and Odoo 20 support. Fixes an out-of-stock product being left with no price, and the inventory sync ignoring the frequency you set. Stores that export large numbers of orders, or that sync stock on a schedule, should update.<\/p>","2.2.6":"<p>Fixes duplicate products on import, and sync results that reported failures as successes. Stores that import products from Odoo should update.<\/p>","2.2.3":"<p>Important fix for stores that export variable products: variations stored the wrong Odoo variant reference, which could send stock and price updates to the wrong Odoo record. Affected variations are re-linked automatically on the next sync.<\/p>","2.2.2":"<p>Important fix: 2.2.1 could trigger a fatal error while queueing sync work. This release also fixes syncs being reported as finished while still running, and adds live progress and a readable sync log.<\/p>","2.2.1":"<p>Connection fixes for Odoo 19+ (no username needed) and much faster bulk imports and exports. If your store is on Odoo 19 or newer, re-save your connection after updating.<\/p>","2.2.0":"<p>Product, customer and inventory sync are now built into this plugin \u2014 the separate Pro add-on is no longer needed. The free service plan includes 10 orders, 10 products and 10 customers synced per month.<\/p>","2.1.3":"<p>Bug fixes and user-interface improvements.<\/p>","2.1.1":"<p>Order-sync fixes (checkout export now reliable) and clarified plugin scope. Re-save connection after install so the connector receives your webhook secret.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":5},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3621283,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3621283,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3621283,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3621283,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3621283,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","2.1.1","2.1.2","2.1.3","2.1.4","2.2.0","2.2.1","2.2.2","2.2.3","2.2.4","2.2.5","2.2.6","2.2.8"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3681011,"resolution":"1","location":"assets","locale":"","width":1280,"height":860},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3681011,"resolution":"2","location":"assets","locale":"","width":1280,"height":860},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3681011,"resolution":"3","location":"assets","locale":"","width":1280,"height":860},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3681011,"resolution":"4","location":"assets","locale":"","width":1280,"height":860},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3681011,"resolution":"5","location":"assets","locale":"","width":1280,"height":860},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3681011,"resolution":"6","location":"assets","locale":"","width":1280,"height":860},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3681011,"resolution":"7","location":"assets","locale":"","width":1280,"height":860}},"screenshots":{"1":"Dashboard \u2014 what has synced, what runs next, and the last orders that reached Odoo","2":"Product sync \u2014 import from Odoo and export back, each direction switched on separately","3":"Order sync \u2014 export on checkout at the statuses you choose, and import Odoo orders back","4":"Sync logs \u2014 a plain-language record of every product and order, filterable by type and context","5":"Customer export \u2014 in bulk or the moment an account changes, limited to the roles you pick","6":"Sync defaults \u2014 company, warehouse, price list, journals and tax, chosen from your own Odoo","7":"Plans \u2014 every feature is in the plugin; the service plan governs how much you sync, never what works"}},"plugin_section":[],"plugin_tags":[2526,12827,152463,19380,65950],"plugin_category":[45],"plugin_contributors":[272789],"plugin_business_model":[],"class_list":["post-335597","plugin","type-plugin","status-publish","hentry","plugin_tags-accounting","plugin_tags-erp","plugin_tags-inventory-sync","plugin_tags-odoo","plugin_tags-order-sync","plugin_category-ecommerce","plugin_contributors-smgom","plugin_committers-smgom"],"banners":{"banner":"https:\/\/ps.w.org\/erp7-solutions-sync-for-odoo-and-woocommerce\/assets\/banner-772x250.png?rev=3621283","banner_2x":"https:\/\/ps.w.org\/erp7-solutions-sync-for-odoo-and-woocommerce\/assets\/banner-1544x500.png?rev=3621283","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/erp7-solutions-sync-for-odoo-and-woocommerce\/assets\/icon.svg?rev=3621283","icon":"https:\/\/ps.w.org\/erp7-solutions-sync-for-odoo-and-woocommerce\/assets\/icon.svg?rev=3621283","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/erp7-solutions-sync-for-odoo-and-woocommerce\/assets\/screenshot-1.png?rev=3681011","caption":"Dashboard \u2014 what has synced, what runs next, and the last orders that reached Odoo"},{"src":"https:\/\/ps.w.org\/erp7-solutions-sync-for-odoo-and-woocommerce\/assets\/screenshot-2.png?rev=3681011","caption":"Product sync \u2014 import from Odoo and export back, each direction switched on separately"},{"src":"https:\/\/ps.w.org\/erp7-solutions-sync-for-odoo-and-woocommerce\/assets\/screenshot-3.png?rev=3681011","caption":"Order sync \u2014 export on checkout at the statuses you choose, and import Odoo orders back"},{"src":"https:\/\/ps.w.org\/erp7-solutions-sync-for-odoo-and-woocommerce\/assets\/screenshot-4.png?rev=3681011","caption":"Sync logs \u2014 a plain-language record of every product and order, filterable by type and context"},{"src":"https:\/\/ps.w.org\/erp7-solutions-sync-for-odoo-and-woocommerce\/assets\/screenshot-5.png?rev=3681011","caption":"Customer export \u2014 in bulk or the moment an account changes, limited to the roles you pick"},{"src":"https:\/\/ps.w.org\/erp7-solutions-sync-for-odoo-and-woocommerce\/assets\/screenshot-6.png?rev=3681011","caption":"Sync defaults \u2014 company, warehouse, price list, journals and tax, chosen from your own Odoo"},{"src":"https:\/\/ps.w.org\/erp7-solutions-sync-for-odoo-and-woocommerce\/assets\/screenshot-7.png?rev=3681011","caption":"Plans \u2014 every feature is in the plugin; the service plan governs how much you sync, never what works"}],"raw_content":"<!--section=description-->\n<p><strong>Establish an enterprise-grade data bridge between WooCommerce and Odoo, replacing manual overhead with reliable, real-time synchronization.<\/strong><\/p>\n\n<p>The WooCommerce Odoo Integration bridges your storefront and your back office. Set it up once, and every order, customer, product, and payment flows directly into Odoo's sales, invoicing, and accounting modules automatically.<\/p>\n\n<p>Built for stores that cannot afford synchronization errors, this connector runs on an asynchronous background queue. This means a slow Odoo server will never slow down your WooCommerce checkout.<\/p>\n\n<p>Fully compatible with Odoo 16, 17, 18, 19, and 20, WooCommerce HPOS, and block-based checkouts.<\/p>\n\n<h4>Automated Order Management (Bi-Directional)<\/h4>\n\n<ul>\n<li><strong>Triggered on Checkout:<\/strong> Orders export to Odoo before the customer even sees the thank-you page.<\/li>\n<li><strong>Status-Based Rules:<\/strong> Choose exactly which orders export. (e.g., Send \"Processing\" orders automatically, but hold \"Pending Payment\" or \"COD\" orders).<\/li>\n<li><strong>Quotation or Sales Order:<\/strong> Draft incoming WooCommerce orders as Odoo Quotations for manual review, or push them straight through as confirmed Sales Orders.<\/li>\n<li><strong>Custom Numbering:<\/strong> Keep your exact WooCommerce order numbers in Odoo (with optional prefixes\/suffixes) so your referencing stays clean.<\/li>\n<li><strong>Discount &amp; Shipping Mapping:<\/strong> Shipping costs and coupon codes land on their own specific Odoo order lines, keeping your accountant happy and reporting accurate.<\/li>\n<li><strong>Odoo to WooCommerce Import:<\/strong> Pull Odoo sales orders down into WooCommerce on a schedule or on demand.<\/li>\n<li><strong>Built for Volume:<\/strong> Orders travel to Odoo in batches of 25 rather than one at a time, which is what turns a backlog of several thousand orders into a job of hours rather than days.<\/li>\n<\/ul>\n\n<h4>Smart Invoicing &amp; Payment Routing<\/h4>\n\n<ul>\n<li><strong>Automated Financials:<\/strong> Odoo invoices are created automatically based on the order statuses you define.<\/li>\n<li><strong>Payment Journal Mapping:<\/strong> Route funds correctly. Stripe payments, PayPal funds, and Cash on Delivery can each land in their own dedicated Odoo payment journal \u2014 eliminating month-end reclassification.<\/li>\n<li><strong>Automated Credit Notes:<\/strong> Processing a refund in WooCommerce automatically generates the corresponding credit note in Odoo.<\/li>\n<li><strong>Invoice State Control:<\/strong> Separate your triggers. Choose one status to mark an invoice in payment and another to mark it fully paid.<\/li>\n<\/ul>\n\n<h4>Complete Product &amp; Inventory Sync<\/h4>\n\n<ul>\n<li><strong>Two-Way Product Sync:<\/strong> Import and export products, including complex variations, attributes, nested categories, and high-res images.<\/li>\n<li><strong>Intelligent Stock Rules:<\/strong> Sync Quantity Available or Quantity On Hand based on what your fulfillment team actually trusts. Limit stock sync to specific Odoo warehouses.<\/li>\n<li><strong>Field Mapping:<\/strong> Carry custom data between systems. Map WooCommerce standard or custom fields directly to Odoo custom fields (<code>x_...<\/code>), in either direction, including fields on variants.<\/li>\n<li><strong>Barcode &amp; SKU Matching:<\/strong> Prevent duplicates. Link your existing Odoo catalog to your store via Internal Reference (<code>default_code<\/code>) or Barcode matching.<\/li>\n<li><strong>Safe Updates:<\/strong> On re-import, choose to update everything, update price\/stock only, or leave existing WooCommerce product details untouched.<\/li>\n<li><strong>Images on Their Own Terms:<\/strong> Import images on a dedicated Media tab, at the size you choose (thumbnail through to the full 1920px), and an image is downloaded again only when Odoo's copy has actually changed.<\/li>\n<\/ul>\n\n<h4>Customer &amp; CRM Alignment<\/h4>\n\n<ul>\n<li><strong>Flexible Customer Handling:<\/strong> Create a unique Odoo contact for every buyer, log guest checkouts, route orders by tag, or map all B2C retail orders to one single \"Web Sales\" customer account.<\/li>\n<li><strong>Role-Based Export:<\/strong> Choose which WordPress user roles sync to Odoo, keeping your ERP contacts free of store administrators and subscribers.<\/li>\n<\/ul>\n\n<h4>Built for Enterprise Reliability<\/h4>\n\n<p>We know what happens when a sync fails during a busy sales event. We built this connector to be transparent, resilient, and honest.<\/p>\n\n<ul>\n<li><strong>Asynchronous Background Queue:<\/strong> Every sync runs through a background queue with automatic retries. Your site performance is completely isolated from Odoo's uptime.<\/li>\n<li><strong>Human-Readable Logs:<\/strong> No cryptic error codes. Get plain-language messages (e.g., \"Odoo returned a temporary error \u2014 retrying automatically\"). Full technical payloads are one click away for debugging.<\/li>\n<li><strong>Secure Webhooks:<\/strong> Authenticated webhook callbacks confirm every synchronization result.<\/li>\n<li><strong>Honest Dashboards:<\/strong> Live progress reporting. See exactly how many records synced and how many failed. Failures never quietly disappear from the total.<\/li>\n<li><strong>Multi-Company Odoo Support:<\/strong> Explicitly pick which Odoo company your store synchronizes with.<\/li>\n<\/ul>\n\n<h4>Pricing &amp; Transparency<\/h4>\n\n<p>Every single feature listed above is fully functional in the plugin itself. There are no disabled code paths, trialware gates, or hidden \"Pro-only\" toggle switches inside WordPress. The connection runs through the OdooConnector service.<\/p>\n\n<ul>\n<li><strong>Free Plan:<\/strong> Includes 10 orders, 10 products, and 10 customers synced per month forever. Ideal for testing and very low-volume setups.<\/li>\n<li><strong>Paid Plans:<\/strong> Removes the volume limits for growing stores. Every paid plan includes a 14-day free trial (cancel anytime, no charge until the trial ends).<\/li>\n<li><strong>Real Support:<\/strong> Live-chat support is built directly into the plugin settings page \u2014 and yes, we provide support to Free plan users, too.<\/li>\n<\/ul>\n\n<h4>Technical Requirements<\/h4>\n\n<ul>\n<li>WooCommerce 7.0 or higher<\/li>\n<li>Compatible with WooCommerce High-Performance Order Storage (HPOS)<\/li>\n<li>An active Odoo instance (URL, database name, username, password)<\/li>\n<li>Compatible with Odoo versions 16, 17, 18, 19, and 20<\/li>\n<li>Network access to the OdooConnector service<\/li>\n<\/ul>\n\n<h4>Ready in 3 Minutes<\/h4>\n\n<ol>\n<li>Install and activate the plugin.<\/li>\n<li>Enter your Odoo URL and credentials, then click \"Test Connection.\"<\/li>\n<li>Place a test order in WooCommerce and watch it appear in Odoo instantly.<\/li>\n<\/ol>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to <code>\/wp-content\/plugins\/erp7-solutions-sync-for-odoo-and-woocommerce\/<\/code> (or install via WordPress admin)<\/li>\n<li>Activate the plugin through the 'Plugins' screen in WordPress<\/li>\n<li>Navigate to WooCommerce \u2192 Odoo Connector and enter your Odoo URL, database, username, and password, then test the connection<\/li>\n<li>Configure sync preferences and save<\/li>\n<li>Optionally subscribe to the OdooConnector service from the Features tab for unlimited middleware order sync<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20this%20plugin%20free%3F%20does%20it%20require%20a%20paid%20service%3F\"><h3>Is this plugin free? Does it require a paid service?<\/h3><\/dt>\n<dd><p>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 \u2014 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.<\/p><\/dd>\n<dt id=\"how%20do%20i%20sync%20woocommerce%20orders%20to%20odoo%3F\"><h3>How do I sync WooCommerce orders to Odoo?<\/h3><\/dt>\n<dd><p>Install the plugin, enter your Odoo URL and credentials, and enable \"Export on checkout\". From then on every order is created in Odoo automatically \u2014 customer, order lines, invoice, and payment included. You can also export on specific status changes or with one click from the Orders tab.<\/p><\/dd>\n<dt id=\"can%20i%20import%20products%20from%20odoo%20to%20woocommerce%3F\"><h3>Can I import products from Odoo to WooCommerce?<\/h3><\/dt>\n<dd><p>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.<\/p><\/dd>\n<dt id=\"are%20any%20features%20locked%20behind%20a%20paid%20upgrade%20in%20the%20plugin%3F\"><h3>Are any features locked behind a paid upgrade in the plugin?<\/h3><\/dt>\n<dd><p>No \u2014 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:<\/p>\n\n<p>Free:<\/p>\n\n<ul>\n<li>Order export to Odoo \u2014 automatic on checkout, on status change, and manual<\/li>\n<li>Order import from Odoo, invoice creation, payment registration, and refund sync (credit notes)<\/li>\n<li>Product import and export, customer export<\/li>\n<li>10 orders, 10 products, and 10 customers synced per month<\/li>\n<li>Dashboard, sync logs, and live-chat support<\/li>\n<\/ul>\n\n<p>Paid:<\/p>\n\n<ul>\n<li>Everything in Free, with unlimited syncs<\/li>\n<li>Inventory and price sync (scheduled and on-demand, per warehouse)<\/li>\n<li>Scheduled automation with background processing<\/li>\n<li>Priority email support<\/li>\n<li>14-day free trial \u2014 cancel anytime<\/li>\n<\/ul>\n\n<p>The Plans tab in the plugin shows the full comparison.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20odoo%20online%20%28odoo.com%29%20and%20odoo.sh%3F\"><h3>Does it work with Odoo Online (odoo.com) and Odoo.sh?<\/h3><\/dt>\n<dd><p>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.<\/p><\/dd>\n<dt id=\"which%20odoo%20versions%20are%20supported%3F\"><h3>Which Odoo versions are supported?<\/h3><\/dt>\n<dd><p>Odoo 16 through 20 are supported. For Odoo 16\u201318 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 \u2014 there is nothing to select or configure, and the detected version is shown in the API Connection bar.<\/p><\/dd>\n<dt id=\"how%20do%20i%20create%20an%20odoo%20api%20key%3F\"><h3>How do I create an Odoo API key?<\/h3><\/dt>\n<dd><p>In Odoo, open Preferences \u2192 Account Security \u2192 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\u201318 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<\/p><\/dd>\n<dt id=\"is%20hpos%20supported%3F\"><h3>Is HPOS supported?<\/h3><\/dt>\n<dd><p>Yes, this plugin is fully compatible with WooCommerce High-Performance Order Storage (HPOS).<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.2.8<\/h4>\n\n<ul>\n<li>Added - Orders are sent to Odoo in batches of 25 instead of one at a time. An export of 3,996 orders that managed two orders a minute \u2014 about 33 hours \u2014 now runs at roughly 27 a minute with no failures. Order import is batched the same way<\/li>\n<li>Added - Products has its own Media sub-tab. Images import on a button of their own, and the image size to import is a setting (from thumbnail up to the full 1920px) rather than always the largest one<\/li>\n<li>Added - Field mapping for products: rules that carry your own WooCommerce fields into Odoo fields and back again, on their own tab, on by default<\/li>\n<li>Added - Custom attributes of a variable product \u2014 the ones typed on the product rather than set up under Products &gt; Attributes \u2014 are exported to Odoo<\/li>\n<li>Added - Odoo 20 support: images, customers and order lines are read in the shapes Odoo 20 returns<\/li>\n<li>Added - A \"Version X is available\" notice on the plugin's own screens, so an update is not missed by an owner who rarely opens the Plugins screen<\/li>\n<li>Fixed - The inventory sync ran every hour whatever the Inventory tab's Sync Frequency said. Stock and price now run on the frequency that tab saves<\/li>\n<li>Fixed - An out-of-stock product was left with no price at all. \"Do not sync Zero Qty\" skipped the whole product rather than just the stock figure, and a product Odoo holds at zero is at zero on every run, so its price never arrived<\/li>\n<li>Fixed - The Export Orders button exported every order regardless of \"Export order statuses\" \u2014 1,029 cancelled, refunded and failed orders out of 5,000 on one store<\/li>\n<li>Fixed - Exporting several thousand orders failed with \"Internal Server Error\". The button read whole orders into memory, reaching 380 MB by the fifth page; it reads order ids now<\/li>\n<li>Fixed - An order line whose product this store had never synced travelled as its WooCommerce id, and Odoo failed the whole order with \"Record does not exist or has been deleted\"<\/li>\n<li>Fixed - A shipping, fee or discount product could be created again on every order: one store had the same shipping product 135 times across 10 orders<\/li>\n<li>Fixed - Importing an order sent WooCommerce's customer emails and moved its stock. The order already happened in Odoo<\/li>\n<li>Fixed - Order export and order import could run at once and neither moved \u2014 switching the import on mid-export started 8,730 imports beside 275 exports \u2014 and a stopped run's leftovers had each side reporting the other as running<\/li>\n<li>Fixed - A long export vanished from the progress widget after 30 minutes, and progress counted an earlier run's rows alongside this one's<\/li>\n<li>Fixed - Every product's image was downloaded on every import, changed or not: 20,000 image reads for 2,000 images on one catalogue. Odoo is now asked for a checksum first, and only a new or changed image is fetched<\/li>\n<li>Fixed - Field mapping rules for variants were ignored on stores that sync over JSON-2 (Odoo 19 and up), so a mapped variant field stayed empty in Odoo<\/li>\n<li>Fixed - Saving Product Sync or Inventory stored the image settings as off, because those fields were not on the form being saved<\/li>\n<li>Changed - Sync log lines are written for shop owners: \"Sent 12 orders to Odoo \u2014 waiting for Odoo to answer.\" The connector job id is still there, under debug<\/li>\n<li>Changed - Products, Inventory, Orders and Customers share one Start button, one Stop button, one progress bar and one log console<\/li>\n<li>Changed - The product sync panel refreshes every 5 seconds while a run is going, and every 20 when nothing is<\/li>\n<\/ul>\n\n<h4>2.2.7<\/h4>\n\n<ul>\n<li>Fixed - Product imports stalled at the same point on every run on servers with default request size limits. Product images were sent back inside the import results, and nginx or PHP turned the larger results away before WordPress received them. Images are now fetched right after each product is imported, in a separate step<\/li>\n<li>Fixed - An import could freeze for good once enough results had gone missing. Items still waiting for a result after a few minutes are now checked with the connector and recovered automatically<\/li>\n<li>Fixed - The inventory sync could lower on-hand stock in Odoo. Saving the updated product sent WooCommerce's figure straight back to Odoo; inventory and price updates no longer trigger a product export<\/li>\n<li>Fixed - One WooCommerce order could become two Odoo orders when an export at checkout overlapped a queued export of the same order<\/li>\n<li>Fixed - Imported order lines take their tax from Odoo line by line, and exported orders match WooCommerce tax rates to Odoo taxes correctly<\/li>\n<li>Fixed - The product and inventory frequency dropdowns and the \"Update Stock Status\" switch now take effect<\/li>\n<li>Fixed - The scheduled stock sync no longer rewrites products whose stock and price did not change, and no longer reports them as warnings<\/li>\n<li>Fixed - A sync whose completion was never recorded no longer stays \"running\" for ever, and a scheduled run that cannot start yet waits for the current one instead of being dropped<\/li>\n<li>Fixed - Failed product exports show the reason from Odoo instead of \"Unknown sync error\"<\/li>\n<li>Fixed - Admin pages no longer wait for the connector before loading, and the sync progress check runs less often<\/li>\n<li>Added - A rebuilt dashboard: order sync totals, success rate, last order and inventory sync times, and a table of every synced or failed order with search, filters and a retry button<\/li>\n<li>Added - Separate date ranges for order export and order import<\/li>\n<li>Added - \"Export order statuses\" on the Orders tab: the statuses that reach Odoo when an order changes status later, by scheduled export or by the Export button<\/li>\n<li>Added - Imported product images are fetched in their own step after the product, and unchanged images are not downloaded again<\/li>\n<li>Changed - Settings that had no effect are hidden: order status sync from Odoo, automatic credit note reconciliation and the default delivery warehouse<\/li>\n<li>Changed - The queue checks for work every 45 seconds, and asks for the next import batch as soon as the previous one has arrived<\/li>\n<\/ul>\n\n<h4>2.2.6<\/h4>\n\n<ul>\n<li>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 \u2014 so a product whose Odoo record carries no SKU had nothing left to match on, and the next run created a second copy<\/li>\n<li>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<\/li>\n<li>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<\/li>\n<li>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<\/li>\n<li>Fixed - A successful product import left no trace on the Sync Logs screen \u2014 only failures were recorded, so a healthy run read as a wall of problems. Each imported product is now listed by name<\/li>\n<li>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<\/li>\n<li>Fixed - One completed run was announced twice, once with the real figures and once with a recount of the same queue<\/li>\n<li>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<\/li>\n<li>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<\/li>\n<li>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<\/li>\n<\/ul>\n\n<h4>2.2.5<\/h4>\n\n<ul>\n<li>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<\/li>\n<li>Added - Sales team is chosen from the teams that exist in Odoo instead of typing the name by hand<\/li>\n<li>Added - A progress row for the media import, so a large catalogue shows what is still to come<\/li>\n<li>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<\/li>\n<li>Fixed - Nested WooCommerce categories exported flat, because each category was created before its parent existed<\/li>\n<li>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<\/li>\n<li>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<\/li>\n<li>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<\/li>\n<li>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<\/li>\n<\/ul>\n\n<h4>2.2.4<\/h4>\n\n<ul>\n<li>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<\/li>\n<li>Fixed - Product import returned no usable data, so inventory runs reported every product as failed and updated nothing<\/li>\n<li>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<\/li>\n<li>Fixed - Products mapped to Odoo by variant reference could not be imported at all<\/li>\n<li>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<\/li>\n<li>Fixed - Progress showed 0% for an entire run, or opened at 100% with the previous run's result, when a new sync was started<\/li>\n<li>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<\/li>\n<li>Changed - Product export and inventory sync ask Odoo for variant data in batches, roughly halving the number of requests a catalogue sync makes<\/li>\n<\/ul>\n\n<h4>2.2.3<\/h4>\n\n<ul>\n<li>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<\/li>\n<\/ul>\n\n<h4>2.2.2<\/h4>\n\n<ul>\n<li>Added - Live progress, a per-item log and a Stop button on the Products, Orders and Customers tabs \u2014 including syncs started on a schedule<\/li>\n<li>Added - Readable sync log (\"Order import SUCCESS: Odoo sale order 466 to WooCommerce #16241\") without turning on debug logging<\/li>\n<li>Added - Refresh button on the Logs tab<\/li>\n<li>Added - Setup checklist on the dashboard collapses once every sync area is switched on<\/li>\n<li>Fixed - Fatal error (\"Call to private method\") that could take the site down while sync work was being queued<\/li>\n<li>Fixed - Progress and the Stop button disappearing part-way through a sync that was still running<\/li>\n<li>Fixed - Progress totals counted earlier runs as well as the current one<\/li>\n<li>Fixed - Odoo product names could be rendered as HTML in the sync log (security fix)<\/li>\n<li>Changed - \"Select Fiscal Position\" is hidden unless fiscal positions are enabled<\/li>\n<li>Changed - Settings screens, including the order status mapping table, now work on phones and small windows<\/li>\n<li>Changed - Repeated internal warnings are summarised instead of filling the log<\/li>\n<\/ul>\n\n<h4>2.2.1<\/h4>\n\n<ul>\n<li>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\"<\/li>\n<li>Fixed - Saving connection details now tests them, so a wrong database or password is reported straight away instead of the plugin still showing \"Connected\"<\/li>\n<li>Fixed - Connection errors now appear in the Odoo Connection form itself, next to the field that needs correcting<\/li>\n<li>Added - A wrong database name is now matched against your Odoo address, and the suggested name can be applied in one click<\/li>\n<li>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<\/li>\n<li>Added - Support email and call-booking links in the API settings card<\/li>\n<li>Changed - Saving your connection now takes you to the configuration page, and saving configuration takes you to the dashboard<\/li>\n<li>Changed - Product, order and customer setup tabs move to the end once your store is connected<\/li>\n<li>Fixed - Queued work now retries on the correct schedule on stores not set to UTC; some stores retried immediately and others waited hours<\/li>\n<li>Fixed - Large imports and exports now drain many times faster; queued items were only being processed once a minute regardless of backlog<\/li>\n<li>Fixed - Rate-limited Odoo instances now back off and resume instead of failing repeatedly<\/li>\n<li>Fixed - Server version now shows \"-\" when it is unknown, instead of incorrectly reporting 14.0<\/li>\n<\/ul>\n\n<h4>2.2.0<\/h4>\n\n<ul>\n<li>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)<\/li>\n<li>Added - Free service plan now includes 10 orders, 10 products and 10 customers synced per month; paid plans remove the limits<\/li>\n<li>Added - Usage banner on the plugin settings pages showing your remaining free allowance<\/li>\n<li>Added - Running imports and exports now show a progress card on every admin screen, with a Stop button for each sync<\/li>\n<li>Fixed - Stopping a sync no longer pauses other syncs that are still running<\/li>\n<li>Fixed - Stopping a real-time product import now cancels its queued items instead of leaving them to run<\/li>\n<li>Fixed - Customer export can now be stopped while it is running<\/li>\n<li>Fixed - Product export and queue-clearing code paths that previously required the add-on<\/li>\n<\/ul>\n\n<h4>2.1.4<\/h4>\n\n<ul>\n<li>Added - Dashboard now lists recent order syncs (successes and failures) with links to the WooCommerce order and the Odoo sale order<\/li>\n<li>Added - Odoo order and invoice IDs on the order screen link directly to the record in Odoo<\/li>\n<li>Added - Odoo server version is detected automatically \u2014 the manual version selection was removed<\/li>\n<li>Improved - Configuration refresh buttons fetch fresh data from Odoo instead of the stored cache<\/li>\n<li>Improved - Order export and import write clear success entries and per-run summaries to the logs<\/li>\n<li>Improved - Scheduled order export settings with per-run result totals<\/li>\n<li>Fixed - Subscription state display when the service ends a subscription<\/li>\n<\/ul>\n\n<h4>2.1.3<\/h4>\n\n<ul>\n<li>Fixed - Various bug fixes and stability improvements<\/li>\n<li>Improved - Settings, logs, and subscription user interface<\/li>\n<\/ul>\n\n<h4>2.1.2<\/h4>\n\n<ul>\n<li>Changed - Pro download and Support links now point at the service domain (wp.odooconnector.cloud)<\/li>\n<\/ul>\n\n<h4>2.1.1<\/h4>\n\n<ul>\n<li>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<\/li>\n<li>Fixed - Order export on checkout: sync classes now load on front-end requests, so checkout hooks (classic and block checkout) fire reliably<\/li>\n<li>Fixed - Queue cleanup failed on strict-mode MySQL (invalid DATETIME comparison)<\/li>\n<li>Fixed - Order import progress counts included deferred webhook rows, so totals no longer fluctuate<\/li>\n<li>Fixed - Invoice ID extraction handles all Odoo response shapes; refunds fall back to an amount-only credit note line when products are unmapped<\/li>\n<li>Improved - Settings screens reorganized into cards; dashboard icon alignment; stale progress panels auto-hide<\/li>\n<li>Improved - Subscription state reconciles from the service (stale local subscriptions are purged)<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial public release as ERP7 Solutions Sync for Odoo and WooCommerce<\/li>\n<li>Order sync through OdooConnector<\/li>\n<li>WordPress.org compliance: no trialware or plugin-side feature locks<\/li>\n<li>Mandatory webhook secret (hash_equals); guest orders on import<\/li>\n<li>Text domain aligned to plugin slug <code>erp7-solutions-sync-for-odoo-and-woocommerce<\/code><\/li>\n<li>Dashboard, logging, HPOS-compatible order handling<\/li>\n<\/ul>","raw_excerpt":"Orders, products &amp; customers flow between WooCommerce and Odoo automatically \u2014 invoices and payments included. Set up in minutes, no CSVs.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/335597","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=335597"}],"author":[{"embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/smgom"}],"wp:attachment":[{"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=335597"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=335597"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=335597"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=335597"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=335597"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=335597"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}