Companion Products
Required and add-on companions for WooCommerce. Named sections, incompatibility rules, live total.
WooCommerce required products and add-ons plugin. Named add-on sections, incompatibility rules, a live running total, and separate SKUs per line item. HPOS-ready.

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 lets you attach other products to a simple product, so customers configure everything in one place before they add to cart.
Required companions force a selection before the customer can add to cart. Pick a radio button or dropdown style, set what happens when a companion is out of stock, and choose 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, and removing the parent removes the companion with it.
Add-on sections group your optional companions under named headings, in the order you choose. Each section is either checkbox mode (pick any) or radio mode (pick at most one, including none). Think "Wall Panels" and "Mounting Hardware" as separate sections on the same product, each with its own rules.
Long product names wreck layouts, so any companion can get a shorter "Display as" label that shows on the product page widget only. The real product name still appears everywhere that matters: cart, checkout, emails, and orders. A global truncation option trims long titles to one line with the full name on hover.
Incompatibility rules stop customers from picking combinations that do not work together. Mark any two add-ons as incompatible, or have a required option rule out specific add-ons. Incompatible items dim with a clear "Not compatible with" message, switching the required selection automatically removes conflicting add-ons with a polite notice, and the same rules are enforced server side, so the cart never accepts a bad combination.
A live running total shows the parent plus selected companions as the customer configures, formatted with your store currency and tax display settings. Companion thumbnails open a larger photo in a lightbox on the product page, so customers can see what they are picking without leaving the page.
Both modes add companions as separate line items with separate SKUs, so your fulfillment team sees exactly what to pick. Order lines record the section name as it was at purchase time, like "Wall Panels for [parent product]", and that label stays frozen even if you rename the section later. The plugin is HPOS-compatible and uses WooCommerce order APIs throughout. Configure it per product through the Companion Products meta box, with global controls under WooCommerce > Settings > Companion Products. Your 1.x configuration, including old conflict groups, migrates automatically on upgrade.
Resources
Requirements
- WordPress 6.1 or higher
- PHP 7.4 or higher
- WooCommerce 8.0 or higher
FAQ
Frequently Asked Questions
Can't find what you're looking for? Check the documentation or get in touch.
Changelog
What's New
- Named add-on sections: group optional companions under headings, drag to reorder, with checkbox or radio mode per section
- Per-companion "Display as" label override, shown on the product page widget only; real names everywhere else
- Pairwise incompatibility rules with dimmed options, inline explanations, auto-deselect on required change, and server-side enforcement
- Conflict groups from 1.x convert automatically into incompatibility rules on upgrade
- Live running total honoring currency and tax display settings, with settings for label, visibility, and long-title truncation
- Thumbnail lightbox: click a companion thumbnail for a larger photo without leaving the page
- Order line items snapshot the section label and display label at purchase time, so renames never rewrite history
- Companion line items stay grouped under their parent in the cart, including after a blocked removal
- Export and import now carry the full v2 configuration (sections, overrides, incompatibility rules) by SKU
- Versioned data schema with automatic, batched migration from 1.x; legacy data kept for rollback
- Performance: minified assets, cart assets only when the cart contains companions, negative-result caching, fixed cache invalidation on companion price and stock changes, no per-visitor database writes
- Accessibility: aria-disabled and keyboard-skip on dimmed options, aria-live announcements, WCAG AA readable dimmed state, accessible lightbox
- Hardened server-side validation: the cart independently verifies selections, exclusions, and section rules
- 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 direct support from the team.
Early Access
Companion Products is GPL-licensed and headed to public release. Want it on your store before then? Get in touch for early access.
Need Something Custom?
We build custom WordPress plugins tailored to your exact requirements.