Skip to content
Gaurav TiwariChangelog

Plugin changelog

Stackless for WooCommerce

You don't need any other add-ons for WooCommerce: subscriptions, payments, licensing, multi-currency, invoices and store tools in one plugin.

Latest
1.5.3
Releases
17
Updated
October 18, 2026
  1. Stable

    1.5.3

    Fixed: Currency-Aware Payment Gateways now knows the currencies the built-in Stripe, PayPal and Polar gateways can charge. Stripe was listed under the wrong id and Polar not at all, so both were allowed for every currency and never appeared in the "Not known to support this currency" warning. Each gateway now declares its own list, and the PayPal list is no longer a separate copy.

    Read full notes 2 changes
    • Fixed Currency-Aware Payment Gateways now knows the currencies the built-in Stripe, PayPal and Polar gateways can charge. Stripe was listed under the wrong id and Polar not at all, so both were allowed for every currency and never appeared in the "Not known to support this currency" warning. Each gateway now declares its own list, and the PayPal list is no longer a separate copy.
    • Fixed when Polar's organization currency differs from the order currency, the extra default-currency price Polar requires is now converted at the Multi-Currency rate instead of copying the number over unchanged (a ¥5,000 order no longer carries a $5,000 default price).
  2. Stable

    1.5.2

    Fixed: switching a fixed-term subscription to a plan on a different schedule no longer makes it renew forever. The new plan's number of payments is kept and counted from its first period.

    Read full notes 15 changes
    • Fixed switching a fixed-term subscription to a plan on a different schedule no longer makes it renew forever. The new plan's number of payments is kept and counted from its first period.
    • Fixed paying an old switch order after the subscription was cancelled, or after another switch already applied, no longer reactivates or changes it. The order and subscription get a note asking you to review or refund.
    • Fixed sending an early manual renewal invoice no longer suspends a subscription that still has paid time. The grace period now counts from the billing date the invoice is for.
    • Fixed when Paddle, Polar, PayPal or Stripe sends a webhook while the same order is busy, Stackless now asks the provider to retry instead of accepting the event and dropping it. Polar refunds that arrive during a busy moment are no longer lost either.
    • Fixed Stripe no longer marks an order paid when the payment was authorized for an older amount or a different currency, for example after the order was edited during card authentication. The order goes on hold with a note instead. Two Stripe requests for the same order no longer run at once or release each other's lock.
    • Fixed switching an invoice's currency after revising and reissuing it no longer brings back the amount from before the revision.
    • Fixed an order bump with a fixed discount can no longer push a price below zero in another currency, and the bump's minimum and maximum cart totals are compared in the shopper's currency. Bumps that need product add-on answers are no longer offered as one-click adds, and bumps without a discount use your price-book prices.
    • Fixed percentage shipping costs are no longer converted twice for shoppers paying in another currency, and the base currency no longer picks up the exchange-rate markup.
    • Fixed checkout fees that depend on a free checkout field now show in the block checkout's order summary before the order is placed.
    • Fixed WooCommerce Optimizer no longer strips store scripts and styles from pages whose store blocks sit inside a synced pattern.
    • Fixed switching two modules on or off at the same moment no longer undoes one of the changes.
    • Fixed AI agent order searches now respect the date range when a search term is also given, and return the newest matches first.
    • Fixed the public licensing info endpoint no longer shows descriptions and changelogs for draft, private or password-protected products. Private and password-protected products still show to requests with a valid license key.
    • Fixed deleting a refund, or restoring a paid-out order from the trash, now gives back the affiliate commission that was clawed back.
    • Changed FluentCRM now removes the old product's tags and lists when a customer switches plans, keeping any that another active subscription still uses.
  3. Stable

    1.5.1

    Improved: with Woo Redesign on, WooCommerce → Settings reads as sections under their own headings, without a rule under every row. Help that explains a field shows as text under it instead of behind a "?" icon, tables such as Emails and Shipping zones sit flush in the page, and Save stays on screen while you scroll.

    Read full notes 5 changes
    • Improved with Woo Redesign on, WooCommerce → Settings reads as sections under their own headings, without a rule under every row. Help that explains a field shows as text under it instead of behind a "?" icon, tables such as Emails and Shipping zones sit flush in the page, and Save stays on screen while you scroll.
    • Improved Store at a glance is one quiet strip. A dot marks only a number that needs attention, and the hints say how long the oldest order has waited instead of repeating the label. The Invoices and Affiliates totals use the same strip.
    • Improved Woo Redesign drops shadows from static cards and the blue outline from every enabled module card, shows documentation and settings links as secondary buttons, and uses the same underline tabs on every Stackless screen.
    • Fixed with Woo Redesign on, WooCommerce → Settings and Status no longer scroll sideways on phones. Fixed-width fields and wide tables now fit the screen or scroll inside their own box.
    • Fixed on stores that keep orders in posts storage (HPOS off), Custom Invoices no longer fills the debug log with WooCommerce's "Order query argument (meta_query) is not supported" notice. Invoice lists, counts and lookups return the same results as before.
  4. Stable

    1.5.0

    New: Woo Redesign module. Restyles the WooCommerce admin in the look of the Stackless screens: a soft page canvas, card-style tables with quiet uppercase headings, soft order and stock status badges, 2px corners (4px on cards), one 40px height for fields and buttons, tinted notices, one primary action per screen, settings and status pages as cards, and Tabler icons on the product data tabs (including the Stackless tabs). Choose which areas change (orders and coupons, products and catalog, settings and status, Home and Analytics), follow your WordPress admin color scheme, use Stackless Blue or pick a color, and choose comfortable or compact tables. Admin only: nothing loads on the storefront, and other admin pages keep their look.

    Read full notes 33 changes
    • New Woo Redesign module. Restyles the WooCommerce admin in the look of the Stackless screens: a soft page canvas, card-style tables with quiet uppercase headings, soft order and stock status badges, 2px corners (4px on cards), one 40px height for fields and buttons, tinted notices, one primary action per screen, settings and status pages as cards, and Tabler icons on the product data tabs (including the Stackless tabs). Choose which areas change (orders and coupons, products and catalog, settings and status, Home and Analytics), follow your WordPress admin color scheme, use Stackless Blue or pick a color, and choose comfortable or compact tables. Admin only: nothing loads on the storefront, and other admin pages keep their look.
    • New Woo Redesign shows the store at a glance above the orders list (to fulfil, awaiting payment, on hold, sales today) and the products list (live, drafts, out of stock, low stock), each linking to the matching list.
    • New Woo Redesign makes the product editor easier to follow: a "Ready to sell?" checklist for name, price, image, category and short description, a one-line intro on every product data tab, a plain-language line for the product type and the Virtual and Downloadable boxes, and field help shown as text instead of behind "?" icons. Product and coupon fields line up in one column with their descriptions under them, and dimensions sit in one row.
    • New Software Licensing products get a WordPress updater listing: a plugin icon (PNG, JPG or SVG) shown beside the update in Dashboard → Updates and on the Plugins screen, a banner for "View details", a theme screenshot, an upgrade notice, author and homepage links, Description, Installation and FAQ tabs, and required plugins. Each falls back to the product image, description and store details. The Licensing tab is split into titled sections.
    • Improved Stackless screens use 2px corners (4px on cards), black module links with separators between groups, 40px fields and tinted notices instead of a colored stripe.
    • Fixed the Outbound clicks column on the products list collapsed to zero width, so its heading broke into one letter per line.
    • Fixed a new release of a licensed product now reaches customers who already bought it. WooCommerce only grants the files a product has when the order is paid, so a version uploaded later (in the editor, through the REST API or a deploy script) never appeared in earlier buyers' My Account → Downloads. New files are now granted in the background to every order whose license may download them, and a customer's own orders are topped up again when they open Downloads, Licenses or an order, which also catches licenses renewed after a lapse. Expired and revoked licenses get nothing new. Turn this off under Software Licensing → Downloads → New releases.
    • Fixed switching a subscription to another licensed product no longer creates a second license key that never expires. The switch moves the existing key to the new plan, as intended, and the switch order holds no keys of its own.
    • Fixed a plan switch that moves one item of a multi-item subscription to a new billing schedule now moves that item's license keys to the new subscription, so they renew, pause and end with it.
    • Fixed in "one key, limit multiplied by quantity" mode, a plan switch keeps the quantity: three seats of a 1-site plan switched to a 5-site plan give 15 sites, not 5.
    • Fixed switching to a plan without licensing ends the old plan's keys instead of leaving them active and renewing; switching from such a plan to a licensed one creates the key.
    • Fixed an order cancelled or refunded by status and then set back to processing or completed gets its license keys back. Keys revoked by a partial refund or by hand stay revoked.
    • Fixed removing a variation no longer breaks the keys sold for it. They keep validating, updating and renewing under the product's own settings instead of answering "invalid license".
    • Fixed keys for two variations of one product bought on different schedules each follow their own subscription.
    • Fixed the license API's version check only includes the download package for a site activated on the key. A request without a site address (or with one that can't be read) still learns the new version, but can't download updates without using an activation.
    • Fixed with no file picked as the update package, Software Licensing serves the file tagged or named with the current version ("my-plugin 1.5.0") instead of the first file, so adding a release after the old ones updates sites to the right version.
    • Fixed the drop-in license client fetches a fresh download link when WordPress installs an update from a check made hours earlier, instead of failing with "Download failed. Forbidden". Copy the updated client (1.3.0) into your plugins and themes.
    • Fixed the license client works with stores that don't use pretty permalinks. There, /wp-json/ returns a web page, so every call failed with "unexpected response"; the client now falls back to ?rest_route= and remembers it.
    • Fixed when the store can't be reached, "View details" in the plugin list shows an error instead of falling through to wordpress.org, which may list a different plugin under the same slug. An invalid or expired key no longer hides the details either.
    • Fixed the license API's anonymous "View details" lookup by slug picks the first product with licensing turned on, so a newer product sharing the slug without licensing (a copy, a bundle) no longer hides the real one.
    • Fixed sites on international domain names (bücher.de) can activate keys; they match their punycode form.
    • Fixed a client configured with a product id keeps validating after a plan switch moves the key to another product of the same software.
    • Fixed when a stackless_software_licensing_allow_activation filter refuses a site, the customer sees the filter's own message and status instead of "The license request failed."
    • Fixed "Last updated" in the update details modal no longer shifts by the store's time zone offset.
    • Fixed sites on two-part country domains such as test-prep.co.uk or dev-shop.com.au no longer count as free development sites.
    • Fixed keys from a guest order move to the customer's account when WooCommerce links past orders to it, or when an admin changes the order's customer, so they appear under My Account → Licenses.
    • Fixed license expiry dates no longer show a day late for stores whose daylight saving offset differs between today and the expiry date.
    • Fixed ticking "Never expires" on an expired license makes it active again, as setting a future date already did.
    • Fixed Software Licensing no longer serves an update package that WooCommerce has disabled, for example because its folder was removed from the approved download directories. WooCommerce already refused that file's own download links; the license API and My Account → Licenses now refuse it too.
    • Improved files named like "my-plugin 1.4.2" or "my-plugin-1.4.2.zip" count as previous versions without tagging each one. A version is only read when the name matches the software slug or the update package's name, and a tag or release history line still wins.
    • Improved My Account → Downloads shows one row per file for licensed products, however many orders granted it, newest version first, with a Version column and the update package marked Latest.
    • Improved My Account → Licenses shows the latest version, a count of previous versions with their release dates, and explains why an expired, revoked or inactive license has no download button.
    • Improved setting the current version through the WooCommerce REST API dates it in the release history, as saving the product in the editor does. The product's Licensing tab shows the version read from each file name and marks the update package.
  5. Stable

    1.4.0

    New: Coupon Affiliates module, ported from GT Extensions for FluentCart. Customers with a paid order join from My Account → Refer & Earn and get a personal coupon, or you assign any coupon to an account on the coupon's edit screen, with an optional rate per affiliate or per coupon. Paid orders (processing or completed) earn a percentage of product sales after discounts, before tax, shipping and fees. Commissions are held for a refund window, approved and paid by you, with payout batches and CSV exports. Line refunds, amount-only refunds and cancellations reduce or reverse a commission automatically, and a refund after payout is deducted from the next payout. Affiliates can't use their own code on either checkout, renewals and plan switches earn nothing, and with Multi-Currency each commission also records its base-currency amount. While another affiliate plugin is active, new commissions are held for review until you confirm it doesn't pay on the same orders. Works with HPOS and posts order storage, and includes personal data export and erasure.

    Read full notes 2 changes
    • New Coupon Affiliates module, ported from GT Extensions for FluentCart. Customers with a paid order join from My Account → Refer & Earn and get a personal coupon, or you assign any coupon to an account on the coupon's edit screen, with an optional rate per affiliate or per coupon. Paid orders (processing or completed) earn a percentage of product sales after discounts, before tax, shipping and fees. Commissions are held for a refund window, approved and paid by you, with payout batches and CSV exports. Line refunds, amount-only refunds and cancellations reduce or reverse a commission automatically, and a refund after payout is deducted from the next payout. Affiliates can't use their own code on either checkout, renewals and plan switches earn nothing, and with Multi-Currency each commission also records its base-currency amount. While another affiliate plugin is active, new commissions are held for review until you confirm it doesn't pay on the same orders. Works with HPOS and posts order storage, and includes personal data export and erasure.
    • Fixed a copy of the store at another address, such as a staging, local or migrated copy, no longer charges customers or emails them. Stackless records the live store's address and environment type. On a site that doesn't match, renewals, payment retries, dunning, invoice and quote reminders and back-in-stock alerts are held, no saved card is charged, and Stackless customer emails aren't sent. An admin notice offers "This is the live store", and held renewals then run for the periods that came due. Hosts can decide with the STACKLESS_LIVE_STORE constant or the stackless_live_store filter.
  6. Stable

    1.3.0

    New: Software Licensing version archive. Tag older downloadable files (or list package URLs in a release history) with their version, and customers with a valid license can roll back from My Account → Licenses → Previous versions. Links are signed per version, and the license API's info route returns a WordPress.org-style "versions" map.

    Read full notes 14 changes
    • New Software Licensing version archive. Tag older downloadable files (or list package URLs in a release history) with their version, and customers with a valid license can roll back from My Account → Licenses → Previous versions. Links are signed per version, and the license API's info route returns a WordPress.org-style "versions" map.
    • New an option to tie WooCommerce downloads of licensed products to the license. Files leave My Account → Downloads and their links stop working once a license is revoked, refunded or expired. A second option lets expired licenses keep versions released before they expired.
    • Fixed on stores that keep orders in posts storage (HPOS off), subscription renewals were never created or charged, and Stripe, PayPal, Paddle and Polar webhooks could match the wrong order. Order lookups now work on both storage types and confirm the order they find.
    • Fixed a Stripe webhook is acknowledged only after it has been processed. If the event log can't be written, or another request is still working on the event, Stripe gets a retryable error and sends the event again instead of having it marked as a duplicate. An event whose handler died is picked up by exactly one retry.
    • Fixed a renewal whose order was created but never charged or invoiced, for example because the server stopped mid-run, is now collected the next time the renewal runs, on the same order. Paid, failed and already-collected renewal orders are never charged again.
    • Fixed a recurring invoice that fails to save, issue or email no longer uses up its billing period. The run retries automatically with a growing delay, reuses the draft it already created, never emails the same invoice twice, and a schedule set to end after a number of invoices only ends once the last one exists. Periods that fall due while a failed run is retried are billed afterwards instead of skipped.
    • Fixed when a module's database setup fails during an update, Stackless no longer marks the update complete. Modules that set up correctly are recorded, the failed ones retry on the next page load, and an admin notice lists them until they succeed. A database table that wasn't created now counts as a failure too.
    • Fixed the Subscriptions dashboard widget counts every renewal due in the next 7 days and lists the soonest first. It used to check only the 500 newest subscriptions, so older ones due soon were left out. This works with both HPOS and posts order storage.
    • Fixed the dashboard's 30-day churn now counts every subscription that ended in that window. It used to stop at 1,000.
    • Fixed with "Development sites are free" turned off, the Licenses table, the order's Licensing panel and agent license details count development sites toward the site limit, matching what activation enforces.
    • Fixed the stated minimum is now WordPress 6.7, the oldest version WooCommerce 9.9 runs on. It used to say 6.6.
    • Fixed a recurring invoice schedule set to keep drafts no longer completes a billing period when the draft couldn't be saved. The period stays open and the run retries.
    • Fixed when two page loads finish a Stackless update at the same moment and one of them fails a module's setup, that module now retries on the next page load. Before, the other page load could mark the update complete and the failed module was never retried.
    • Fixed the admin notice for a module table that wasn't created now includes the database's reason, such as a permission or syntax error.
  7. Stable

    1.2.0

    New: AI Agents module. Claude, ChatGPT, Cursor and other agents can run the store through the free Site Agent plugin with /invoice, /quote and /store skills, served to Site Agent 0.4+ or downloaded as ZIPs with a terminal script. The ZIPs carry no passwords.

    Read full notes 9 changes
    • New AI Agents module. Claude, ChatGPT, Cursor and other agents can run the store through the free Site Agent plugin with /invoice, /quote and /store skills, served to Site Agent 0.4+ or downloaded as ZIPs with a terminal script. The ZIPs carry no passwords.
    • New agent commands for sales reports and orders, subscriptions (list, summary with monthly recurring revenue, cancel, reactivate), license keys (masked unless revealed, revoke, free a site, resend), back-in-stock alerts, product details and page access. Changes support a dry run, and stackless_agent() now works whichever modules are on.
    • New Webhooks and REST API module. Subscription and license events appear as WooCommerce webhook topics, and stackless/v1/subscriptions lists, reads, cancels and reactivates subscriptions with WooCommerce REST API keys.
    • New FluentCRM integration. Automation triggers for subscriptions, renewals, licenses, paid invoices and accepted quotes; tags and lists that follow subscription status, with a sync for existing customers; smart codes; and subscriptions and licenses on each contact's profile.
    • New six invoice layouts (Classic, Centered, Compact, Amount first, Letterhead, Ledger). Choose a default and override it per invoice; an issued invoice keeps its layout.
    • New a library of reusable invoice-only items. Tick "Save to item library" on a custom line, then add it from "Add a saved item"; manage them under Invoices → Saved items.
    • New invoices remember customer details. Account customers get the billing address, delivery address and VAT number saved to their profile; guests get a private profile by email that fills in the next invoice.
    • New invoice seller details take a legal company name, a VAT ID and a company registration number.
    • New with Multi-Currency Checkout, an invoice can let the customer pay in any enabled currency. Amounts convert from the issued invoice, so switching back restores them exactly.
  8. Stable

    1.1.2

    New: Paddle gateway. Paddle Billing as a merchant of record, with sales tax and VAT handled by Paddle. Buyers pay in Paddle's overlay checkout on your own site, on the Checkout block, the classic checkout and pay links.

    Read full notes 4 changes
    • New Paddle gateway. Paddle Billing as a merchant of record, with sales tax and VAT handled by Paddle. Buyers pay in Paddle's overlay checkout on your own site, on the Checkout block, the classic checkout and pay links.
    • New subscriptions billed by Paddle. Paddle charges the renewals and each one becomes a paid WooCommerce renewal order. Signup fees, free trials and one-time items in the same cart work; one subscription schedule per checkout.
    • New refunds made in WooCommerce go to Paddle, including any tax Paddle added, and refunds approved in Paddle are recorded in WooCommerce once. Cancellations sync both ways, and customers update their card through Paddle from My Account.
    • New Paddle webhooks are signature-checked and replay-safe, and the gateway's currencies are available to Currency-Aware Payment Gateways.
  9. Stable

    1.1.1

    Fixed: the Wishlist tab in My Account loads the wishlist styles and script, so product images show as thumbnails instead of full size and Move to cart and Remove work without a page reload, the same as on the wishlist page.

    Read full notes 1 change
    • Fixed the Wishlist tab in My Account loads the wishlist styles and script, so product images show as thumbnails instead of full size and Move to cart and Remove work without a page reload, the same as on the wishlist page.
  10. Stable

    1.1.0

    New: WooCommerce Optimizer module. Stops WooCommerce prefetching about 50 Cart and Checkout block scripts on every page once the cart has items, defers WooCommerce scripts outside cart and checkout, and removes the WooCommerce generator tag. Optional: load WooCommerce scripts and styles only on store pages, control cart fragments, drop the password strength meter or order attribution, hide marketplace suggestions, inbox notes, dashboard widgets and connect notices, and shorten scheduled-action logs and guest cart sessions.

    Read full notes 9 changes
    • New WooCommerce Optimizer module. Stops WooCommerce prefetching about 50 Cart and Checkout block scripts on every page once the cart has items, defers WooCommerce scripts outside cart and checkout, and removes the WooCommerce generator tag. Optional: load WooCommerce scripts and styles only on store pages, control cart fragments, drop the password strength meter or order attribution, hide marketplace suggestions, inbox notes, dashboard widgets and connect notices, and shorten scheduled-action logs and guest cart sessions.
    • New Stackless serves minified copies of all its CSS and JavaScript (turn on SCRIPT_DEBUG for the readable files), and its storefront scripts load with defer. Payment and Cart/Checkout block scripts keep their timing.
    • New add-ons of type Short text and Long text take a character limit. It is enforced in the browser and on the server.
    • New order bump headlines and descriptions accept {price}, {regular_price} and {discount}, shown in the shopper's currency.
    • Fixed with Multi-Currency Checkout, percentage and fixed-discount order bumps start from the offer's price-book price in that currency, so "40% off" is 40% off the price shoppers see. The bump card and the cart line show the same amounts.
    • Fixed with Multi-Currency Checkout in a currency without decimals (INR, JPY), add-on charges, checkout field fees and order bump prices are no longer rounded to whole base-currency units before conversion ($11.40 became $11).
    • Fixed Hide Price Until Login no longer puts its sign-in link inside product card links in shop grids, related products and Store API responses (invalid nested links that broke card layouts on some themes). The link stays on the product's own page.
    • Fixed add-on text from the classic product form is cleaned of HTML before it is stored, the same as Store API input.
    • Fixed order bumps, the checkout trust block and the checkout layout still appear when the checkout opens in a background tab.
  11. Stable

    1.0.7

    Documentation: Stackless for WooCommerce Training.

    Read full notes 1 change

    Documentation: Stackless for WooCommerce Training.

    Requires WordPress 6.6+, WooCommerce 9.9+ (tested with 11.2) and PHP 7.4+.

    • Fixed on block themes, shop and product collection cards show one "Save to wishlist" button instead of two.
  12. Stable

    1.0.6

    Documentation: Stackless for WooCommerce Training.

    Read full notes 7 changes

    Documentation: Stackless for WooCommerce Training.

    Requires WordPress 6.6+, WooCommerce 9.9+ (tested with 11.2) and PHP 7.4+.

    • New stackless_invoice_schedule() starts or replaces an invoice's recurring schedule from code. Invalid dates come back as a WP_Error with status 400 instead of a fatal error.
    • Fixed a recurring schedule whose first invoice date is today or earlier is reported as "Choose a first invoice date after today." everywhere, checked before anything else about the invoice.
    • Fixed on block themes such as Purple, shop and product collection cards show the Sold Count and Stock Urgency badges once instead of twice.
    • Fixed order bump savings read "Save $20.00" instead of showing the currency symbol as code ($) on the Checkout block.
    • Fixed the Request a quote button on product pages uses the theme's button style on block themes.
    • Fixed with Multi-Currency Checkout, products with add-ons keep their price-book price in other currencies; only the add-on charge is converted.
    • Fixed a PHP 8.5 deprecation notice from product add-ons in the cart.
  13. Stable

    1.0.4

    Documentation: Stackless for WooCommerce Training.

    Read full notes 6 changes

    Documentation: Stackless for WooCommerce Training.

    Requires WordPress 6.6+, WooCommerce 9.9+ (tested with 11.2) and PHP 7.4+.

    • New every module links to its lesson in the Stackless for WooCommerce Training course: a Docs link on each Dashboard card, a setup link at the top of each module's settings, a Docs link in the Stackless header, on the Plugins screen, on the Subscriptions, Licenses, Invoices, Order bumps, Quote requests, Delivery slots, Stock alerts and Checkout fields screens, and inside the product editor panels.
    • Improved the license client sends every request as a POST, so license keys no longer appear in URLs or your store's access logs. Copy the client file again to get this.
    • Improved the license client's text can be translated: pass a 'strings' array with your own text domain.
    • Improved the license update check now answers with a code that says why a site can't download an update (site_not_active, license_expired, license_revoked or license_inactive) instead of "valid".
    • Fixed the License keys email template is overridden from yourtheme/stackless/ like every other Stackless template. Existing copies in yourtheme/woocommerce/ keep working.
    • Fixed the license reminder no longer shows on the Stackless License screen itself.
  14. Stable

    1.0.3

    Requires WordPress 6.6+, WooCommerce 9.9+ (tested with 11.2) and PHP 7.4+.

    Read full notes 4 changes
    • New the license client you ship inside your products now updates themes as well as plugins. Pass 'theme' (the theme folder name) instead of 'plugin_file', and updates appear in Dashboard → Updates and Appearance → Themes. Copy the client file again from templates/software_licensing/client.
    • Fixed "View details" for licensed plugins shows the product description again, next to the changelog.
    • Fixed the license info route only includes a download link for an active license on an activated site, matching the update check.
    • Fixed settings and email descriptions point to the right Stackless menus for checkout fields, delivery slots, order bumps, invoices, quotes and subscriptions.
  15. Stable

    1.0.2

    Requires WordPress 6.6+, WooCommerce 9.9+ (tested with 11.2) and PHP 7.4+.

    Read full notes 5 changes
    • Fixed on block themes such as Twenty Twenty-Five, My Account, wishlist, saved cart and back-in-stock buttons now use the theme's button style instead of small browser buttons.
    • Fixed the product add-ons dropdown uses the theme's font and field size.
    • Fixed order bumps and the trust block match the size of the Checkout block's own text.
    • Improved subscription and license screens keep one main button; Cancel and Deactivate are quieter text actions, and buttons in order tables no longer overflow their rows.
    • Improved order bumps use a thin outline, and invoice and proposal pages drop the heavy accent strip and shadow.
  16. Stable

    1.0.1

    Requires WordPress 6.6+, WooCommerce 9.9+ (tested with 11.2) and PHP 7.4+.

    Read full notes 5 changes
    • Fixed Checkout Builder and Checkout Enhancements settings now load their styles and scripts, and the layout gallery fits the settings panel.
    • Fixed the subscription edit screen's billing schedule reads "Every 2 months" instead of "Every 1 2 months".
    • Fixed block themes no longer show two "Save to wishlist" buttons on product pages.
    • Fixed renewal settings help text names the built-in Stripe, PayPal and Polar gateways.
    • Improved subscription list status badges stay on one line, and the Recurring totals heading lines up with the block checkout's order summary.
  17. Stable

    1.0.0

    Requires WordPress 6.6+, WooCommerce 9.9+ (tested with 11.2) and PHP 7.4+.

    Read full notes 9 changes
    • Initial release with 30 modules.
    • Subscriptions with mixed carts, automatic and manual renewals, failed-payment retries, plan switching with proration, recurring coupons, customer portal, emails and admin screens.
    • Built-in Stripe, PayPal and Polar gateways with saved payment methods, subscription renewals, refunds and signed webhooks.
    • Software licensing with activation limits, a license API and an update server; page access for buyers and subscribers.
    • Multi-currency checkout with price books, live or manual rates, currency-aware gateways and a storefront currency selector.
    • Custom invoices with recurring billing, deposits and reminders; quote requests with online proposals.
    • Checkout enhancements, five checkout layouts, order bumps and buy links.
    • Catalog and store tools: free price text, sold count, stock urgency, quantity limits, hide price until login, add to cart text, external product extras, product details, wishlist, back-in-stock alerts, add-ons and checkout fields, delivery slots, saved carts and service products.
    • Stackless admin menu with a module dashboard, grouped settings and a license page.