MaxtDesign

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.

New release
WP 6.1+
PHP 7.4+
Companion Products: Required and add-on companions for WooCommerce. Named sections, incompatibility rules, live total.
Open Source

Features

What Companion Products Does

Built for performance, designed for simplicity.

Required companions: force a selection (radio buttons or dropdown) before add-to-cart
Named add-on sections with drag-to-reorder, each in checkbox or radio mode
Per-companion "Display as" label override, shown on the product widget only, never in cart or orders
Pairwise incompatibility rules with dimmed options, inline explanations, and server-side enforcement
Auto-deselect of conflicting add-ons when the required choice changes, announced for screen readers
Live running total honoring your currency and tax display settings, with a configurable label
Thumbnail lightbox for a larger product photo on the product page
Automatic quantity matching: parent quantity drives companion quantity
Cart quantity split tracking: "Required: 5, Extra: 2", with the required portion read-only
Companion line items stay grouped under their parent in the cart
Order lines snapshot the section label at purchase time, so history never rewrites
Out-of-stock behavior per product: block, allow backorders, or hide unavailable options
Configurable multi-select by WordPress user role (WooCommerce > Settings > Companion Products)
Separate line items and SKUs for both parent and companions, for clean fulfillment
HPOS-compatible: uses WooCommerce order APIs throughout
Near zero frontend footprint: minified assets load only on product pages that use companions
Export and import the full configuration as JSON, matched by SKU for cross-site portability
Accessible: keyboard navigation, aria-live announcements, WCAG AA readable states
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 showing two named add-on sections, Wall Panels in checkbox mode and Mounting Hardware in radio mode, each with per-companion "Display as" label overrides and "Incompatible with" links
Companion Products meta box on the WooCommerce product edit screen showing two named add-on sections, Wall Panels in checkbox mode and Mounting Hardware in radio mode, each with per-companion "Display as" label overrides and "Incompatible with" links
The "Incompatible with" picker expanded on a companion row, ticking which other add-ons conflict with it, plus an Add Section button
The "Incompatible with" picker expanded on a companion row, ticking which other add-ons conflict with it, plus an Add Section button
WooCommerce product page with a required selection, two add-on sections, an incompatible option dimmed and struck through with a "Not compatible with Oak Panel" note, and a live running total showing product, selected, and configured total
WooCommerce product page with a required selection, two add-on sections, an incompatible option dimmed and struck through with a "Not compatible with Oak Panel" note, and a live running total showing product, selected, and configured total
Thumbnail lightbox showing a larger companion product photo for the Oak Panel on the single product page
Thumbnail lightbox showing a larger companion product photo for the Oak Panel on the single product page
WooCommerce order detail with separate line items and SKUs for the parent and its companions, each labeled "Required for" or "Wall Panels for" the parent product, with the section label frozen at purchase time
WooCommerce order detail with separate line items and SKUs for the parent and its companions, each labeled "Required for" or "Wall Panels for" the parent product, with the section label frozen at purchase time
Companion Products settings tab under WooCommerce showing the Multi-Select User Roles checklist and the live running total options
Companion Products settings tab under WooCommerce showing the Multi-Select User Roles checklist and the live running total options

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.

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

v2.0.02026-06-10
  • 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
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 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.