=== AddOnBoss - Product Options, Add-Ons & Personalisation for WooCommerce === Contributors: bundleboss Tags: product options, product addons, extra product options, product fields, product personalization Requires at least: 6.4 Tested up to: 7.1 Requires PHP: 8.0 Stable tag: 1.3.7 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. = 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, price and keep in 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, seven 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 dropdown, a tick box, a section label and an info block, each optional or required, each able to charge once or for each item. * **Groups**: gather related options under their own headings, so a long list reads in sections instead of one run. * **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/pricing/) is a separate paid plugin. 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 * **Conditional choices**: reveal or hide a set or a field depending on another answer, written in the words you would say out loud * **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 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. = 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. = 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, each in its own card, with the sizes carrying their own prices and a total that keeps up as the shopper picks. 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. 4. The quantity grid: every colour ordered in one go, with the price per item dropping as the order grows. 5. Building a set: 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. == 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 == = 1.3.7 - 2026-08-18 = * Fixed (Pro): on the grid layout, the quantity table's "With your options" column never appeared, however many priced options were picked. The one-at-a-time page announced its settled option money and the grid kept the figure to itself, so a grid product with priced print positions showed bare prices only. The grid now announces the same figure its receipt bills, the column wakes the moment an option carries a price, and every kind of option money reaches it: choices, priced fields, per-letter fees, priced uploads and percent-of-price fees. A charge made once for the whole line stays flat and out of the per-item figures, as it always has. = 1.3.6 - 2026-08-18 = * New (Pro): the quantity discount table can show what a unit really costs with the chosen options. The moment a shopper picks an option that carries a price, a "With your options" column appears against every quantity break, the cards gain the same loaded figure, and the running price and the "add N more" nudge speak that same number. Nothing shows until an option with a price is chosen, so a bare product keeps exactly the table it had. * New (Pro): a Prices on choices control on the product's options panel, covering the quantity grid's cells and the option chips alike. Automatic keeps the standard behaviour. Differences only marks just the dearer choices with figures like +1.50; Every price dresses each choice in its own full price; Hidden shows no figures at all, and never touches what is charged. A set where shoppers pick several keeps differences whatever you choose, because those picks add up and a full price on each would promise three different totals for one item. On the size-run matrix the figures sit under the size headings, and only where every colour agrees on the figure. * Fixed (Pro): the quantity table's running price and its "add N more" line ignored a VAT toggle. A shop showing prices without VAT beside a toggle for showing them with it had the whole page follow the switch except those two figures, which kept quoting the old basis. They now follow the toggle like everything else, and so does every figure in the table. * Fixed (Pro): with a dearer variation chosen, the quantity table kept describing the cheapest one. The Each column now follows the variation the shopper actually picked, so the table, the running price and the nudge always tell one story. * Fixed: the options receipt wrote money its own way instead of yours. A shop set to show prices like 155,00 with the symbol after got a Grand total reading like a different shop's till, symbol first with a dot. Every figure the receipt writes now uses your shop's own money format, and the same is true of the quantity grid's totals and badges. * Changed (Pro): the quantity discount table now fills its panel and lines its figures up under their own headings, instead of stopping short of the panel's edge with the money adrift mid-table. = 1.3.5 - 2026-08-15 = * New: AddOnBoss asks once whether you would leave a review, and only after you have put options on a product and lived with them for a week. It shows on AddOnBoss's own screens and nowhere else in your admin, and it goes for good the moment you answer it, whichever way you answer. If something is wrong it points you at the support forum rather than the review form, and it retires itself after a few quiet showings if you would rather not say. Paid installs never see it. * Fixed: the cart printed a product's fields out of the order you set them in. A field sitting outside a repeating block, a delivery note added after an engraving, was lifted above the first block and read first, so whoever makes the item read the wrong thing first. The cart now prints them in the order your editor shows, and a repeating block still reads one whole block at a time. * Fixed: the option row editor left an empty column where the picture picker is not available, so every row carried a gap with nothing in it and nothing to say why. The column closes instead. * Fixed: a product priced by another plugin's grid grew an empty options panel beneath it, and that panel's receipt showed the product's own base price as a Grand total next to the grid quoting the real money. Nothing is drawn there now unless there is something to draw. * Changed: the brand colours you set on the Colours screen now reach the product-page surfaces other BossMage plugins add, so one setting dresses all of them instead of leaving one undressed. = 1.3.4 - 2026-08-11 = * New (Pro): a set your shoppers may take several choices from now works on the quantity grid, offered once for the whole order and drawn with its pictures. "Pick up to two print positions" sits beside your size and colour grid, with a photograph of each position, and every position is charged. A set like that used to be left off a grid product altogether, so nobody saw it and nothing was charged for it. * Fixed: the option set editor now says when a set's pictures will never be shown, and carries the one click that fixes it. If the set was once set to draw plain Square or Circle swatches, every picture put on a choice after that was kept and never drawn, with nothing on screen to explain it. The Swatch shape control also moves to Photo card by itself the moment you add the first picture, so it shows what shoppers will actually see. * Fixed: choosing a colour inside a bundle no longer highlights a patch wide enough to look like it covers two colours. A swatch drawn without its name now takes its own size, and the tick sits on the colour that was chosen. * Fixed (Pro): the product's Order layout panel now names any option set the quantity grid will not show, and says plainly that it will never be charged. A set that only appears under a condition still cannot ride a grid, and now it says so instead of quietly disappearing. * Changed (Pro): where a shopper takes several choices from one set, the running total names the set once and lists the choices under it with its own subtotal, rather than repeating the set's name on every line. = 1.3.3 - 2026-08-10 = * New (Pro): give a choice its own picture in the option set itself, rather than one product at a time. Build "Where do you want it printed?" once, with a photograph on Front chest, Full back and Left sleeve, and every product you put that set on shows the same pictures. A picture set against a choice on one product still wins there, exactly as a charge does. * Changed: where shoppers may take more than one choice from a set, the ones they have taken now carry a tick. A chosen choice used to look exactly like a chosen radio button, so a set they could take three of read like a set they could take one of. * Fixed: taking a second choice no longer wipes the first one's note off the page. Every choice a shopper has taken keeps its own line, each one named, so "A logo on the left chest" stays put when they add the sleeve as well. * Fixed (Pro): on a set where shoppers may take several, choosing no longer swaps the main product photograph. It followed whichever was picked last, so somebody choosing three print positions watched the garment they were buying be replaced by a picture of a sleeve. A set where they pick one, like a colour, still changes the photograph as before. * Fixed (Pro): the product's Order layout panel now says when option sets are attached to a variable product that is set to the quantity grid. The grid works across that product's variations, so the sets are neither shown nor charged; they used to disappear with nothing on screen to explain it. * Changed (Pro): the public upload and preview addresses now refuse a flood of requests from one visitor. Nothing changes for a shopper sending artwork; it stops a stranger hammering the endpoints. * Changed (Pro): a stock count on an option no longer creates a hidden product to hold it. The count now lives on the option itself, in the plugin's own records. On update, every count is carried over and every hidden product the old build created is removed from your product list automatically. The storefront behaves exactly as before: a sold-out choice says so, a sale draws the count down, and a cancel or a restocking refund gives it back. * Fixed (Pro): emptying an option's stock box now means unlimited again. Before, the box forgot the number but the cap quietly stayed, so the option kept refusing orders at whatever was last typed, with nothing on any screen to say why. * Changed (Pro): the stock box in the set editor now carries a visible Stock label beside it, rather than being identified only by its placeholder. = 1.3.2 - 2026-08-10 = * Fixed: on the product's Options panel, every choice's name was drawn one column to the left of the boxes it belongs to. The wording above a charge box, a photo button and a "Not on this product" tick therefore named the choice next door, so ticking the box under Navy took White off the product instead. Nothing was ever stored wrongly and nothing needs re-entering. If you have set charges or photos, or hidden choices, from that panel, it is worth a look to check they landed on the choices you meant. * Changed: where a set's swatch shape is set to Square or Circle, photos on its choices are kept but never shown to shoppers. The product panel now says so beside the photos you add, and names the setting that changes it, instead of taking the picture and drawing nothing. * Fixed (Pro): the quantity discounts switch had its wording pulled off the left edge of its own section on the product panel. = 1.3.1 - 2026-08-06 = * Fixed: on a page that had already finished its stylesheets, a block of styling was written out by the plugin rather than handed to WordPress. It is handed over now, so WordPress builds the tag. Nothing looks different; the plugin simply stops doing a job that is not its own. * Changed: every block of output the plugin gathers up before printing is now closed even if something in the middle of it fails. A theme or another plugin throwing an error part-way through can no longer take the rest of the page down with it. * Changed: the BossMage home page works out which of our plugins you are running instead of asking them to announce themselves. Still one shared menu, and nothing has to be agreed between plugins, so the page is right whatever versions you have installed. If you also run BundleBoss, its own home page will not list AddOnBoss until BundleBoss next updates. * Fixed: a rule that turns on when a field holds a particular answer now matches answers with an apostrophe in them, such as O'Brien. Before, the row that rule governed stayed shut for those customers and opened for everybody else. = 1.3.0 - 2026-08-05 = * Fixed (Pro): a rule that starts from a field now works on the quantity grid too. A tick box above an upload did nothing there, because the grid was leaving every conditional field off the page altogether rather than showing it locked. A rule that starts from an option set still stands down on a grid, where one line covers every colour and size at once and there is no single pick to read. * Fixed (Pro): a rule could not reach the fields it was allowed to use. A field you had just added offered nothing to point at until the product was saved and the page reloaded, so "show this only when that is ticked" looked like it did not exist. The list is now built from the questions actually on the panel. * Changed (Pro): where a question sits below the one you are writing a rule for, the editor now names it and says to drag it above, instead of quietly leaving it out of the list. * Fixed (Pro): the quantity break rows had no columns. The two boxes now fill their headings, How many and Price each, and the heading follows whether you are typing prices or percentages. * Changed (Pro): the quantity break starting points are named by the breaks they fill in, 10, 25, 50 rather than "Trade ladder". * Fixed (Pro): the swatch shape you choose on an option set now reaches the quantity grid, and the grid draws its swatches exactly as the single-pick page does, without the white ring around the colour. * Fixed: ticking "Not on this product" against a choice now strikes it through as you tick it, rather than waiting for a save. The tick box is also clearer: it used to read "Not on this one", which could mean the choice or the product. * Fixed: AddOnBoss shows its own logo on the BossMage home, its own screens and the licence screens, instead of a placeholder badge. * Fixed: the BossMage home card offers Positions, which was the one screen it left out. * Fixed: activating AddOnBoss dropped you on an error page saying you were not allowed to view it. The plugin had installed correctly and nothing was actually wrong, but it was the first thing a new user saw. Activating now opens the AddOnBoss screen. * Fixed: the colours you choose now reach the quantity grid. A shop selling by grid could set a brand colour and watch nothing change, because the grid was still drawing itself in the old built-in colour. * New: attach a whole group of option sets in one pick. Where your library keeps sets in groups, the attach menu lists them under their group and offers the lot, so a product that needs five of them takes one click instead of five. A set already on the product is skipped rather than added twice. * New: a product can refuse some choices of a shared set. Use the same Colour set everywhere and tick "Not on this product" against the two colours this product cannot be had in. The set stays one set, so a colour added to it next month is offered everywhere it was not refused. * New (Pro): a rule can start from a field, not only an option set, and a rule can hide as well as show. Tick a box and the upload goes, in the words you would use out loud: "Hidden when Use my own artwork is ticked". A rule may point at any question asked above it. * New: an info block can keep its label to itself. The name still finds the block in the editor; untick one box and the customer sees the content on its own. * Changed: the template link on an upload field says what it is and what the shopper gets, instead of being an empty box with a web address in it. * Fixed: a rule with more than one condition could shut a field the moment any choice changed, even where the rule was satisfied. * New (Pro): stock on a single choice. Type a count on one option and WooCommerce counts it from there, so eleven jars of one flavour sell out on their own while every other choice carries on. A sold-out choice says so and cannot be picked. The same count is held however the sale is dressed: the product's own page, the quantity grid, two separate cart lines, a re-order, or inside a BundleBoss bundle. * New (Pro): the quantity grid shows option photos. A set built from pictures draws its cards as pictures on the grid, not just colour swatches, so a flavour or a design is chosen by sight. * New (Pro): price breaks work on the quantity grid too, not only the single-pick page, and the band table renders alongside it so a shopper sees what the next band is worth. * Changed: a choice that costs extra says so on its own card. Where a shop hides its item prices the card shows the extra rather than the price, so a dearer choice is never a surprise at the till, and the extra is only shown where it is actually charged. * Fixed: a cart line listing repeated blocks read across the blocks instead of down one, so whoever made the thing saw the second engraving's words above the first one's font. Each block now reads whole before the next begins. * Fixed: a price break could not make a product free. A band left blank, typed as zero, or set to a hundred percent off no longer gives the item away. * Fixed: a per-item field kept charging for entries that were no longer being bought after the quantity was lowered. * Fixed: a sold-out choice now tells a screen reader it is unavailable, not just the eye. * Fixed: quantity grid cells keep an even height when a label wraps to two lines, and photo-card option rows align in an even grid. = 1.2.0 - 2026-08-03 = * New (Pro): personalisation you can see. Mark on your own product photo exactly where a logo or a line of text goes, and the customer's words are drawn onto the picture live as they type. A set can hold a photo per view, so a front and a back are two pictures and each spot picks the one it sits on. The block shows as a card, a bar that opens, or a button that opens a panel, and on a phone a slim Add to cart follows the shopper down the page. * New (Pro): quantity price breaks. Set bands so the price per item falls as the order grows. * New (Pro): ask one field several times on a single line, with "add another" or one instance per item, and gather grouped options under a heading that folds away. * Fixed: the price on the page now includes the personalisation. On a product that carries both options and positions, the live total adds the personalisation fee the cart will charge, so a shopper reads the figure they will pay. * Fixed: a colour or photo option set stays as swatches however many it holds. Past a dozen options it used to fall back to a dropdown that hid every swatch; now the swatches survive, and editing the set for something else no longer loses them. = 1.1.0 - 2026-07-30 = * New (Pro): file uploads gained the round they were missing. A file-type ladder from images to everything, one odd extra format when you need it, a drag and drop area with a real progress bar, a smallest accepted resolution that warns or refuses before you print, width and height bounds, a smallest number of files, crop and rotate and resize applied as the file arrives, a filename pattern built from tokens, a folder per order, artwork attached to the order email, and every file on an order as one zip. * New (Pro): price tables grew up. Bands read the way the trade prints them ("up to 600", "601-699", "501+", fractions), a shopper can type a measurement instead of picking, each axis decides on its own whether to round up or down, a minimum charge floors every cell, and a pasted cost grid can carry your margin. Overlapping bands are now pointed out instead of quietly picking one. * Changed: price tables are a Pro feature, alongside measured sizes. Both price the same made-to-measure product, one from a grid and one from a rate, so they belong together. * Fixed: a typed size in the wrong unit is refused by name rather than priced as the wrong number, and a size past the widest band is refused instead of being given the top band's price. * Fixed (Pro): a multi-file upload field showed only its first file on the order, so the rest were invisible to whoever had to make the thing. * Fixed: switching a price table between one option and two no longer destroys the grid you had typed. * Fixed: the product options panel no longer breaks the product editor when the upload module is absent. * Changed: the plugin's screens sit lower in the admin menu, below Settings, and its scripts and styles now load through WordPress's own enqueue system. = 1.0.0 = * First release. Reusable option sets with an optional charge per choice, shown as swatches, buttons or a dropdown. Custom fields (text, message, number, dropdown, tick box, section label, info block), each optional or required and each able to charge once or for each item. Grouped options under their own headings. A native cart, order and email path, with every charge priced and taxed through WooCommerce itself. Shares one option-set library with BundleBoss and runs safely alongside it.