MaxtDesign
PluginsCompanion Products

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.

New release
WP 6.0+
PHP 7.4+
Companion Products: Required and add-on companions for WooCommerce. Quantity-matched. SKU-tracked.
Open Source

Features

What Companion Products Does

Built for performance, designed for simplicity.

Required companions: force one selection (radio buttons or dropdown) before add-to-cart
Add-on companions: optional checkboxes, pick zero or many
Conflict groups on add-ons: prevent picking two companions with the same tag key (voltage, size, etc.)
Automatic quantity matching: parent quantity drives companion quantity
Cart quantity split tracking: "Required: 5, Extra: 2"
Required companion qty is read-only in cart; removing the parent removes the companion
Out-of-stock behavior per product: block, allow backorders, or hide unavailable options
Price display options: per-option price, combined total, or both
Configurable multi-select by WordPress user role (Wholesale, Dealer, etc.)
Separate line items and separate SKUs for parent and companions — clean fulfillment
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
Export and import configuration as JSON (per-product settings, global settings, mutex keys by SKU)
System status tab with cache stats and troubleshooting tools
Translation ready

Screenshots

See It in Action

Real admin and frontend captures from a live WooCommerce install.

Companion Products meta box on the WooCommerce product edit screen — enable required selection, set selection label, search and add required products with display style picker
Companion Products meta box on the WooCommerce product edit screen — enable required selection, set selection label, search and add required products with display style picker
WooCommerce product page showing a Required Product radio selection and two Add-On checkboxes with strikethrough pricing and a running Total
WooCommerce product page showing a Required Product radio selection and two Add-On checkboxes with strikethrough pricing and a running Total
WooCommerce order detail with separate line items for the required companion and add-ons, each showing its SKU and a "Required for" or "Add-on for" relationship label
WooCommerce order detail with separate line items for the required companion and add-ons, each showing its SKU and a "Required for" or "Add-on for" relationship label
Companion Products tab under WooCommerce Settings showing the Multi-Select User Roles checklist for granting bulk-select access by role
Companion Products tab under WooCommerce Settings showing the Multi-Select User Roles checklist for granting bulk-select access by role

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

v1.0.02026-05-28
  • 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.