=== AddOnBoss - Product Add-Ons & Extra Product Options for WooCommerce ===
Contributors: bundleboss
Tags: product addons, custom fields, conditional logic, personalisation, swatches
Requires at least: 6.4
Tested up to: 7.1
Requires PHP: 8.0
Stable tag: 2.3.1
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Extra product options, add-ons and custom fields for WooCommerce. Swatches, priced choices, conditional logic, personalisation. No variations needed.

== Description ==

AddOnBoss adds extra product options, product add-ons and custom fields to a WooCommerce product page. Colour swatches, a dropdown of finishes, checkboxes for extras, a name to engrave, a gift message: each one can carry its own price, the total keeps up as the shopper chooses, and every answer lands on the order.

See how option sets replace variations:

https://youtu.be/mwNulhIPIc4

**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.

**In the free plugin:**

* **Reusable option sets.** Build Colours once and attach it to any product, like global product options you edit in one place.
* **Swatches, buttons or a dropdown**, where shoppers pick one or pick several.
* **Custom fields**: text, a message, a number, a date, a time, a dropdown, a tick box, an email address and a colour.
* **Priced choices**, taxed as part of the product and not as a surcharge.
* **Conditional logic**: show or hide a set or a field from what the shopper picked or typed.
* **A price they choose**, for donations, tips and name your price extras.

**No variations needed.** 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.

= What you can sell with it =

* **Personalised gifts.** An engraved board with a finish to choose, a name to engrave and gift wrap as an optional extra, each carrying its own charge.
* **Food and drink.** Choose up to three toppings, add a sauce, leave a note for the kitchen. Every pick keeps its own price.
* **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.
* **A sweet shop (Pro).** 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.
* **A signage, framing or blinds shop (Pro).** 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.
* **A workwear or print shop (Pro).** 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.

= What makes AddOnBoss different =

**A library, not a form on every product.** Many 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 SupplierBoss 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 ==

= Does AddOnBoss have conditional logic? =

Yes, and it is in the free plugin. A set or a field can show or hide depending on what the shopper picked or typed earlier, such as a thread colour that only appears once embroidery is chosen. Rules can be grouped with "and" and "or", and there is no limit on how many you write. Rules that compare a number (more than, less than, exactly) are in Pro.

= Can I use it for personalised gifts and engraving? =

Yes. Add a text field for the name or message, give it a charge if engraving costs extra, and add gift wrap as a tick box. The shopper personalises the product on its own page and what they typed reads on the order. If you write for an American audience: yes, this is product personalization, and customers can customize a product with color swatches, checkboxes and text fields.

= Which field types are there? =

Free: text, a longer message, a number, a date, a time, a dropdown, a tick box (checkbox), an email address, a web address, a colour, a price the shopper chooses, a hidden note, a section label and an info block. An option set shows as swatches, buttons (the job radio buttons usually do) or a dropdown. File upload, repeatable fields and per-letter pricing are in Pro.

= 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, as a measurement price calculator: a rate per square metre and the exact dimensions the customer types. Both are in Pro, and so are quantity discount bands.

= 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, with a live total.
2. Choices shown as photographs, one priced a little higher.
3. Eighteen colour swatches from one shared set.
4. The quantity grid (Pro): a whole size run in one order.
5. Building a reusable option set in the library.

== 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.3.1 - 2026-10-11 =
* Fixed: a choice's colour can be cleared. The colour bubble in an option set has a small cross that takes the colour away, and the choice stays without one after saving and on the product page, even when its name is a colour such as Red. A set with a choice that has no colour shows as buttons, as it already did when a choice's name is not a colour, so a row never mixes dots and buttons.
* Fixed: a tick box beside a long sentence, such as an agreement to terms, keeps its full size on a phone instead of being squeezed into a small dot.
* Fixed: on a page-builder template with its own photo slider, Keep the photo in view now holds the photo while the questions scroll, and never holds it where other blocks sit under the photo in the same column, since they would scroll over it.
* Fixed (Pro): on a page-builder template with its own photo slider, a picked choice whose photo is not one of the slides shows it in the slide on screen, and gives the slide back when the choice is cleared or another one is picked.

= 2.3.0 - 2026-10-11 =
* New (Pro): pressing a design or colour on the quantity grid opens its quantities right under it on a computer, and in a window from the bottom on a phone, instead of below the whole list.
* Fixed (Pro): the Quantity pricing table's marked row keeps its accent bar inside the row and its quantity in line with the heading under themes that restyle table cells.
* Fixed (Pro): an option set's rule that two choices cannot go together now reaches a BundleBoss bundle that asks the set once for the whole bundle: the clashing choice is greyed on the bundle page with the set's own sentence, and the basket refuses the pair. Needs BundleBoss 6.3.0.
* Fixed (Pro): a quantity grid's page total matches the basket again. A quantity break discounts a colour's or size's extra charge only when the shop discounts options, so twelve sweatshirts in a colour costing £0.40 more no longer read 24p under the basket, and the order summary counts only the swatch that is picked, not every swatch in its set.
* New (Pro): a product's quantity breaks hold inside a BundleBoss bundle: twelve picked across its colours and sizes cost what twelve cost on its own page, and each cell says how many are left in the same words. Needs BundleBoss 6.3.0.
* New (Pro): a product's Prices on choices setting holds inside a BundleBoss bundle, so its colour tiles and size cells there show the same figures as on its own page. Needs BundleBoss 6.3.0.
* Fixed: in a Photo card set, a choice with no photo (such as "No base required") keeps an empty frame, so it stands as tall as the photo cards beside it, and every row of cards is one height. Photo tiles on the quantity grid (Pro) do the same.
* Fixed: the Your first product with options guide ticked Place a test order as soon as the block checkout page was opened, because that page builds a draft order while it loads. The step now waits for an order that is actually placed, on the block checkout and the classic one.
* Fixed: rebuilding a variable product as one product counts only the photos the draft will show, and says the product picture follows the choice only where it does (Pro).
* Fixed: a rebuilt draft says stock came across only when a variation held stock.
* Fixed: on the free plugin, the rebuild says how many pairs will cost a different amount, because a pair there costs its choices' extra charges added together.
* Fixed (Pro): when a licence lapses, the Option Sets library hides its tags, its tag filter and the bar for ticked groups, and a tag kept in a saved link no longer hides groups. Your tags are kept.
* Fixed: when an option's note opens with the option's own name, the name no longer shows twice above a design's quantity cells (Pro). The same goes for the quantity grid's whole-order choices (Pro) and the named lines of a set that takes several picks. A note that only starts with the name, or links from it, prints as written.
* Fixed: an option set brought in by an import, or saved by an older version, no longer logs an "Undefined array key" warning for every option without its own colour, photo or charge, on the Option Sets screen and on the products that use it.
* Fixed: a bundle holding a product that has no options no longer logs an "Undefined array key" warning for it every time the basket is checked or an order is placed.
* Changed: AddOnBoss asks BundleBoss which bundles include one of its options under a name of its own. Nothing changes on screen: the warning before an included option is deleted still names the bundles, whether BundleBoss has been updated yet or not.
* Fixed: for the nine languages AddOnBoss ships its own translation for, that translation stays in charge when WordPress.org also publishes a language pack for the language. A pack carries only the free plugin's words, so it would have put every Pro word back into English. Any other language still uses the pack.

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.3.0 =
With AddOnBoss Pro and BundleBoss 6.3.0, a product's quantity breaks and Prices on choices hold inside a bundle, so some bundle prices change. Update BundleBoss too.

= 2.0.1 =
With AddOnBoss Pro, totals on orders inside a percentage quantity break move by pennies: each price is now rounded before it is multiplied, so the price shown each, times the quantity, is the total. The page arrangements now work on quantity grid products.

= 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.
