=== AddOnBoss - Product Addons, Product Options & Personalization for WooCommerce ===
Contributors: bundleboss
Tags: product addons, product options, woocommerce product addons, woocommerce product options, product fields
Requires at least: 6.4
Tested up to: 7.1
Requires PHP: 8.0
Stable tag: 2.0.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Add product options, add-ons and personalisation to any product without creating a single variation. Build a set once and reuse it across your shop.

== Description ==

A WooCommerce product is either simple, one price and one Add to cart, or variable, a fixed grid of combinations you generate and stock one by one. Neither fits a product a customer configures: a shirt in twelve colours with a name printed on it, a banner cut to a size they type in, a bag with a logo they upload.

AddOnBoss adds that middle ground, **without generating a single variation**. A product with five colours and five sizes would be twenty-five variations to build and maintain. Here it is one option set, attached in a click, and the product stays a single simple product. Your product editor stays fast, and adding a colour next month does not mean rebuilding every combination.

Build a set once, attach it anywhere. Colours as swatches, finishes as buttons, weights as a dropdown. Add a field for the name to engrave or the message to print. Each choice can carry a charge, and that charge behaves like part of the price rather than something stapled on afterwards.

**Try it live:** [demo.bossmage.com](https://demo.bossmage.com) is a full demo store running Pro. Put a name and number on a team kit, pick a colour and watch the photo change, order a whole size run in one grid. Click around and configure things, nothing breaks.

= What you can sell with it =

* **A gift shop.** An engraved board with a finish to choose, a name to engrave and gift wrap as an optional extra, each carrying its own charge.
* **A sweet shop.** Pick and mix by the choice, with a limit on how many, and any single flavour able to sell out on its own while the rest stay on sale (the per-choice count is Pro).
* **A signage, framing or blinds shop.** A price grid with width down one side and height across the other, or a rate per square metre applied to the exact size a customer types in (Pro).
* **A workwear or print shop.** A whole size run ordered in one grid, priced down by quantity band, with the customer's logo uploaded, checked for resolution before it reaches your printer, and drawn on your own product photo as they type (Pro).
* **Any shop with a variation problem.** Five colours by five sizes offered as choices, instead of twenty-five variations to build and price. A made-to-order shop needs nothing else. A shop that counts stock on each colour and size wants Pro, where a single choice holds its own stock.

= What makes AddOnBoss different =

**A library, not a form on every product.** Most plugins in this category have you build a form on each product, so the same five colours get rebuilt fifty times and adding a sixth means fifty edits. Here an option set is a thing in its own right. Build Colours once, attach it wherever it belongs, and editing it in one place updates every product using it. If one product cannot be had in two of those colours, tick them off for that product alone and the rest of the shop is unaffected.

**The free plugin is a whole product, not a taste of one.** Option sets, several-choice sets with bounds, fourteen field types, groups and the full cart and order path are all here, and every one of them charges and taxes correctly. Pro adds jobs the free plugin does not attempt, like artwork upload and made-to-measure pricing. It is not the same plugin with something switched off.

**Pro handles the jobs that usually need a second plugin.** Price by the square metre from the dimensions a customer types, or from a width-by-height grid, the way the made-to-measure trade writes its own price lists. Order a whole size run in one grid, every colour by every size, priced down by quantity band as the run grows. Hold stock on a single choice, so one flavour sells out on its own while the rest stay on sale. Take the customer's artwork, check it is high enough resolution before it reaches your printer, and draw their name or logo onto your own product photo as they type.

**One engine, two plugins.** AddOnBoss and BundleBoss run the same options engine and share one option-set library. A Colour set you build in either one is ready in the other, with no export, no second copy to keep in step, and no double charging when both are active.

**And the money is right.** Every charge joins the cart line through WooCommerce's own pricing and tax, so it is taxed exactly as the product is, in the basis your store displays, and it lands on the order as part of the line. It is never a surcharge bolted on after tax. Worth checking before you commit to any options plugin, because getting it wrong is invisible until an accountant finds it.

= What the free plugin does =

This is the whole options product for a simple product. Build a set once, attach it anywhere, and the choices are priced and taxed as part of the line.

* **Reusable option sets**: define colours, sizes, finishes or weights once, attach them to any product, reorder and rename from one library. They show as swatches, buttons or a dropdown, and each choice can carry a charge.
* **Choose one or choose several**: a set can let shoppers pick more than one choice, like choosing up to three toppings, with an optional "at least" and "up to" bound. Every pick keeps its own charge and each one reads separately in the cart and on the order.
* **Custom fields**: a name to print, a message, a number, a date, a time, a dropdown, a tick box, an email address, a web address, a section label and an info block, each optional or required, each able to charge once or for each item.
* **A colour field**: the colour they want you to use, picked from swatches you define, each with its own optional charge, or typed as any colour if you allow it. The order carries the colour name and code, and your order screen paints the swatch.
* **A price they choose**: a field where the shopper enters an amount of their own, for donations, tips and pay-what-you-wish extras. You set the floor, the ceiling and a suggested figure, and one-tap suggested amounts fill the box.
* **A hidden note for your own orders**: a value that rides on every order of the product, a production route or a supplier code, shown only on your order screen and never to the customer.
* **Long lists search themselves**: past a dozen choices, any dropdown becomes a searchable list that filters as the shopper types, with unavailable choices shown but not pickable. Phones get the same control, sized for thumbs.
* **Groups**: gather related options under their own headings, so a long list reads in sections instead of one run.
* **Rules that show and hide**: show or hide a set or a field depending on what the shopper picked or typed, with "and" and "or" groups and no limit on how many rules.
* **Shoppers see what is left**: an answered question gets a tick, a line under the total names what is still to choose, and Add to cart pressed too early names every unanswered question.
* **A product can refuse a choice**: use one shared Colour set across the shop and tick off the two colours this particular product cannot be had in. The set stays one set, so a colour added to it later is offered everywhere it was not refused.
* **A correct cart and order path**: options join the line through WooCommerce's own pricing and tax, and the picks read on the order screen, in emails and on reorder.

= Part of the BossMage family =

AddOnBoss is made by [BossMage](https://bossmage.com/), alongside BundleBoss.

BundleBoss builds bundles, mix and match packs and build-your-own boxes. AddOnBoss puts options, add-ons and personalisation on a product's own page. They are separate plugins and either works alone, but they were built as one engine, so running both gives you a single option-set library rather than two lists to maintain. Build a Colour set for a bundle and it is already there for a simple product, and the other way round.

Neither plugin needs the other. If you run both, keep BundleBoss updated to a version that ships the shared engine. AddOnBoss detects an older BundleBoss and waits, with a notice, rather than risking a conflict; once BundleBoss is updated it switches on by itself.

Guides and screenshots for every feature are at [bossmage.com/docs/addonboss](https://bossmage.com/docs/addonboss/).

= What AddOnBoss Pro adds =

[AddOnBoss Pro](https://bossmage.com/addonboss/#pricing) is a separate paid plugin. The Solo plan has a 14-day trial, no card needed. It adds:

* **Options on variable products**, so a parent can offer sets alongside its own variations
* **A quantity grid**: order a whole range at once, every colour by every size, as one order
* **Quantity discounts**: price breaks by how many they buy (10 to 24 pay one price, 25 to 49 a lower one), shown as a trade price table or a card ladder, counted across a whole size run
* **File and artwork upload**, with a confined upload area, resolution checks before you print, and GDPR export and erase
* **Print areas and product sides**, with the customer's name or logo drawn on your own product photo as they type
* **Rules on numbers**: reveal or hide a set or a field when an answer is more than, less than or exactly a number, on top of the show and hide rules every build has
* **Choices that can't go together**: in a pick-several set, group the choices that exclude each other, like print and embroidery on the same breast. A blocked choice greys out and says why, the till refuses the pair whatever a browser posts, and a choice like "no printing needed" can stand alone
* **Measured sizes**: price by length, area or volume from the dimensions a customer types
* **Price tables**: a grid of prices, width down one side and height across the other, with a minimum charge and an optional margin on a cost grid. Shoppers pick a size or type their own and the right cell prices it
* **Stock per option**: hold a count on a single choice, so ten jars of one flavour sell out on their own while the rest stay on sale. A sale takes it off, a cancel or refund with restock puts it back, and nobody can order more than you have. The count lives on the option itself: nothing is added to your product list
* **A photo per choice** that swaps the product image when they pick it
* **Per-letter, percentage and per-unit-entered pricing** for add-on fees
* **Ask a field more than once**: let a shopper add another engraving line, or ask for a name for each item they buy, so six shirts collect six names. Each one is priced and shows on the order separately
* **Folding sections** for a product with a lot of choices, so a long page reads as a handful of headings. A group holding something the shopper has to answer is never folded away
* **Step by step**: one question on the screen at a time under a row of steps, each checked before the shopper moves on, with an optional review before the button
* **Fold as you go**: the next question opens as soon as one is answered
* **Popular setups**: named starting points shown above the questions with their price. Nothing is chosen until one is pressed, and every answer can still be changed
* **Ask once for a whole bundle**: with BundleBoss Pro 6.0, a product's questions can be asked once for the bundle, after the items
* **Tags across the library**: tag sets one at a time or forty at once, narrow the library by one tag or two, and rename, recolour, merge or delete your tags from one dialog. If you also run StockBoss the supplier's own label arrives by itself, and imports never touch your own tags

Nothing you build in the free plugin is lost if you add Pro later, and nothing you built with Pro is deleted if you stop. Those settings stay on disk and come back with the plugin.

= Requirements =

* WordPress 6.4 or newer
* WooCommerce 8.0 or newer, tested to 10.0
* PHP 8.0 or newer

Declared compatible with WooCommerce High Performance Order Storage and with the block cart and checkout.

= Tell us what you need =

If AddOnBoss almost does what your shop needs, say so on the support forum for this plugin. We read every thread, and a specific description of the job you are trying to do is worth more to us than a feature name. What is being worked on next is at [bossmage.com/roadmap](https://bossmage.com/roadmap/).

== Installation ==

1. Upload the plugin to `/wp-content/plugins/` or install it from the Plugins screen, and activate it.
2. WooCommerce must be active.
3. Open Products, edit any product, and use the Product Options panel to attach an option set or add fields.
4. Build and reuse option sets from the Option Sets library in the menu.

If you also run BundleBoss, keep BundleBoss updated to a version that ships the shared engine before activating AddOnBoss. AddOnBoss detects an older BundleBoss and waits, with a notice, rather than risking a conflict; once BundleBoss is updated it switches on by itself.

== Frequently Asked Questions ==

= How is this different from using a variable product? =

A variable product creates a real variation for every combination, so five colours by five sizes is twenty-five things to create, price and keep in stock. An option set offers the same five colours as choices on the product page without generating anything, so the product stays one product. Use variations when each combination genuinely needs its own price, SKU and stock. Use option sets when they do not, which is most of the time.

= How do I add options without creating variations? =

Build an option set, for example a list of colours each with an optional charge, and attach it to any product from the Product Options panel. The product offers those choices on its page like a variable product would, but no variations are generated, so the product stays light and the editor stays fast.

= Will it create dozens of variations? =

No. That is the point. An option set offers the choices a variable product would without generating any variations, so a product with many colours and sizes stays a single light product.

= Are the extra charges taxed correctly? =

Yes. A charge joins the cart line through WooCommerce's own pricing, so it is taxed exactly as the product is, in the same basis your store displays. Nothing is added as an untaxed surcharge, and this is true in the free plugin, not only in Pro.

= Can I use the same option set on more than one product? =

Yes, that is what the library is for. Build a Colour set once and attach it to as many products as you like. Edit it in one place and every product follows. If one product cannot be had in two of those colours, tick those choices off for that product and the rest of the shop is unaffected.

= Do the customer's choices show on the order? =

Yes. Every pick and every typed answer reads on the order screen, in the order emails and on the customer's account, and they survive a reorder. Whoever makes the thing sees what was asked for.

= Why did the express payment buttons disappear from a product page? =

On products with required options, including a required upload, AddOnBoss automatically hides Apple Pay, Google Pay and PayPal express buttons on the product page. Those buttons skip the option form, so the order would arrive without the answers you require. Products whose options are all optional keep their buttons (the Mollie and Amazon Pay buttons step back while an option is chosen), and express payment still appears in the cart and at checkout, where the chosen options are already included. It covers the major express providers; developers can override it per product with the addon_boss_allow_express_pay filter.

= Do I need BundleBoss to use AddOnBoss? =

No. AddOnBoss works entirely on its own. If BundleBoss is also installed, the two share one option-set library, so a set you build in one is available in the other. Each plugin runs its own engine and they are built to run side by side without conflict.

= Does it work with variable products? =

The free plugin puts option sets on simple products. Options alongside a variable product's own variations are a Pro feature, because a page offering two choice systems at once has to reconcile them.

= Will it slow my product page down? =

Options are drawn by the plugin rather than generated as variations, so a product with fifty choices is still one product with one set of data behind it. There is no variation table to load and no combination matrix to build. A product with twelve option sets and two hundred and forty choices costs four database queries to draw, measured on every release.

= Does it work with the block cart and checkout? =

Yes. AddOnBoss declares compatibility with the block cart and checkout, and with WooCommerce High Performance Order Storage.

= Can customers upload a logo or a file? =

That is a Pro feature. With Pro, a file upload field lets the customer attach a logo or artwork, the file shows on the order for you to work from, and it is covered by WordPress's personal-data export and erase tools. The free plugin has no upload field, so it never accepts or stores a customer file.

= How do I price something by its size? =

Two ways, and which one you want depends on how you sell. A price table is a grid: you type the price for each width and height, and a shopper who asks for something in between is priced from the band it falls in, which is how the made-to-measure trade prints its own price lists. Measured sizes work the other way round, from a rate per square metre and the exact dimensions the customer types. Both are in Pro.

= Can one choice sell out while the others stay on sale? =

In Pro, yes. Put a count on a single option and WooCommerce owns it from there, so ten jars of one flavour sell out on their own while every other flavour carries on. A sale takes it off, a refund puts it back, and a sold-out choice says so and cannot be picked.

= What happens to my settings if I stop paying for Pro? =

Nothing is deleted. Your option sets, fields, prices and configuration stay exactly where they are, and the free plugin keeps rendering and charging everything it can. The Pro-only behaviour stands down and waits, so if you come back later your setup is as you left it.

= How long does setup take? =

A couple of minutes. Open a product, use the Product Options panel, and attach a set or add a field. Building a reusable set the first time takes a little longer; after that you attach it in a click.

= What is removed if I uninstall? =

AddOnBoss removes its own settings and cached data, and nothing else. Your option-set library and the options attached to each product are your configuration, not ours, and BundleBoss may be sharing that same library, so uninstalling never touches them. Products and orders are WooCommerce data and are left alone, so the record of what a customer ordered stays intact. Reinstall later and your sets are as you left them.

== Screenshots ==

1. Colour and size on one simple product, the sizes carrying their own prices and a total that keeps up as the shopper picks. As a variable product this is a combination built for every pair.
2. Choices shown as photographs rather than names, on a product from a different trade entirely. One flavour costs a little more and says so.
3. Eighteen colours on one product, two of them two-tone, all from a single set shared across the shop. As variations that is eighteen rows to build, price and maintain.
4. The quantity grid: every colour ordered in one go, with the price per item dropping as the order grows.
5. Building a set once: name it, say whether its choices draw as squares, circles or photo cards, and decide whether shoppers pick one or several. Attach it to as many products as you like, and a colour added next month appears on every one of them.

== Privacy ==

AddOnBoss does not collect, store or transmit any personal data of its own.

* A customer's option choices and any text they enter, such as a name to engrave, are stored only as part of their cart and order: standard WooCommerce order data under your control, removed whenever you erase the order.
* Entered field values are covered by WordPress's personal-data export and erase tools, so a data request returns them and an erase request deletes them. In Pro, where a customer can upload a file, those files are covered the same way.
* The plugin sets no advertising or tracking cookies.

= Third-party services =

The free version of AddOnBoss does not connect to any external service or send any data off your site.

AddOnBoss Pro is a separate, paid plugin that uses Freemius for checkout, licensing and updates. None of that is included in this free version.

== Changelog ==

= 2.0.0 - 2026-10-02 =
* New (Pro): Step by step, a page arrangement that shows one question at a time under a row of steps. Continue checks the step before moving on, the row goes both ways, and a step left with something owed is marked in the row rather than refused at the basket.
* New (Pro): Fold as you go, an arrangement that opens the next question as soon as one is answered.
* New (Pro): Popular setups, named starting points shown above the questions with their price. Nothing is chosen for the shopper until a setup is pressed, and every answer can still be changed after. Add them under Ready-made setups in Product options.
* New (Pro): three switches under How this page looks in Product options: Number every question, Show a review before the button, and Keep the photo in view, which keeps the product photo on screen while the questions are answered. All three are off on existing products.
* New (Pro): with BundleBoss 6.0, a product's option sets can be asked once for a whole bundle, after the items. The bundle uses each question's shopper name, look, photos and one-off charge, follows the rules between sets, and can include an answer for the shopper. Removing an option that a bundle includes now asks first and names the bundle.
* New: shoppers see what is left before they buy. An answered question shows a tick beside its name, a line under the total names what is still to choose with a Show me link, and Add to cart pressed too early names every unanswered question, not only the first.
* New: a setting under BossMage > AddOnBoss, Show missing choices in a panel on phones, opens the unanswered questions in a panel over the page when Add to cart is pressed too early on a phone. It is off by default.
* Changed (Pro): Folding sections can now open with Everything open, First one open or Everything closed. The default is Everything open, so an existing Folding sections product opens with every section open after the update. Choose Everything closed to keep the old behaviour. A section with a required question is always open.
* Changed (Pro): on the quantity grid, a colour set whose choices all have photos shows photo tiles, as the product page already did, unless the shop chose a tile style for the grid. The grid also reads the photo setting from the set it actually shows, which some products with several sets did not.
* Changed: the arrangement is picked from pictures under How this page looks, and every setting for the options panel sits in one band above the list.
* Fixed (Pro): a garment inside a bundle could be shown at one price and charged another, for example Black in 3XL shown at 6.20 and charged 5.89. The basket now charges the price the page shows.
* Fixed (Pro): uploaded artwork was deleted after 48 hours even while its line was still in the basket. A file is now kept while a basket holds it, and abandoned uploads are cleared after 30 days.
* Fixed (Pro): on the quantity grid, a shop that shows prices without decimals no longer sees two decimals.
* Fixed (Pro): a size typed above the largest a measured set allows was changed without a word. The field now says it was changed to the largest size.
* Fixed (Pro): a price table's width and height sit on one line, and typing a width no longer pushes the height and the price down the page.
* Fixed (Pro): the count above the options read finished on a variable product while the product's own Colour or Size was still unchosen.
* Fixed: the express payment guard covers more. A product whose only required question is an upload now hides the buttons too, WooPay's own button and pages built with the product_page shortcode are covered, and the Mollie and Amazon Pay buttons, which the guard never matched, now step back on products with required options and while any optional answer is chosen.
* Fixed: editing a basket line that had meanwhile left the basket added a new line while saying it was updated; the page now says it was added. An edit that re-prices a kept choice at today's price now says so.
* Fixed: Photo card on a set whose choices have no photos now says so in the set editor and in Product options, instead of showing swatches without a word.
* Fixed: on themes that restyle form controls, a dropdown field no longer cuts off the bottom of its letters, the keyboard focus shows on every text box, the panel's own buttons keep a readable colour, and the sticky price bar's link back to an unanswered question no longer takes the theme's large button style.
* Fixed: the free build sells a product whose saved arrangement is a Pro one, and keeps the stored choice for when Pro returns.
* Fixed: a measured size set no longer prints two PHP warnings on the product page.
* Fixed: every string the free build shows is translated in all nine locales, including 149 that had shown in English since 1.12.0. A string without a translation can no longer ship.
* Fixed (Pro): pressing a Popular setup clears any optional extra the card does not include, so the total starts where the card says. Hard wearing then Best value had left the standoff kit on the bill. A required question the card leaves out keeps its answer, and a typed size stays.
* Fixed (Pro): with Keep the photo in view, the photo stops at the end of the questions instead of carrying on beside the description tabs.
* Fixed: an email or web address in the wrong shape is checked when the shopper leaves the field and does not earn the tick. Before, anything typed earned the tick and the browser's own message appeared at Add to cart.
* Fixed (Pro): on Step by step with a review at the end, the Choose and Change buttons beside each answer open the step that holds that question. They did nothing.

= 1.12.4 - 2026-09-23 =
* Fixed (Pro): on the quantity grid, the running total now follows a rush date, a measured size, a look-up table or an upload the moment it changes the price. It listened only for print positions, so the total trailed one pick behind and could differ from what the basket charged.
* Fixed (Pro): a percentage rush charge on the quantity grid now shows as money, on the date itself and in the running total. It showed only its rule and the total left it out, so two hoodies at 39.99 read 79.98 while the basket charged 97.98. The figure comes from the product's own price, the same one the basket takes it from.
* Fixed (Pro): when your plan no longer covers choices that can't go together, the set editor now says your rules are kept but not being applied. Before, it showed nothing at all.
* Changed (Pro): rush charges on date and time fields now say per item on the product page, for example "+25% per item (minimum £5.00 each)". That is how they have always been charged; the label now says so, and the settings hints spell it out.
* Fixed (Pro): the Spanish, French, Italian and Portuguese translations cover the reworded rush labels, so translated shops keep them in their own language. The time field's pricing hint, which had been showing in English, is translated too.

= 1.12.3 - 2026-09-22 =
* Fixed (Pro): choices that can't go together now stand down with the licence. Every other module stops when the plan does; this one kept refusing pairs after a lapse. Your rules stay saved and untouched through every edit, so relicensing enforces them again exactly as written.
* Fixed: the listing stops selling tags as a free feature. The library tags bullet moved to the Pro list where the feature lives, the 1.10.0 and 1.11.0 changelog entries now carry the Pro marker like their neighbours, and the Pro list now describes choices that can't go together, which had shipped without a word.

= 1.12.2 - 2026-09-22 =
* Fixed: picking a photographed colour now changes the product photo on shops where a gallery plugin has replaced the standard WooCommerce gallery. Gallery Slider for WooCommerce removes the gallery the image swap was looking for, so the swap quietly did nothing there; it now drives the slider's own main image, remembers which slide it borrowed so swiping cannot confuse the restore, and keeps the photo ahead of the slider's lazy loading.

= 1.12.1 - 2026-09-22 =
* Fixed: picking a photographed colour on the quantity grid now changes the product photo. The image-swap setting worked on the one-at-a-time layout and did nothing on the grid: the grid never loaded the script that performs the swap, and a variable product's colour tiles did not carry their photographs at all. Both are fixed, so the photo follows the open colour on simple and variable products alike.

= 1.12.0 - 2026-09-20 =
* New: rebuild a variable product as one product with option sets. Open a variable product and the Product options tab now offers it: a plain list of what carries over and what does not, then a draft copy built beside the original, which is never touched. Each pair keeps its own price, including any you set by hand that no colour step plus size step could add up to. Check the draft, and when it reads right it can take the original's name and web address, bringing its reviews with it, while the original retires to a draft. Nothing is deleted.
* New: rules that show and hide now work in every build. Show or hide a set or a field on what a shopper picks or types, with and/or groups and no limit on how many, is free from this release. The comparisons that read a number as more than, less than or exactly stay in Pro, and a rule using one is left alone rather than half applied, so nothing is ever hidden for a reason the build cannot judge.
* New: the plugin's opening checklist counts your own shop. It now says how many variable products you have and how many variations they carry between them, with a link to see them.
* Improved: a store with no option sets yet can still add a field. Add a field, Add a section and the arranged list waited behind the option-set library, so a brand new store had no way to put a field on a product at all. Only the set picker waits for the library now.
* Improved: the copy-a-setup panel explains itself. Searching says why a product does not match instead of refusing silently, a shop with nothing to copy from says so rather than offering a search that can only fail, and taking a setup into a product that already has one warns before it replaces it.
* Fixed: a bundle carrying leftover quantity-table settings showed £0.00 with an Add to cart that did nothing. The table is a choice made on a product, and it stayed behind when that product later became a bundle. A bundle is never offered the quantity table now, whatever it was set to before.


For the full history of earlier releases, see changelog.txt in the plugin folder, or
https://plugins.svn.wordpress.org/addon-boss/trunk/changelog.txt

== Upgrade Notice ==

= 2.0.0 =
Folding sections products now open with every section open; choose Everything closed under How this page looks to keep them shut. With BundleBoss 6.0, a product's other questions can be asked once for a whole bundle.
