Companion Products
Required and add-on companions for WooCommerce. Quantity-matched. SKU-tracked.
Attach required or optional companion products to any simple product. Customers pick before adding to cart, quantities match automatically, and each SKU tracks separately in orders. HPOS-compatible.

Features
What Companion Products Does
Built for performance, designed for simplicity.
Screenshots
See It in Action
Real admin and frontend captures from a live WooCommerce install.




Overview
Why Companion Products?
Companion Products gives you two ways to attach companions to a simple product.
Required companions force a selection before the customer can add to cart. Pick a radio button or dropdown style, configure what happens when a companion is out of stock, and decide how prices display. If a customer adds 5 of the parent, 5 of the required companion go in automatically. They can add extra quantity on top of that, and the cart tracks the split: "Required: 5, Extra: 2". The required quantity is read-only in cart. Remove the parent, and the companion comes out with it.
Add-on companions are optional. The customer sees checkboxes and can pick zero or as many as they want. You can set conflict groups using a short key like voltage or size, which stops a customer from picking two add-ons that share the same key. Quantity matching and cart tracking work the same way as required companions.
Both modes add companion products as separate line items with separate SKUs, so your fulfillment team sees exactly what to pick. Cart and order views show the relationship: "Required for [parent product]" or "Add-on for [parent product]". HPOS-compatible: uses WooCommerce order APIs throughout, not post meta. Configuration is per-product through a meta box on the product edit screen, with global multi-select role controls under WooCommerce > Settings > Companion Products. Import and export your full configuration as JSON, keyed by SKU for clean cross-site portability.
Requirements
- WordPress 6.0 or higher
- PHP 7.4 or higher
- WooCommerce 8.0 or higher
FAQ
Common Questions
Can't find what you're looking for? Check the documentation or open an issue on GitHub.
Changelog
What's New
- Required companion mode: force one selection from a configured list before add-to-cart, with radio button or dropdown display
- Add-on companion mode: optional checkbox selection, pick zero or many, with conflict-group support to prevent incompatible pairings
- Automatic quantity matching for both modes: parent quantity drives companion quantity, cart tracks required vs extra split
- Required companion quantity is read-only in cart; removing the parent cascades removal
- Out-of-stock behavior options per product: block, backorder, or hide and block
- Price display options: per-option price, combined total, or both
- Configurable multi-select by WordPress user role (WooCommerce > Settings > Companion Products)
- Both parent and companion appear as separate line items with separate SKUs for fulfillment
- "Required for [parent]" and "Add-on for [parent]" labels in cart and order views
- HPOS-compatible: uses WooCommerce order APIs throughout
- Per-product meta box with companion search, drag-to-reorder, and full display configuration
- 1-hour transient caching on requirements lookup, auto-invalidated on product save or stock change
- System status tab with cache stats and troubleshooting tools
- Export and import configuration as JSON (per-product settings, global settings, mutex keys by SKU; matches by SKU on import for cross-site portability)
- Translation ready
Documentation & Support
Step-by-step guides, configuration help, and issue tracking on GitHub.
Open Source on GitHub
View the source, report bugs, or contribute. This plugin is free and open source under the GPL.
Need Something Custom?
We build custom WordPress plugins tailored to your exact requirements.