{"id":373335,"date":"2026-10-07T08:05:17","date_gmt":"2026-10-07T08:05:17","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/ultimate-commerce-for-woocommerce\/"},"modified":"2026-10-07T08:04:46","modified_gmt":"2026-10-07T08:04:46","slug":"bad-otter-ultimate-commerce-woocommerce","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/bad-otter-ultimate-commerce-woocommerce\/","author":23571260,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.2.0","stable_tag":"0.2.0","tested":"7.1.3","requires":"6.6","requires_php":"8.1","requires_plugins":null,"header_name":"Bad Otter Ultimate Commerce for WooCommerce","header_author":"Bad Otter Labs","header_description":"A modular commerce experience enhancement platform for WooCommerce.","assets_banners_color":"","last_updated":"2026-10-07 08:04:46","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/badotter.io\/ultimate-commerce","header_author_uri":"https:\/\/badotter.io","rating":0,"author_block_rating":0,"active_installs":0,"downloads":157,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.2.0":{"tag":"0.2.0","author":"badotterlabs","date":"2026-10-07 08:04:46","revision":3732071}},"upgrade_notice":[],"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.2.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3732101,"resolution":"1","location":"assets","locale":"","width":1448,"height":1086},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3732101,"resolution":"2","location":"assets","locale":"","width":1448,"height":1086},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3732101,"resolution":"3","location":"assets","locale":"","width":1448,"height":1086},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3732101,"resolution":"4","location":"assets","locale":"","width":1448,"height":1086}},"screenshots":{"1":"Ultimate Commerce Overview shows Free module health, diagnostics access and the restrained optional Pro companion notice.","2":"Modules lets merchants enable or disable registered Free modules while seeing dependencies and runtime state.","3":"Live storefront controls show WooCommerce-backed variable-product selection, Wishlist and Recently Viewed enhancements.","4":"The accessible cart drawer reads and mutates the customer cart through WooCommerce Store API while preserving normal cart and checkout links."}},"plugin_section":[],"plugin_tags":[3047,282,6602,1666,286],"plugin_category":[45],"plugin_contributors":[284822],"plugin_business_model":[],"class_list":["post-373335","plugin","type-plugin","status-publish","hentry","plugin_tags-cart","plugin_tags-ecommerce","plugin_tags-variations","plugin_tags-wishlist","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-badotterlabs","plugin_committers-badotterlabs"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/bad-otter-ultimate-commerce-woocommerce.svg","icon_2x":false,"generated":true},"screenshots":[{"src":"https:\/\/ps.w.org\/bad-otter-ultimate-commerce-woocommerce\/assets\/screenshot-1.png?rev=3732101","caption":"Ultimate Commerce Overview shows Free module health, diagnostics access and the restrained optional Pro companion notice."},{"src":"https:\/\/ps.w.org\/bad-otter-ultimate-commerce-woocommerce\/assets\/screenshot-2.png?rev=3732101","caption":"Modules lets merchants enable or disable registered Free modules while seeing dependencies and runtime state."},{"src":"https:\/\/ps.w.org\/bad-otter-ultimate-commerce-woocommerce\/assets\/screenshot-3.png?rev=3732101","caption":"Live storefront controls show WooCommerce-backed variable-product selection, Wishlist and Recently Viewed enhancements."},{"src":"https:\/\/ps.w.org\/bad-otter-ultimate-commerce-woocommerce\/assets\/screenshot-4.png?rev=3732101","caption":"The accessible cart drawer reads and mutates the customer cart through WooCommerce Store API while preserving normal cart and checkout links."}],"raw_content":"<!--section=description-->\n<p>Ultimate Commerce for WooCommerce enhances WooCommerce without replacing it. WooCommerce remains authoritative for products, variations, prices, sellable stock, carts, totals, tax, customers, orders, payments and refunds.<\/p>\n\n<p>The Free plugin provides reusable storefront and merchant foundations including:<\/p>\n\n<ul>\n<li>product-card and catalogue presentation contracts<\/li>\n<li>variation controls and swatch-ready presentation state<\/li>\n<li>WooCommerce Store API-backed cart drawer and Quick Add<\/li>\n<li>signed-in and guest wishlist support<\/li>\n<li>browser-local recently viewed products<\/li>\n<li>authenticated account and order presentation contracts<\/li>\n<li>module management, settings transfer and diagnostics<\/li>\n<li>privacy, audit and safe execution foundations for extensions<\/li>\n<\/ul>\n\n<p>Ultimate Commerce Free is designed to be useful without Ultimate Commerce Pro, a Bad Otter account, a proprietary theme or a hosted Bad Otter service. Paid Ultimate Commerce Pro modules are distributed separately and consume documented public contracts exposed by Free.<\/p>\n\n<p>The plugin follows a simple boundary: WooCommerce owns commerce truth; Ultimate Commerce enhances the experience around it.<\/p>\n\n<h3>Privacy<\/h3>\n\n<p>Ultimate Commerce Free does not send usage telemetry.<\/p>\n\n<p>Signed-in wishlists store a bounded list of WooCommerce product IDs in WordPress user meta under an Ultimate Commerce-owned key. That data integrates with the WordPress personal-data exporter and eraser.<\/p>\n\n<p>Guest wishlists store only bounded WooCommerce product IDs in browser local storage. When a customer signs in, those IDs can be merged into the signed-in wishlist and the guest browser entry is cleared.<\/p>\n\n<p>Recently viewed products are browser-local and store only a bounded list of WooCommerce product IDs. Product display data is resolved live from the store's own WooCommerce Store API rather than storing a second product snapshot.<\/p>\n\n<p>Account and order presentation reads WooCommerce customer\/order objects at request time and does not create a duplicate Ultimate Commerce order database.<\/p>\n\n<p>Merchant configuration is retained by default on uninstall. An explicit merchant setting can request a bounded purge of Ultimate Commerce-owned configuration and signed-in wishlist data. Browser local storage remains under the visitor's browser controls and the feature UI provides clear actions where applicable.<\/p>\n\n<h3>External services<\/h3>\n\n<p>Ultimate Commerce Free does not contact any third-party service by default and does not require a Bad Otter service to operate.<\/p>\n\n<p>The cart drawer, product display, wishlist and recently viewed features communicate only with REST\/Store API endpoints on the same WordPress\/WooCommerce site.<\/p>\n\n<p>The package includes a defensive provider-HTTP utility for extensions that deliberately integrate an external provider. Free does not configure or invoke a third-party provider through that utility by default. Any extension that adds such a service is responsible for its own clear disclosure, permissions and provider terms\/privacy information.<\/p>\n\n<h3>Source and development<\/h3>\n\n<p>The distributed PHP, JavaScript and CSS are human-readable source. The Free package does not depend on a remote executable service and does not ship minified-only source that requires a private build system to understand.<\/p>\n\n<p>Public source and technical documentation:\nhttps:\/\/github.com\/bad-otter-labs\/ultimate-commerce<\/p>\n\n<p>The deterministic WordPress.org release ZIP is built from the canonical Free source with:<\/p>\n\n<pre><code>python3 scripts\/build-wordpress-org-package.py --source packages\/ultimate-commerce-for-woocommerce --output-dir dist-wporg\n<\/code><\/pre>\n\n<p>The resulting ZIP is audited by <code>scripts\/check-wordpress-org-package.py<\/code> and by the official WordPress Plugin Check workflow before release.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate WooCommerce.<\/li>\n<li>Install and activate Ultimate Commerce for WooCommerce.<\/li>\n<li>Open <strong>Ultimate Commerce &gt; Modules<\/strong> to review the available Free modules.<\/li>\n<li>Open <strong>Ultimate Commerce &gt; Settings<\/strong> for portable module settings and uninstall\/data-retention preferences.<\/li>\n<li>Use <strong>Ultimate Commerce &gt; Diagnostics<\/strong> when checking environment, compatibility and module status.<\/li>\n<\/ol>\n\n<p>Themes can use the plugin's documented PHP\/hooks contracts while retaining their normal WooCommerce fallback.<\/p>\n\n<p>Optional shortcodes include:<\/p>\n\n<ul>\n<li><code>[ultimate_commerce_wishlist]<\/code> for the customer wishlist.<\/li>\n<li><code>[ultimate_commerce_recently_viewed]<\/code> for browser-local recently viewed products.<\/li>\n<\/ul>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20ultimate%20commerce%20replace%20woocommerce%3F\"><h3>Does Ultimate Commerce replace WooCommerce?<\/h3><\/dt>\n<dd><p>No. WooCommerce remains the system of record for products, variations, stock, carts, totals, customers, orders, payments and refunds. Ultimate Commerce reads and enhances WooCommerce state through supported APIs.<\/p><\/dd>\n<dt id=\"does%20the%20free%20plugin%20require%20ultimate%20commerce%20pro%20or%20a%20bad%20otter%20account%3F\"><h3>Does the Free plugin require Ultimate Commerce Pro or a Bad Otter account?<\/h3><\/dt>\n<dd><p>No. Free is intended to be independently useful. Pro is a separate optional product that extends the public contracts provided by Free.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20send%20my%20store%20or%20customer%20data%20to%20bad%20otter%3F\"><h3>Does the plugin send my store or customer data to Bad Otter?<\/h3><\/dt>\n<dd><p>No. Ultimate Commerce Free does not send usage telemetry and does not contact any third-party service by default. Its current storefront network requests are same-origin WordPress\/WooCommerce requests.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20ultimate%20commerce%20is%20disabled%3F\"><h3>What happens if Ultimate Commerce is disabled?<\/h3><\/dt>\n<dd><p>WooCommerce product, cart, customer and order truth remains in WooCommerce. Themes and integrations should keep normal WooCommerce fallbacks rather than depending on internal Ultimate Commerce implementation files.<\/p><\/dd>\n<dt id=\"where%20is%20the%20source%20code%20and%20technical%20documentation%3F\"><h3>Where is the source code and technical documentation?<\/h3><\/dt>\n<dd><p>The public source, architecture documents and release tooling are maintained at https:\/\/github.com\/bad-otter-labs\/ultimate-commerce. WordPress.org users should use the plugin listing's support forum for installation support once the listing is live.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Establish the canonical WordPress.org Free package identity and remove the private Bad Otter updater from the Free runtime.<\/li>\n<li>Add Storefront API v1 product-card, catalogue, filter, variation and swatch-ready presentation contracts.<\/li>\n<li>Add WooCommerce Store API-backed cart drawer and variation-aware Quick Add.<\/li>\n<li>Add Wishlist API v1 with signed-in persistence, browser-local guest state, authenticated merge and WordPress privacy export\/erase support.<\/li>\n<li>Add browser-local Recently Viewed API v1 with live WooCommerce product rendering.<\/li>\n<li>Add Account\/Order API v1 with authenticated, HPOS-safe WooCommerce order presentation and strict customer ownership.<\/li>\n<li>Add merchant module management, bounded settings import\/export, uninstall retention controls and privacy-minimised diagnostics.<\/li>\n<li>Add translation-ready PHP\/JavaScript, public theme\/store integration documentation and deterministic WordPress.org package validation.<\/li>\n<\/ul>","raw_excerpt":"A modular WooCommerce experience layer for catalogue, variations, cart, wishlist, recently viewed products and customer account foundations.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/373335","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=373335"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/badotterlabs"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=373335"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=373335"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=373335"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=373335"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=373335"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=373335"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}