{"id":347345,"date":"2026-07-31T10:30:48","date_gmt":"2026-07-31T10:30:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/china-fulfillment-service-by-woolii\/"},"modified":"2026-08-10T01:41:19","modified_gmt":"2026-08-10T01:41:19","slug":"wooliiporter-fulfillment","status":"publish","type":"plugin","link":"https:\/\/ug.wordpress.org\/plugins\/wooliiporter-fulfillment\/","author":23540058,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.7.0","stable_tag":"0.7.0","tested":"7.0.3","requires":"6.4","requires_php":"7.4","requires_plugins":null,"header_name":"WooliiPorter Fulfillment for WooCommerce","header_author":"WooliiPorter","header_description":"Connect WooCommerce to Woolii's technology-native China fulfillment. Smart routing selects warehouse dispatch or supplier parcel forwarding.","assets_banners_color":"05152f","last_updated":"2026-08-10 01:41:19","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/porter.woolii.com\/integrations","header_author_uri":"https:\/\/porter.woolii.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":184,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.5.0":{"tag":"0.5.0","author":"wooliiporter","date":"2026-07-31 10:30:41"},"0.5.1":{"tag":"0.5.1","author":"wooliiporter","date":"2026-07-31 11:23:41"},"0.5.3":{"tag":"0.5.3","author":"wooliiporter","date":"2026-08-01 15:51:12"},"0.6.0":{"tag":"0.6.0","author":"wooliiporter","date":"2026-08-05 02:14:22"},"0.7.0":{"tag":"0.7.0","author":"wooliiporter","date":"2026-08-10 01:41:19"}},"upgrade_notice":{"0.5.3":"<p>Cancellation is now coordinated with WooliiPorter before WooCommerce marks the order cancelled. No configuration change is required.<\/p>","0.5.0":"<p>The plugin is now named WooliiPorter Fulfillment for WooCommerce. Settings, SKU mappings, and order data are preserved; no reconfiguration is required.<\/p>","0.4.2":"<p>Maintenance release; no configuration changes are required.<\/p>","0.4.1":"<p>Connected stores can now open their linked Woolii merchant console without entering credentials again. Re-run <strong>Test and connect<\/strong> if the store is not recognized, then follow the six-step activation guide.<\/p>","0.4.0":"<p>Action Scheduler and a Webhook Signing Secret are now mandatory readiness checks. Re-run <strong>Test and connect<\/strong> after upgrading, verify the webhook Store and intent identifiers, and review SKU mappings before enabling automatic submission.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3629886,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3629886,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3629886,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3629886,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.5.0","0.5.1","0.5.3","0.6.0","0.7.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3631122,"resolution":"1","location":"assets","locale":"","width":1600,"height":1000},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3631122,"resolution":"2","location":"assets","locale":"","width":860,"height":476},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3631122,"resolution":"3","location":"assets","locale":"","width":1074,"height":858},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3631122,"resolution":"4","location":"assets","locale":"","width":1074,"height":1118},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3631122,"resolution":"5","location":"assets","locale":"","width":1074,"height":924},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3631122,"resolution":"6","location":"assets","locale":"","width":1074,"height":972}},"screenshots":{"1":"Guided setup dashboard with connection status and safe rollout steps.","2":"Product and variation mapping for intelligent inventory routing.","3":"A stocked order routed to inventory reservation and warehouse fulfillment.","4":"Supplier parcel entry showing the domestic tracking fields, line allocation, and completion guard.","5":"A mixed order held for a safe merchant decision instead of automatic splitting.","6":"Safe cancellation coordination with a clear warehouse-review state."}},"plugin_section":[],"plugin_tags":[39071,13906,6601,3546,286],"plugin_category":[45],"plugin_contributors":[274026],"plugin_business_model":[],"class_list":["post-347345","plugin","type-plugin","status-publish","hentry","plugin_tags-dropshipping","plugin_tags-fulfillment","plugin_tags-inventory","plugin_tags-shipping","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-wooliiporter","plugin_committers-wooliiporter"],"banners":{"banner":"https:\/\/ps.w.org\/wooliiporter-fulfillment\/assets\/banner-772x250.png?rev=3629886","banner_2x":"https:\/\/ps.w.org\/wooliiporter-fulfillment\/assets\/banner-1544x500.png?rev=3629886","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/wooliiporter-fulfillment\/assets\/icon-128x128.png?rev=3629886","icon_2x":"https:\/\/ps.w.org\/wooliiporter-fulfillment\/assets\/icon-256x256.png?rev=3629886","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/wooliiporter-fulfillment\/assets\/screenshot-1.png?rev=3631122","caption":"Guided setup dashboard with connection status and safe rollout steps."},{"src":"https:\/\/ps.w.org\/wooliiporter-fulfillment\/assets\/screenshot-2.png?rev=3631122","caption":"Product and variation mapping for intelligent inventory routing."},{"src":"https:\/\/ps.w.org\/wooliiporter-fulfillment\/assets\/screenshot-3.png?rev=3631122","caption":"A stocked order routed to inventory reservation and warehouse fulfillment."},{"src":"https:\/\/ps.w.org\/wooliiporter-fulfillment\/assets\/screenshot-4.png?rev=3631122","caption":"Supplier parcel entry showing the domestic tracking fields, line allocation, and completion guard."},{"src":"https:\/\/ps.w.org\/wooliiporter-fulfillment\/assets\/screenshot-5.png?rev=3631122","caption":"A mixed order held for a safe merchant decision instead of automatic splitting."},{"src":"https:\/\/ps.w.org\/wooliiporter-fulfillment\/assets\/screenshot-6.png?rev=3631122","caption":"Safe cancellation coordination with a clear warehouse-review state."}],"raw_content":"<!--section=description-->\n<p><strong>You sell. We handle fulfillment from China to your customers.<\/strong><\/p>\n\n<p>Connecting the store activates your merchant account immediately \u2014 the verified install is the review. No platform fee, no volume minimum, and nothing is dispatched or billed before you approve the packed quote.<\/p>\n\n<p>WooliiPorter is an end-to-end China fulfillment service. One operating layer connects receiving, warehouse handling, stocked fulfillment, supplier parcel forwarding, packing, dispatch, tracking, and exception handling. Merchants keep control of their products and supplier relationships while WooliiPorter provides one customer-facing delivery identity from handoff to delivery.<\/p>\n\n<p>Smart routing checks each order line against the merchant's routing preference and available Woolii warehouse inventory. Stocked lines use warehouse fulfillment; supplier-direct or unstocked lines wait for the supplier's real domestic tracking number and use parcel forwarding. If one order needs both routes, the plugin pauses it for a recorded merchant decision instead of silently splitting or guessing.<\/p>\n\n<p>Each eligible order becomes one idempotent fulfillment intent. WooliiPorter checks available inventory and product routing preferences, then returns one of three outcomes:<\/p>\n\n<ul>\n<li><strong>Stocked fulfillment:<\/strong> reserve available inventory and create a warehouse fulfillment order.<\/li>\n<li><strong>Supplier forwarding:<\/strong> wait for the merchant to enter the supplier's real domestic China tracking number, then create the forwarding order after all quantities are allocated.<\/li>\n<li><strong>Mixed-order review:<\/strong> hold the order for a merchant decision when some lines can use stock and other lines require supplier forwarding.<\/li>\n<\/ul>\n\n<p>Routing decisions, required actions, child order references, tracking state, and diagnostic request IDs remain attached to the WooCommerce order. The plugin uses WooCommerce CRUD APIs and declares High-Performance Order Storage (HPOS) compatibility.<\/p>\n\n<p>Cancellation is coordinated before WooCommerce changes the order status. The plugin first stops queued submissions and asks WooliiPorter whether fulfillment can still be stopped. Orders already picked or in a protected warehouse stage stay open for warehouse or authorized-operator review instead of being shown as safely cancelled.<\/p>\n\n<h4>What the plugin does<\/h4>\n\n<ul>\n<li>Adds a guided setup and connection page under <strong>WooCommerce &gt; WooliiPorter<\/strong>.<\/li>\n<li>Opens the linked Woolii merchant console through a short-lived, single-use sign-in handoff.<\/li>\n<li>Links to merchant access, sign-in, and API credential pages.<\/li>\n<li>Validates the API key, account, environment, scopes, and smartRouting before registering the Store.<\/li>\n<li>Maps WooCommerce products and variations to WooliiPorter warehouse SKUs.<\/li>\n<li>Supports an explicit <strong>Always forward<\/strong> preference for products that are not pre-stocked.<\/li>\n<li>Submits eligible orders through Action Scheduler and shows per-line inventory decisions.<\/li>\n<li>Collects supplier parcel tracking numbers, carrier details, supplier names, notes, and line quantity allocation.<\/li>\n<li>Verifies complete forwarding quantities before a formal forwarding order can be created.<\/li>\n<li>Requires HMAC-signed, Store-bound, idempotent webhook updates.<\/li>\n<li>Holds mixed orders for <strong>Forward all<\/strong>, <strong>Wait for stock<\/strong>, or <strong>Re-evaluate inventory<\/strong> decisions.<\/li>\n<li>Coordinates cancellation before WooCommerce writes the cancelled status and shows any warehouse review that is still required.<\/li>\n<\/ul>\n\n<h4>Safety defaults<\/h4>\n\n<p>Activation does not submit historical orders. Sandbox is the default environment, and smart routing and automatic submission are off by default. Automatic submission remains off until connection, Store registration, Webhook Signing Secret, Action Scheduler, and smartRouting checks pass. Mixed orders are not automatically split, and forwarding confirmation requires real tracking numbers with complete quantity allocation.<\/p>\n\n<h4>Service account required<\/h4>\n\n<p>This free plugin connects a WooCommerce store to WooliiPorter's technology-driven physical fulfillment service. An approved merchant account and API key are required; applications are reviewed manually and the plugin cannot connect until the account is approved. Merchants pay Woolii separately for receiving, warehouse handling, packing, storage, transport, and other selected logistics services. The plugin contains no paid code or feature licensing. Service availability, routes, handling options, shipping charges, storage charges, duties, taxes, and merchant terms are determined by the merchant's WooliiPorter account and the applicable order terms. The plugin itself does not guarantee route availability, customs clearance, delivery times, or fixed shipping rates.<\/p>\n\n<p>Apply at https:\/\/porter.woolii.com\/developers\/apply. Sign in at https:\/\/porter.woolii.com\/auth\/signin and manage credentials at https:\/\/porter.woolii.com\/merchant\/integrations\/credentials.<\/p>\n\n<h3>External service and privacy<\/h3>\n\n<p>This plugin connects to the WooliiPorter Merchant API at <code>https:\/\/api.woolii.com\/v1\/merchant<\/code>. It makes no request until an administrator configures an API key and clicks <strong>Test and connect<\/strong>. That action validates the connection and registers the Store. Order data is sent only after the administrator separately enables or manually requests submission.<\/p>\n\n<p>To register the store and coordinate fulfillment, the plugin may send:<\/p>\n\n<ul>\n<li>The store URL, generated external store ID, platform, plugin version, and WordPress webhook endpoint URL.<\/li>\n<li>WooCommerce order ID, the merchant-facing order number returned by WooCommerce (including sequential-order-number extensions), a content-version hash, order currency, and order total.<\/li>\n<li>Product and variation IDs, product names, quantities, WooliiPorter warehouse SKU mappings, routing preferences, and requested service type.<\/li>\n<li>Recipient name, phone number, destination country, region, city, postal code, and street address.<\/li>\n<li>Supplier domestic tracking numbers, carrier, supplier name, notes, and the product quantities assigned to each supplier parcel.<\/li>\n<li>Technical request IDs, idempotency keys, routing actions, and routing-version data needed to prevent duplicate fulfillment.<\/li>\n<\/ul>\n\n<p>WooliiPorter uses this information to register the store, route inventory, reserve stock, receive supplier parcels, arrange delivery, return tracking and settlement status, prevent duplicate orders, provide support, and prepare required customs declarations. Delivery-network recipients receive only the contact, address, parcel and declaration data needed to perform the purchased service, under WooliiPorter's service and privacy terms. Customs authorities may receive declaration information required by law.<\/p>\n\n<p>The API key and webhook secret are stored in WordPress options. Store identity, diagnostics, SKU mappings, fulfillment status, request IDs, supplier parcel references, and tracking state are stored in options, transients, or WooCommerce order metadata. Deactivation stops new scheduled submissions. Uninstall removes credentials and plugin settings but retains WooCommerce order metadata and notes as merchant audit records. Rotate credentials before transferring or decommissioning a store.<\/p>\n\n<p>The plugin does not add advertising trackers and does not send executable code from the service. API responses are operational data, not remotely executed PHP or JavaScript.<\/p>\n\n<p>Review the service terms and privacy policy before connecting a production store:<\/p>\n\n<ul>\n<li>Terms: https:\/\/porter.woolii.com\/terms<\/li>\n<li>Privacy: https:\/\/porter.woolii.com\/privacy<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate WooCommerce.<\/li>\n<li>Upload the <code>wooliiporter-fulfillment<\/code> folder or plugin ZIP through <strong>Plugins &gt; Add New &gt; Upload Plugin<\/strong>.<\/li>\n<li>Activate <strong>WooliiPorter Fulfillment for WooCommerce<\/strong>.<\/li>\n<li>Open <strong>WooCommerce &gt; WooliiPorter<\/strong>.<\/li>\n<li>Create a sandbox API key, enter it, and click <strong>Test and connect<\/strong>.<\/li>\n<li>Configure the same Webhook Signing Secret in the plugin and merchant console.<\/li>\n<li>Map stocked products to WooliiPorter warehouse SKUs; mark non-stocked products as <strong>Always forward<\/strong>.<\/li>\n<li>Enable smart routing and test stocked, forwarding, and mixed orders in sandbox before enabling automatic submission.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20fast%20can%20i%20start%20after%20installing%3F\"><h3>How fast can I start after installing?<\/h3><\/dt>\n<dd><p>Immediately. Connecting a verified store activates the merchant account on the spot \u2014 there is no manual review queue for store installs, no platform fee and no volume minimum. Small and first-time sellers start the same day. The guided setup walks you from connection to a first test order.<\/p><\/dd>\n<dt id=\"how%20do%20i%20verify%20the%20plugin%20i%20installed%20is%20the%20reviewed%20release%3F\"><h3>How do I verify the plugin I installed is the reviewed release?<\/h3><\/dt>\n<dd><p>Every release publishes its SHA-256 checksum of the WordPress.org directory ZIP on the WooliiPorter site, so you can verify the installed artifact byte-for-byte against the reviewed build.<\/p><\/dd>\n<dt id=\"do%20i%20have%20to%20store%20every%20product%20at%20the%20wooliiporter%20warehouse%3F\"><h3>Do I have to store every product at the WooliiPorter warehouse?<\/h3><\/dt>\n<dd><p>No. A product can use real-time stocked fulfillment when inventory exists, or be marked for supplier forwarding when the supplier will ship it to the China warehouse after the customer order is placed.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20only%20part%20of%20an%20order%20is%20in%20stock%3F\"><h3>What happens when only part of an order is in stock?<\/h3><\/dt>\n<dd><p>This release holds the order for merchant review. The merchant can forward the whole order, wait for stock, or re-evaluate inventory. The plugin does not automatically split a mixed order.<\/p><\/dd>\n<dt id=\"can%20the%20plugin%20create%20a%20forwarding%20order%20before%20i%20have%20the%20supplier%20tracking%20number%3F\"><h3>Can the plugin create a forwarding order before I have the supplier tracking number?<\/h3><\/dt>\n<dd><p>No. You can save supplier parcel details as a draft, but a formal forwarding order is created only after real tracking numbers are entered and the complete forwarding quantity is allocated.<\/p><\/dd>\n<dt id=\"does%20activating%20the%20plugin%20send%20my%20existing%20orders%3F\"><h3>Does activating the plugin send my existing orders?<\/h3><\/dt>\n<dd><p>No. Smart routing and automatic submission are disabled by default, and activation does not submit historical orders.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20calculate%20duties%2C%20taxes%2C%20or%20guarantee%20customs%20clearance%3F\"><h3>Does this plugin calculate duties, taxes, or guarantee customs clearance?<\/h3><\/dt>\n<dd><p>No. Customs requirements, route eligibility, duties, taxes, and final carrier charges depend on the goods, destination, carrier, and current service terms. Contact WooliiPorter support for regulated or uncertain goods before shipping.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.7.0<\/h4>\n\n<ul>\n<li>Shipping is now sold by delivery time instead of a service name. WooliiPorter publishes delivery-time bands per destination country \u2014 \"8-12 days\" rather than \"Express\" \u2014 and every order records which band was promised. A service name means different things to different people; a number of days does not.<\/li>\n<li>Delivery rules are edited right inside this plugin's settings and stored on WooliiPorter, so the same rules govern every connected sales channel. The plugin is the editor, never a second copy of the truth.<\/li>\n<li>The plugin now reports the buyer's checkout shipping method as a fact; what it means in days is decided by your delivery rules. If no band can meet the stated days for a destination, the order is rejected with the bands actually available \u2014 never quietly shipped slower than the buyer paid for.<\/li>\n<li>Requires the WooliiPorter platform release of 2026-08-06 or later.<\/li>\n<\/ul>\n\n<h4>0.6.1<\/h4>\n\n<ul>\n<li>Fixed: connecting a store now finishes on its own. WooliiPorter returns the webhook signing secret during registration and the plugin saves it automatically, so order handoff is no longer blocked by an unconfigured signing secret.<\/li>\n<li>Fixed: orders that carry a shipping phone but no billing phone are no longer rejected. The recipient phone now falls back the same way every other address field already did.<\/li>\n<li>Improved: when WooliiPorter rejects an order because a field is invalid, the admin notice now names the field and the reason instead of only saying that something was invalid.<\/li>\n<\/ul>\n\n<h4>0.6.0<\/h4>\n\n<ul>\n<li>Cancellation outcomes now close the loop automatically: when the WooliiPorter warehouse return and final review complete, the WooCommerce order is cancelled to match; if the shipment already entered the carrier network the plugin records that the cancellation was rejected and points staff to the WooCommerce refund flow.<\/li>\n<li>Progress notes for every interception stage (warehouse stopped, stock returned, manual review) appear on the order timeline as they happen.<\/li>\n<li>Inbound receiving reviews (stock arriving at the WooliiPorter warehouse with discrepancies) now surface as an admin notice with the open case list, so store staff no longer need to watch the console to learn about a receiving problem.<\/li>\n<\/ul>\n\n<h4>0.5.3<\/h4>\n\n<ul>\n<li>Syncs the merchant-facing WooCommerce order number while retaining the immutable order ID for idempotent fulfillment.<\/li>\n<li>Intercepts cancellation before WooCommerce writes the cancelled status and stops queued fulfillment submissions.<\/li>\n<li>Confirms cancellation with WooliiPorter and keeps the WooCommerce order open when fulfillment cannot be safely stopped.<\/li>\n<li>Routes picked and protected-stage orders to warehouse or authorized-operator review.<\/li>\n<li>Shows the cancellation outcome and friendly fulfillment-route names in the order panel.<\/li>\n<\/ul>\n\n<h4>0.5.2<\/h4>\n\n<ul>\n<li>International tracking now uses one stable WooliiPorter carrier identity from dispatch to delivery.<\/li>\n<li>Tracking updates remain attached to the same idempotent fulfillment intent and order audit trail.<\/li>\n<\/ul>\n\n<h4>0.5.1<\/h4>\n\n<ul>\n<li>Updated the settings page with the Woolii brand mark and end-to-end fulfillment positioning.<\/li>\n<\/ul>\n\n<h4>0.5.0<\/h4>\n\n<ul>\n<li>Renamed the plugin to WooliiPorter Fulfillment for WooCommerce and moved the text domain to <code>wooliiporter-fulfillment<\/code>.<\/li>\n<li>Replaced the static activation guide with the live seven-step onboarding checklist shared with the Woolii merchant console, including warehouse stocking and wallet funding guidance via the existing console sign-in handoff.<\/li>\n<li>Added one-click catalog sync: published products are registered with Woolii and linked to warehouse SKUs by exact SKU match; linked products missing a WooCommerce SKU receive the warehouse code.<\/li>\n<li>Added optional one-way inventory push: linked product stock is overwritten with the warehouse available quantity every five minutes. WooCommerce stock is never read back.<\/li>\n<li>Registered the order-panel stylesheet and script with <code>wp_enqueue_style<\/code>, <code>wp_enqueue_script<\/code>, and <code>wp_localize_script<\/code> instead of printing them inline, and loaded them only on the order edit screen.<\/li>\n<li>Replaced the inline parcel <code>&lt;script type=\"text\/template\"&gt;<\/code> markup with a standard HTML <code>&lt;template&gt;<\/code> element.<\/li>\n<li>Limited the blocked-automation administrator notice to the WooliiPorter settings, order, and plugins screens.<\/li>\n<li>Removed bundled translation files so translations come from translate.wordpress.org.<\/li>\n<\/ul>\n\n<h4>0.4.2<\/h4>\n\n<ul>\n<li>Switched the merchant-console handoff to wp_safe_redirect with an explicit allowed-hosts list, per WordPress Plugin Check guidance.<\/li>\n<\/ul>\n\n<h4>0.4.1<\/h4>\n\n<ul>\n<li>Added the unified six-step activation guide used across WooCommerce, Shopify, and the Woolii merchant console.<\/li>\n<li>Added a server-side, single-use sign-in handoff to the linked Woolii merchant account.<\/li>\n<li>Restricted console handoff URLs to the trusted Woolii host and exact SSO exchange path.<\/li>\n<li>Kept channel product synchronization separate from warehouse SKU creation and made SKU linking explicit.<\/li>\n<\/ul>\n\n<h4>0.4.0<\/h4>\n\n<ul>\n<li>Moved the official Merchant API endpoint to <code>https:\/\/api.woolii.com\/v1\/merchant<\/code>.<\/li>\n<li>Added complete English gettext source strings and bundled Simplified Chinese translations.<\/li>\n<li>Added safe initialization and an administrator notice when WooCommerce is missing, inactive, or too old.<\/li>\n<li>Added WordPress 7.0 compatibility metadata (validated on 7.0.2), WooCommerce 10.9.4, PHP 7.4, and WooCommerce 8.2 minimum compatibility metadata.<\/li>\n<li>Persisted SKU mappings submitted through the custom connection form.<\/li>\n<li>Required HMAC verification and exact Store identity for every webhook environment, plus intent identity when a local intent exists.<\/li>\n<li>Added Action Scheduler to readiness checks and removed synchronous submission fallback.<\/li>\n<li>Added deactivation cleanup for cron, Action Scheduler jobs, and the SKU cache.<\/li>\n<li>Replaced the internal HPOS controller with the public OrderUtil API and removed deferred Abilities code.<\/li>\n<\/ul>","raw_excerpt":"Ship WooCommerce orders from your China suppliers: in stock ships from the warehouse, out of stock forwards from the supplier \u2014 automatically.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ug.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/347345","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ug.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ug.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ug.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=347345"}],"author":[{"embeddable":true,"href":"https:\/\/ug.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/wooliiporter"}],"wp:attachment":[{"href":"https:\/\/ug.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=347345"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ug.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=347345"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ug.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=347345"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ug.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=347345"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ug.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=347345"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ug.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=347345"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}