WooVailability releasesself-updates
WordPress plugin to ensure WooCommerce customers are informed about made-to-order products and relevant lead times.
by formless63 · github.com/formless63/woovailability · website
Install
The author publishes release zips, so WP-CLI can install straight from GitHub:
wp plugin install https://github.com/formless63/woovailability/releases/download/v1.0.1/woovailability.zipShips its own WordPress updater (built-in updater), so new versions show up under Dashboard → Updates.
Readme
WooVailability
WooVailability adds configurable made-to-order availability and production lead-time messaging to WooCommerce. It can show compact per-item availability in Cart and Checkout, show an order-level notice in several customer-facing locations, and snapshot availability and lead time onto the order so historical orders do not change when the current lead time changes later.
Requirements
- WordPress with WooCommerce installed and active.
- PHP 7.4 or newer.
- WooCommerce 8.0 or newer.
- A WooCommerce product tag used to identify made-to-order products. The default tag slug is
made-to-order. - A production lead time configured under WooCommerce → WooVailability if you want a lead time displayed.
WooCommerce Cart and Checkout Blocks are supported directly. Classic Cart and Checkout have an order-level notice fallback.
Installation
- Open the repository's Releases page on GitHub.
- Open the latest stable release and download
woovailability.zipfrom the release assets. - In WordPress, go to Plugins → Add Plugin → Upload Plugin.
- Select
woovailability.zip, install it, and activate WooVailability. - Go to WooCommerce → WooVailability and review the settings before using it on a live store.
The release asset is built specifically for WordPress and contains a top-level woovailability/ plugin directory.
Updates
After the initial manual installation, WooVailability checks this repository's stable GitHub Releases through WordPress's normal plugin-update system.
When a newer stable release is available, it appears in the standard Plugins and Updates screens and can be installed with WordPress's normal Update now action. WordPress automatic plugin updates can also be enabled normally if desired.
WooVailability uses the woovailability.zip asset attached to the GitHub Release. Drafts and prereleases are ignored. Because this repository is public, no GitHub account, token, or separate updater plugin is required.
Release checks are cached to avoid unnecessary GitHub API traffic. If GitHub cannot be reached, WooVailability simply skips that update check and continues operating normally.
Quick setup
- Install and activate WooVailability.
- Go to WooCommerce → WooVailability.
- Set the Made-to-order tag slug. The default is
made-to-order. - Set the Production lead time, for example
6-8 Weeks, if you want a lead time shown. - Apply the configured product tag to every parent product that should be treated as made to order.
- Review the global notice content and formatting.
- Review the Cart, Checkout, customer order, and email placement settings.
- Test a cart containing both an in-stock item and a made-to-order item before deploying broadly.
For variable products, WooVailability checks the parent product's tags, so individual variations do not need the tag duplicated onto them.
Settings
WooVailability adds WooCommerce → WooVailability.
General
The General section controls:
- the made-to-order product tag slug;
- the current production lead time;
- the made-to-order line-item label;
- whether in-stock line items should display an availability row;
- the availability field label;
- the in-stock field value.
The current lead time can also be displayed elsewhere with:
[woovailability_lead_time]
Global notice
The global notice has a title and message. The default message is intentionally generic and should be reviewed for your store's production and shipping policies.
Available placeholders are:
{lead_time}— the current lead time in Cart/Checkout, or the historical snapshotted lead time on an existing order;{lead_time_suffix}—: {lead_time}when a lead time exists, otherwise an empty string;{made_to_order_label}— the configured made-to-order label.
The default title uses:
{made_to_order_label}{lead_time_suffix}
so it remains clean even when no lead time has been configured.
Placement controls
WooVailability has separate notice controls for:
- Cart;
- Checkout;
- customer order details / order confirmation;
- WooCommerce emails.
Each placement defaults to Use global. For each placement you can instead choose:
- Custom — use a placement-specific title and message;
- Don't show here — suppress the order-level notice in that location.
Formatting
Global notice formatting controls include:
- background color;
- accent/border color;
- text color;
- accent width;
- border radius;
- vertical/horizontal padding;
- top/bottom margin;
- font size;
- line height.
Each placement defaults to Use global formatting and can optionally define its own formatting overrides.
WooCommerce admin order screen
The admin order screen intentionally stays compact. By default it shows one line such as:
Made to Order: 6-8 Weeks
The admin summary can be disabled or its text template can be changed in settings.
WooVailability's Availability and Production Lead Time order-item metadata are hidden from the admin line-item table to keep narrow order tables readable. The metadata itself is not deleted.
Cart and Checkout line items
When a made-to-order item has a configured lead time, it displays compactly, for example:
Made to Order: 6-8 Weeks
If no lead time is configured, it falls back to:
Availability: Made to Order
In-stock items display:
Availability: In Stock
The in-stock row can be disabled in settings.
The order-level Cart/Checkout notice appears only when the cart contains at least one product carrying the configured made-to-order tag and that placement is enabled.
Historical order snapshot behavior
When an order is created, WooVailability stores ordinary WooCommerce line-item metadata:
AvailabilityProduction Lead Timefor made-to-order items when a lead time is configured
It also stores an internal whole-order flag indicating that the order contained made-to-order items.
The production lead time is stored as plain text at checkout. If the current lead time changes later, old orders continue to retain the value quoted when they were placed.
Persisted-order notices use that historical line-item lead time rather than today's configured lead time. Notice wording and formatting remain configurable from the current plugin settings.
REST API and WooCommerce webhooks
The saved line-item metadata remains normal WooCommerce order data even though it is hidden from the admin line-item table. Standard order REST responses and normal WooCommerce order webhooks can therefore include values such as:
Availability: Made to Order
Production Lead Time: 6-8 Weeks
This can be used by fulfillment, production, ERP, or other order integrations.
Failure and safety behavior
- Missing or mistyped made-to-order tag: products simply behave as in stock from WooVailability's perspective.
- Empty lead time: made-to-order detection still works; the lead-time value is omitted.
- Disabled placement: only that order-level notice is suppressed; order metadata remains intact.
- Changing the current lead time does not rewrite old order metadata.
- Changing product tags does not retroactively rewrite already-created order snapshots.
- A failed GitHub update check does not affect storefront or checkout behavior.
- WooVailability does not modify product prices, shipping rates, tax calculations, stock quantities, or existing order totals.
Compatibility
- WooCommerce Cart and Checkout Blocks
- Classic Cart/Checkout order-level notice fallback
- Variable products (tag detection resolves to the parent product)
- WooCommerce HPOS / custom order tables
- Standard WooCommerce order emails
- Standard WooCommerce REST order data and order webhooks
Development notes
The Block Cart/Checkout order-level notice uses WooCommerce's Blocks IntegrationInterface, Store API extension data, and ExperimentalOrderMeta SlotFill. ExperimentalOrderMeta is an experimental WooCommerce interface and may require adjustment if WooCommerce changes or graduates that API in a future release.
Stable releases are built automatically by GitHub Actions. Maintainer release instructions and validation details are documented in .github/workflows/README.md.
License
WooVailability is licensed under the MIT License.
Read the full README on GitHub →