{"id":347224,"date":"2026-08-07T13:12:18","date_gmt":"2026-08-07T13:12:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/addonboss-product-options-add-ons-personalisation-for-woocommerce\/"},"modified":"2026-09-02T08:35:17","modified_gmt":"2026-09-02T08:35:17","slug":"addon-boss","status":"publish","type":"plugin","link":"https:\/\/ne.wordpress.org\/plugins\/addon-boss\/","author":23517141,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.5.0","stable_tag":"1.5.0","tested":"7.1","requires":"6.4","requires_php":"8.0","requires_plugins":null,"header_name":"AddOnBoss - Product Options, Add-Ons & Personalisation for WooCommerce","header_author":"Stefanos Konstantinou","header_description":"Reusable option sets, custom fields, add-ons and personalisation on any WooCommerce product - no bundle required. Runs happily alongside BundleBoss.","assets_banners_color":"7530cc","last_updated":"2026-09-02 08:35:17","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/bossmage.com\/addonboss\/","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":450,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.3.1":{"tag":"1.3.1","author":"bundleboss","date":"2026-08-07 16:38:53","revision":3638132},"1.3.2":{"tag":"1.3.2","author":"bundleboss","date":"2026-08-10 16:05:53","revision":3640843},"1.3.5":{"tag":"1.3.5","author":"bundleboss","date":"2026-08-15 15:39:31","revision":3648797},"1.3.6":{"tag":"1.3.6","author":"bundleboss","date":"2026-08-17 23:56:21","revision":3651843},"1.3.8":{"tag":"1.3.8","author":"bundleboss","date":"2026-08-31 13:37:51","revision":3674351},"1.4.0":{"tag":"1.4.0","author":"bundleboss","date":"2026-08-30 13:18:33","revision":3672569},"1.4.1":{"tag":"1.4.1","author":"bundleboss","date":"2026-08-31 13:54:55","revision":3674391},"1.5.0":{"tag":"1.5.0","author":"bundleboss","date":"2026-09-02 08:35:17","revision":3677512}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3637889,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3637889,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3637889,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3637889,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{"blueprint.json":{"filename":"blueprint.json","revision":3677926,"resolution":false,"location":"assets","locale":"","contents":"{\"$schema\":\"https:\\\/\\\/playground.wordpress.net\\\/blueprint-schema.json\",\"landingPage\":\"\\\/product\\\/custom-printed-tee\\\/\",\"preferredVersions\":{\"php\":\"8.2\",\"wp\":\"latest\"},\"phpExtensionBundles\":[\"kitchen-sink\"],\"features\":{\"networking\":true},\"steps\":[{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"woocommerce\"}},{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"addon-boss\"},\"options\":{\"activate\":true}},{\"step\":\"installTheme\",\"themeData\":{\"resource\":\"wordpress.org\\\/themes\",\"slug\":\"kadence\"}},{\"step\":\"login\",\"username\":\"admin\"},{\"step\":\"runPHP\",\"code\":\"<?php require_once '\\\/wordpress\\\/wp-load.php'; update_option( 'woocommerce_coming_soon', 'no' ); update_option( 'blogname', 'AddOnBoss Demo' ); update_option( 'woocommerce_currency', 'GBP' ); $p = new WC_Product_Simple(); $p->set_name( 'Custom Printed Tee' ); $p->set_slug( 'custom-printed-tee' ); $p->set_regular_price( '14.00' ); $p->set_stock_status( 'instock' ); $p->set_short_description( 'One tee, printed your way. Pick a colour, set the print size, add a name if you want one, and the price follows every choice you make.' ); $p->set_description( '<p>Every shirt is printed to order in our studio, one at a time. Choose one of twelve shirt colours, decide how big the print should run, and add a name or a short line of text. Metallic and neon inks are mixed on site.<\\\/p><p>Tell us the day you need it by and it leaves us confirmed for that date. Most orders are printed within three working days.<\\\/p>' ); $pid = $p->save(); if ( function_exists( 'addon_boss_save_option_set' ) && function_exists( 'addon_boss_save_product_option_config' ) ) { $colour = addon_boss_save_option_set( array( 'name' => 'Shirt colour', 'options' => array( array( 'key' => 'op_white', 'label' => 'White', 'swatch' => '#f4f4f0', 'delta' => 0 ), array( 'key' => 'op_black', 'label' => 'Black', 'swatch' => '#1f2430', 'delta' => 0 ), array( 'key' => 'op_heather', 'label' => 'Heather grey', 'swatch' => '#b9bcbf', 'delta' => 0 ), array( 'key' => 'op_navy', 'label' => 'Navy', 'swatch' => '#1f2a44', 'delta' => 0 ), array( 'key' => 'op_royal', 'label' => 'Royal blue', 'swatch' => '#1e4fa0', 'delta' => 0 ), array( 'key' => 'op_red', 'label' => 'Red', 'swatch' => '#c0392b', 'delta' => 0 ), array( 'key' => 'op_forest', 'label' => 'Forest green', 'swatch' => '#1e5631', 'delta' => 0 ), array( 'key' => 'op_burgundy', 'label' => 'Burgundy', 'swatch' => '#6d1f2c', 'delta' => 0 ), array( 'key' => 'op_olive', 'label' => 'Olive', 'swatch' => '#6b7f3f', 'delta' => 0 ), array( 'key' => 'op_teal', 'label' => 'Teal', 'swatch' => '#0f766e', 'delta' => 0 ), array( 'key' => 'op_yellow', 'label' => 'Yellow', 'swatch' => '#e7c122', 'delta' => 0 ), array( 'key' => 'op_sand', 'label' => 'Sand', 'swatch' => '#d8c9a3', 'delta' => 0 ) ) ) ); $size = addon_boss_save_option_set( array( 'name' => 'Print size', 'options' => array( array( 'key' => 'op_chest', 'label' => 'Small chest print', 'delta' => 0 ), array( 'key' => 'op_front', 'label' => 'Big front print', 'delta' => 3.5 ), array( 'key' => 'op_both', 'label' => 'Front and back', 'delta' => 6 ) ) ) ); $finish = addon_boss_save_option_set( array( 'name' => 'Finishing touches', 'multi' => true, 'max' => 2, 'options' => array( array( 'key' => 'op_label', 'label' => 'Inside neck label', 'delta' => 1.5 ), array( 'key' => 'op_fold', 'label' => 'Folded with ribbon', 'delta' => 2.5 ), array( 'key' => 'op_loop', 'label' => 'Hanging loop', 'delta' => 1 ) ) ) ); $product = wc_get_product( $pid ); addon_boss_save_product_option_config( $product, array( array( 'row_type' => 'group', 'label' => 'Your shirt', 'children' => array( array( 'set' => $colour, 'required' => true ), array( 'set' => $size, 'required' => true ) ) ), array( 'row_type' => 'group', 'label' => 'Your print', 'children' => array( array( 'row_type' => 'field', 'field' => array( 'label' => 'Name or text to print', 'type' => 'text', 'fee' => 4, 'maxlength' => 20 ) ), array( 'row_type' => 'field', 'field' => array( 'label' => 'Ink colour', 'type' => 'select', 'options' => array( array( 'label' => 'Black' ), array( 'label' => 'White' ), array( 'label' => 'Red' ), array( 'label' => 'Orange' ), array( 'label' => 'Yellow' ), array( 'label' => 'Kelly green' ), array( 'label' => 'Forest green' ), array( 'label' => 'Sky blue' ), array( 'label' => 'Royal blue' ), array( 'label' => 'Navy' ), array( 'label' => 'Purple' ), array( 'label' => 'Pink' ), array( 'label' => 'Metallic gold', 'fee' => 2.5 ), array( 'label' => 'Metallic silver', 'fee' => 2.5 ), array( 'label' => 'Neon yellow', 'fee' => 1.5 ), array( 'label' => 'Neon pink', 'fee' => 1.5 ) ) ) ), array( 'set' => $finish ) ) ), array( 'row_type' => 'group', 'label' => 'When you need it', 'children' => array( array( 'row_type' => 'field', 'field' => array( 'label' => 'Needed by', 'type' => 'date', 'required' => true ) ), array( 'row_type' => 'field', 'field' => array( 'label' => '', 'type' => 'html', 'content' => 'Printed to order in three working days. Tell us your date and we confirm it when the order lands.' ) ) ) ) ) ); $product->save(); } require_once ABSPATH . 'wp-admin\\\/includes\\\/media.php'; require_once ABSPATH . 'wp-admin\\\/includes\\\/file.php'; require_once ABSPATH . 'wp-admin\\\/includes\\\/image.php'; $tmp = download_url( 'https:\\\/\\\/demo.bossmage.com\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/tshirt-white.png' ); if ( ! is_wp_error( $tmp ) ) { $aid = media_handle_sideload( array( 'name' => 'tshirt-white.png', 'tmp_name' => $tmp ), 0 ); if ( ! is_wp_error( $aid ) ) { set_post_thumbnail( $pid, $aid ); } }\"}]}"}},"all_blocks":[],"tagged_versions":["1.3.1","1.3.2","1.3.5","1.3.6","1.3.8","1.4.0","1.4.1","1.5.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3637889,"resolution":"1","location":"assets","locale":"","width":1920,"height":1500},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3637889,"resolution":"2","location":"assets","locale":"","width":1920,"height":1500},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3637889,"resolution":"3","location":"assets","locale":"","width":1920,"height":1500},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3637889,"resolution":"4","location":"assets","locale":"","width":1920,"height":1500},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3637889,"resolution":"5","location":"assets","locale":"","width":1800,"height":1520}},"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."}},"plugin_section":[],"plugin_tags":[149840,229939,155785,163452,159389],"plugin_category":[],"plugin_contributors":[268001],"plugin_business_model":[],"class_list":["post-347224","plugin","type-plugin","status-publish","hentry","plugin_tags-product-addons","plugin_tags-product-fields","plugin_tags-product-options","plugin_tags-woocommerce-product-addons","plugin_tags-woocommerce-product-options","plugin_contributors-bundleboss","plugin_committers-bundleboss"],"banners":{"banner":"https:\/\/ps.w.org\/addon-boss\/assets\/banner-772x250.png?rev=3637889","banner_2x":"https:\/\/ps.w.org\/addon-boss\/assets\/banner-1544x500.png?rev=3637889","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/addon-boss\/assets\/icon-128x128.png?rev=3637889","icon_2x":"https:\/\/ps.w.org\/addon-boss\/assets\/icon-256x256.png?rev=3637889","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/addon-boss\/assets\/screenshot-1.png?rev=3637889","caption":"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."},{"src":"https:\/\/ps.w.org\/addon-boss\/assets\/screenshot-2.png?rev=3637889","caption":"Choices shown as photographs rather than names, on a product from a different trade entirely. One flavour costs a little more and says so."},{"src":"https:\/\/ps.w.org\/addon-boss\/assets\/screenshot-3.png?rev=3637889","caption":"Eighteen colours on one product, two of them two-tone, all from a single set shared across the shop."},{"src":"https:\/\/ps.w.org\/addon-boss\/assets\/screenshot-4.png?rev=3637889","caption":"The quantity grid: every colour ordered in one go, with the price per item dropping as the order grows."},{"src":"https:\/\/ps.w.org\/addon-boss\/assets\/screenshot-5.png?rev=3637889","caption":"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."}],"raw_content":"<!--section=description-->\n<p>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.<\/p>\n\n<p>AddOnBoss adds that middle ground, <strong>without generating a single variation<\/strong>. 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.<\/p>\n\n<p>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.<\/p>\n\n<p><strong>Try it live:<\/strong> <a href=\"https:\/\/demo.bossmage.com\">demo.bossmage.com<\/a> 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.<\/p>\n\n<h4>What you can sell with it<\/h4>\n\n<ul>\n<li><strong>A gift shop.<\/strong> An engraved board with a finish to choose, a name to engrave and gift wrap as an optional extra, each carrying its own charge.<\/li>\n<li><strong>A sweet shop.<\/strong> 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).<\/li>\n<li><strong>A signage, framing or blinds shop.<\/strong> 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).<\/li>\n<li><strong>A workwear or print shop.<\/strong> 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).<\/li>\n<li><strong>Any shop with a variation problem.<\/strong> Five colours by five sizes offered as choices, instead of twenty-five variations to build, price and keep in stock.<\/li>\n<\/ul>\n\n<h4>What makes AddOnBoss different<\/h4>\n\n<p><strong>A library, not a form on every product.<\/strong> 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.<\/p>\n\n<p><strong>The free plugin is a whole product, not a taste of one.<\/strong> 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.<\/p>\n\n<p><strong>Pro handles the jobs that usually need a second plugin.<\/strong> 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.<\/p>\n\n<p><strong>One engine, two plugins.<\/strong> 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.<\/p>\n\n<p><strong>And the money is right.<\/strong> 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.<\/p>\n\n<h4>What the free plugin does<\/h4>\n\n<p>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.<\/p>\n\n<ul>\n<li><strong>Reusable option sets<\/strong>: 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.<\/li>\n<li><strong>Choose one or choose several<\/strong>: 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.<\/li>\n<li><strong>Custom fields<\/strong>: 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.<\/li>\n<li><strong>A colour field<\/strong>: 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.<\/li>\n<li><strong>A price they choose<\/strong>: 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.<\/li>\n<li><strong>A hidden note for your own orders<\/strong>: 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.<\/li>\n<li><strong>Long lists search themselves<\/strong>: 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.<\/li>\n<li><strong>Groups<\/strong>: gather related options under their own headings, so a long list reads in sections instead of one run.<\/li>\n<li><strong>A product can refuse a choice<\/strong>: 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.<\/li>\n<li><strong>A correct cart and order path<\/strong>: options join the line through WooCommerce's own pricing and tax, and the picks read on the order screen, in emails and on reorder.<\/li>\n<\/ul>\n\n<h4>Part of the BossMage family<\/h4>\n\n<p>AddOnBoss is made by <a href=\"https:\/\/bossmage.com\/\">BossMage<\/a>, alongside BundleBoss.<\/p>\n\n<p>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.<\/p>\n\n<p>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.<\/p>\n\n<p>Guides and screenshots for every feature are at <a href=\"https:\/\/bossmage.com\/docs\/addonboss\/\">bossmage.com\/docs\/addonboss<\/a>.<\/p>\n\n<h4>What AddOnBoss Pro adds<\/h4>\n\n<p><a href=\"https:\/\/bossmage.com\/addonboss\/#pricing\">AddOnBoss Pro<\/a> is a separate paid plugin. The Solo plan has a 14-day trial, no card needed. It adds:<\/p>\n\n<ul>\n<li><strong>Options on variable products<\/strong>, so a parent can offer sets alongside its own variations<\/li>\n<li><strong>A quantity grid<\/strong>: order a whole range at once, every colour by every size, as one order<\/li>\n<li><strong>Quantity discounts<\/strong>: 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<\/li>\n<li><strong>File and artwork upload<\/strong>, with a confined upload area, resolution checks before you print, and GDPR export and erase<\/li>\n<li><strong>Print areas and product sides<\/strong>, with the customer's name or logo drawn on your own product photo as they type<\/li>\n<li><strong>Conditional choices<\/strong>: reveal or hide a set or a field depending on another answer, written in the words you would say out loud<\/li>\n<li><strong>Measured sizes<\/strong>: price by length, area or volume from the dimensions a customer types<\/li>\n<li><strong>Price tables<\/strong>: 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<\/li>\n<li><strong>Stock per option<\/strong>: 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<\/li>\n<li><strong>A photo per choice<\/strong> that swaps the product image when they pick it<\/li>\n<li><strong>Per-letter, percentage and per-unit-entered pricing<\/strong> for add-on fees<\/li>\n<li><strong>Ask a field more than once<\/strong>: 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<\/li>\n<li><strong>Folding sections<\/strong> 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<\/li>\n<\/ul>\n\n<p>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.<\/p>\n\n<h4>Requirements<\/h4>\n\n<ul>\n<li>WordPress 6.4 or newer<\/li>\n<li>WooCommerce 8.0 or newer, tested to 10.0<\/li>\n<li>PHP 8.0 or newer<\/li>\n<\/ul>\n\n<p>Declared compatible with WooCommerce High Performance Order Storage and with the block cart and checkout.<\/p>\n\n<h4>Tell us what you need<\/h4>\n\n<p>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 <a href=\"https:\/\/bossmage.com\/roadmap\/\">bossmage.com\/roadmap<\/a>.<\/p>\n\n<h3>Privacy<\/h3>\n\n<p>AddOnBoss does not collect, store or transmit any personal data of its own.<\/p>\n\n<ul>\n<li>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.<\/li>\n<li>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.<\/li>\n<li>The plugin sets no advertising or tracking cookies.<\/li>\n<\/ul>\n\n<h4>Third-party services<\/h4>\n\n<p>The free version of AddOnBoss does not connect to any external service or send any data off your site.<\/p>\n\n<p>AddOnBoss Pro is a separate, paid plugin that uses Freemius for checkout, licensing and updates. None of that is included in this free version.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin to <code>\/wp-content\/plugins\/<\/code> or install it from the Plugins screen, and activate it.<\/li>\n<li>WooCommerce must be active.<\/li>\n<li>Open Products, edit any product, and use the Product Options panel to attach an option set or add fields.<\/li>\n<li>Build and reuse option sets from the Option Sets library in the menu.<\/li>\n<\/ol>\n\n<p>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.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20is%20this%20different%20from%20using%20a%20variable%20product%3F\"><h3>How is this different from using a variable product?<\/h3><\/dt>\n<dd><p>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.<\/p><\/dd>\n<dt id=\"how%20do%20i%20add%20options%20without%20creating%20variations%3F\"><h3>How do I add options without creating variations?<\/h3><\/dt>\n<dd><p>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.<\/p><\/dd>\n<dt id=\"will%20it%20create%20dozens%20of%20variations%3F\"><h3>Will it create dozens of variations?<\/h3><\/dt>\n<dd><p>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.<\/p><\/dd>\n<dt id=\"are%20the%20extra%20charges%20taxed%20correctly%3F\"><h3>Are the extra charges taxed correctly?<\/h3><\/dt>\n<dd><p>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.<\/p><\/dd>\n<dt id=\"can%20i%20use%20the%20same%20option%20set%20on%20more%20than%20one%20product%3F\"><h3>Can I use the same option set on more than one product?<\/h3><\/dt>\n<dd><p>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.<\/p><\/dd>\n<dt id=\"do%20the%20customer%27s%20choices%20show%20on%20the%20order%3F\"><h3>Do the customer's choices show on the order?<\/h3><\/dt>\n<dd><p>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.<\/p><\/dd>\n<dt id=\"why%20did%20the%20express%20payment%20buttons%20disappear%20from%20a%20product%20page%3F\"><h3>Why did the express payment buttons disappear from a product page?<\/h3><\/dt>\n<dd><p>On products with required options, 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, 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.<\/p><\/dd>\n<dt id=\"do%20i%20need%20bundleboss%20to%20use%20addonboss%3F\"><h3>Do I need BundleBoss to use AddOnBoss?<\/h3><\/dt>\n<dd><p>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.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20variable%20products%3F\"><h3>Does it work with variable products?<\/h3><\/dt>\n<dd><p>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.<\/p><\/dd>\n<dt id=\"will%20it%20slow%20my%20product%20page%20down%3F\"><h3>Will it slow my product page down?<\/h3><\/dt>\n<dd><p>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.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20the%20block%20cart%20and%20checkout%3F\"><h3>Does it work with the block cart and checkout?<\/h3><\/dt>\n<dd><p>Yes. AddOnBoss declares compatibility with the block cart and checkout, and with WooCommerce High Performance Order Storage.<\/p><\/dd>\n<dt id=\"can%20customers%20upload%20a%20logo%20or%20a%20file%3F\"><h3>Can customers upload a logo or a file?<\/h3><\/dt>\n<dd><p>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.<\/p><\/dd>\n<dt id=\"how%20do%20i%20price%20something%20by%20its%20size%3F\"><h3>How do I price something by its size?<\/h3><\/dt>\n<dd><p>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.<\/p><\/dd>\n<dt id=\"can%20one%20choice%20sell%20out%20while%20the%20others%20stay%20on%20sale%3F\"><h3>Can one choice sell out while the others stay on sale?<\/h3><\/dt>\n<dd><p>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.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20my%20settings%20if%20i%20stop%20paying%20for%20pro%3F\"><h3>What happens to my settings if I stop paying for Pro?<\/h3><\/dt>\n<dd><p>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.<\/p><\/dd>\n<dt id=\"how%20long%20does%20setup%20take%3F\"><h3>How long does setup take?<\/h3><\/dt>\n<dd><p>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.<\/p><\/dd>\n<dt id=\"what%20is%20removed%20if%20i%20uninstall%3F\"><h3>What is removed if I uninstall?<\/h3><\/dt>\n<dd><p>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.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.5.0 - 2026-09-02<\/h4>\n\n<ul>\n<li>New: five more field types. Colour swatches with a Custom entry, a colour price with chips, an e-mail address that nudges on an obvious typo, a web address, and a hidden field only the shop sees. Fourteen types in all, and a long list of choices now offers a searchable box rather than a wall.<\/li>\n<li>New (Pro): price adjustments on look-up tables. A trigger adds or deducts a percentage or an amount, once or for each, on top of the price the grid gave. The adjustment is a named line in the cart and on the order, so a shopper and the shop see the same reason for the same money.<\/li>\n<li>New (Pro): conditions written as a sentence. Show or hide a field or an option set when other answers say so: any of these, has been answered, more than, less than, exactly. Groups read as OR of AND, and a rule whose trigger is deleted pauses rather than quietly emptying itself.<\/li>\n<li>New (Pro): the shopper's design is shown everywhere it should be. On the cart and checkout blocks, on the order and account screens, in the shop's emails, and as a badge on the cart line that opens the full picture.<\/li>\n<li>New (Pro): express checkout stands down where it cannot work. On a product with required options the wallet buttons that skip the product page are hidden, because a shopper who taps one buys something the shop cannot make. A product whose options are all optional keeps them. Filterable with addon_boss_allow_express_pay.<\/li>\n<li>New: the running total follows on a quantity grid too. The slim Grand total bar and its tap-to-open receipt were only ever on the one-at-a-time page. A grid is a bulk-order screen with a long list and a button at the bottom, so the bar now carries the grid's own total, its order summary and its Add button, and stays away until there is something to add.<\/li>\n<li>New: a merchant decides whether picking a choice replaces the product photo. On for a set whose photos are the product, like colours. Off for a set whose photos explain the choice, like cutting shapes, where the pictures belong on the cards and the product photo should stay put.<\/li>\n<li>New: AddOnBoss speaks nine languages. Spanish (Spain, Mexico, Colombia, Peru, Argentina), Italian, French (France, Canada) and Brazilian Portuguese ship with the plugin.<\/li>\n<li>Changed: Positions are Print areas, in every word a merchant reads. Nothing stored changes and nothing a shopper sees changes.<\/li>\n<li>Changed: copying a setup asks about option sets and fields separately. They were one tick, and taking either took both, writing over whatever the receiving product already had. Ticking one now keeps the other.<\/li>\n<li>Changed: Custom size has a name and a place of its own, named after the button a shopper taps, instead of a switch folded inside Advanced options.<\/li>\n<li>Changed: long option panels fold as one card, and a shut fold says what is inside it.<\/li>\n<li>Fixed: an option photo is shown whole. A choice card cropped every picture to its own shape, so a portrait garment shot lost its collar and hem and a wide diagram lost its top and bottom. The card also asked WordPress for a square-cropped size, so a picture could arrive already cut before any styling ran.<\/li>\n<li>Fixed: a measured size named by its dimensions no longer prints them twice, and a size chip's name and its dimensions have a gap between them.<\/li>\n<li>Fixed: a measured set offering neither ready-made sizes nor a custom size left a shopper an empty box under a heading. Saving now says so, and names the switch that fixes it.<\/li>\n<li>Fixed: translations were never loaded. The plugin declared a text domain and a languages folder and then never asked WordPress to read them, so a shop in any language got English whatever it installed.<\/li>\n<\/ul>\n\n<h4>1.4.1 - 2026-08-31<\/h4>\n\n<ul>\n<li>New: the option set editor shows its work. A preview panel under the editor renders the set exactly as a product page will, choices, photos, prices and the receipt included, and it redraws itself as you type, before anything is saved. Two tabs: the unsaved draft, and the set as last saved.<\/li>\n<li>Fixed: a shop selling in a currency without decimal places, such as SEK, JPY, HUF or ISK, saw option money printed with two decimals it does not use. The live total read 4 500,00 kr where the rest of the page read 4 500 kr. A zero-decimal setting, and a deliberately blank thousands separator, are now honoured as the merchant's choice.<\/li>\n<li>Changed: the plugin's own links point at the pages that exist today, and the translation template tells translators where to report, instead of naming a build directory.<\/li>\n<\/ul>\n\n<h4>1.4.0 - 2026-08-23<\/h4>\n\n<ul>\n<li>New (Pro): quantity break lists. Write a ladder of percentage breaks once, name it, and pick it by name on any product's quantity discount panel. The panel shows the ladder worked out in that product's own prices, editing a list updates every product using it, and deleting one hands each product back to its own rows. In the editor, every row says how it will be read as you type, so a mistyped break is caught before it is saved.<\/li>\n<li>Changed (Pro): quantity discounts now discount each kind of money under its own tick, option prices per item and print and embroidery prices per item. A charge made once per order never tiers. Shops that had the old single switch on keep both ticked, so nobody's prices move on update.<\/li>\n<li>New: start from another product. Take a configured product's setup onto the product being edited, searching your configured products by name or SKU and seeing what each carries before taking it. If the page holds unsaved work, it asks before replacing anything.<\/li>\n<li>New: the Grand total follows the shopper down long option pages as a slim bar, and tapping it unfolds the receipt's own lines without leaving the page. On phones the bar sits above the theme's own bottom bar instead of underneath it.<\/li>\n<li>Fixed: with a VAT toggle active, option and embroidery money now shows both price bases everywhere the page quotes it: the grand total, every receipt line, the quantity table and the \"add N more\" nudge move together on the switch.<\/li>\n<li>Fixed: an option row where not every choice carries a colour now renders as uniform text pills instead of one lone colour tile among plain buttons.<\/li>\n<li>New (Pro): colour and size stock are counted together. A size the chosen colour has none of is dimmed, and a combination the supplier's range does not contain is not offered at all.<\/li>\n<li>New (Pro): customer uploads, front and back artwork included, feed the artwork of a StockBoss print order on shops running both plugins.<\/li>\n<li>New: one press folds the option-set library to its group headers, and sets built by StockBoss are named SKU first so a long library reads in order.<\/li>\n<li>Fixed (Pro): a page holding several optioned products rendered a personalisation panel more than once. One panel per page, however the page is built.<\/li>\n<li>Changed: admin stylesheets are versioned by their file clocks, so a changed screen is never served stale by a caching browser.<\/li>\n<li>Fixed (Pro): on a block theme running WooCommerce 11, the quantity grid arrived dead. Its steppers did nothing and Add to basket never woke up, because the page put the grid's own script through a filter that turned every &amp;&amp; into an HTML entity and stopped the script before its first line. The script now loads from the footer, out of the filtered region entirely, and a quick view or any other fragment that arrives after the footer still gets it inline so nothing is left without it. Checked on sixteen themes, block and classic alike.<\/li>\n<li>Fixed (Pro): the bottom row of a colour's size panel could be cut off, losing part of the steppers, whenever those cells carried an extra line such as a size surcharge. Rows now size to their own content.<\/li>\n<li>Changed (Pro): a product showing the quantity grid no longer prints the product-wide \"in stock\" line above it. That figure is every colour and size added together, so it dwarfs anything a shopper can actually order and contradicts the grid underneath, which counts each one separately.<\/li>\n<\/ul>\n\n<h4>1.3.7 - 2026-08-18<\/h4>\n\n<ul>\n<li>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.<\/li>\n<\/ul>\n\n<h4>1.3.6 - 2026-08-18<\/h4>\n\n<ul>\n<li>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.<\/li>\n<li>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.<\/li>\n<li>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.<\/li>\n<li>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.<\/li>\n<li>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.<\/li>\n<li>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.<\/li>\n<\/ul>\n\n<h4>1.3.5 - 2026-08-15<\/h4>\n\n<ul>\n<li>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.<\/li>\n<li>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.<\/li>\n<li>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.<\/li>\n<li>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.<\/li>\n<li>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.<\/li>\n<\/ul>","raw_excerpt":"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.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ne.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/347224","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ne.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ne.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ne.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=347224"}],"author":[{"embeddable":true,"href":"https:\/\/ne.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/bundleboss"}],"wp:attachment":[{"href":"https:\/\/ne.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=347224"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ne.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=347224"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ne.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=347224"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ne.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=347224"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ne.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=347224"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ne.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=347224"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}