Plugin Directory

Product Options and Price Calculation Formulas for WooCommerce – Uni CPO

Product Options and Price Calculation Formulas for WooCommerce – Uni CPO



Product Options and Price Calculation Formulas for WooCommerce – Uni CPO (Product Addons) provides a robust and reliable solution for adding extra product options (form input fields) to your WooCommerce product pages. Whether you are selling shutters, custom sized rugs or configurable mesh banners Uni CPO has you covered!

Empower your customers to personalize their products with a wide range of extra choices, input fields, and more. These product addons can also adjust the final product price dynamically. The extra form data submitted by customers is displayed on the cart and checkout pages and securely stored in the backend order.

Uni CPO stands out with its solid architecture, ensuring extensibility and dependability. It features the market’s only visual form builder, making it easy to design your product forms.

Uni CPO is the premier modern free WooCommerce Product Addons alternative, offering unique features not found in other similar plugins. Experience unparalleled flexibility and reliability with Uni CPO!

Demo >> | Documentation >>

It takes only 3 minutes to personalize a WC product and implement price calculation based on the extra product options and any maths formula you like:

Add extra options to your products, display them conditionally, give a possibility for your customers to customize products, to personalize them by adding highly dynamic info like dimensions, custom labels, comments. Moreover, create a unique scheme for price calculation based on custom options added!

Main features

  • Visual form builder – Design the look of your form in an easy and smooth way!
  • Custom product option types – Over 10 different types, including text, range slider, radio and checkboxes in classic, text/image button modes, datepicker, file upload, table with clickable cells, and more!
  • Non-option variables (NOV) – Synthetic variables that can hold either a specific value or a mathematical formula as their value. Docs >>
  • Table pricing functionality – Import prices from a CSV file. Docs >>
  • Wholesale pricing functionality!
  • Use any mathematical formula for the price calculation of your product. Enjoy endless possibilities of price calculation through combinations of option-based variables and NOVs!
  • Formula conditional logic – Apply different mathematical formulas based on the values of custom options! Docs >>
  • Fields conditional logic – Display or hide certain custom options based on the values of other custom options and/or NOVs. Docs >>
  • Validation for value of product custom options Docs >>
  • Dynamic calculation of weight and dimensions based on product options’ values! Docs >>
  • Apply different shipping classes based on the chosen product options! Docs >>
  • Cart discounts! Docs >>
  • Dynamic SKU generation and stock management for products with custom options. Import/export stock data using a CSV file. Via paid add-on for Uni CPO!

Demo and Docs

Demo >> | Documentation >>

Demo – Try By Yourself!

DEMO site with PRO version installed (unlocked all the features)
Use the following credentials to log in and try by yourself:
* username: demo
* password: demo
login URL

Pro version of the plugin is available here
The official FB group Builderians

Uni CPO supports ONLY these product type: ‘simple’! But why you ever need any variable products when this plugin exists, right? 🙂


  • screenshot-1.png
  • screenshot-2.png
  • screenshot-3.png
  • screenshot-4.png
  • screenshot-5.png
  • screenshot-6.png
  • screenshot-7.png


Minimum Requirements

  • WooCommerce 7.1+
  • WordPress 5.9 or greater
  • PHP version 7.4 or greater

Automatic installation

To do an automatic install of Uni CPO, log in to your WordPress dashboard, navigate to the Plugins menu and click Add New.

In the search field type “Uni CPO” and click Search Plugins. Once you’ve found our WC extension plugin you can view details about it such as the point release, rating and description. Most importantly of course, you can install it by simply clicking “Install Now”.

Manual installation

  1. Upload the plugin files to the /wp-content/plugins/uni-woo-custom-product-options directory, or install the plugin through the WordPress plugins screen directly.
  2. Activate the plugin through the Plugins screen in WordPress
  3. Use the WooCommerce->Uni CPO Settings screen to configure the plugin


Q: Do I need to back up before update?

A: Yes, always and ever! Back up your files as well as database. Always test new versions of the plugin on test/stage server first!


17 de julio de 2024
I have been using this powerful plugin for years. It allows very complex pricing structures that I needed for my particular niche. Support are quick and helpful. The developers have kept it updated and added new features.
11 de julio de 2024
I trust this plugin as the backbone of my ecommerce store. Our highly customizable products are made possible with UNI CPO. I considered other plugins before settling on this one, its features were more powerful than most any other plugin widely available. What’s more is that the developers are still working to make it even better. The tech support is great as well. Highly recommended.
3 de julio de 2024
You can create very complex scenarios with ease. Using the actions and filters can help create very complicated pricing models. The support team is responsive and top notch!
21 de febrero de 2023
No limits, or almost! This is sometimes done with a bit of laborious input in the interface.But it allows you to go further than many other plugins that I had to abandon.
Leer todas las 76 reseñas

Colaboradores y desarrolladores

«Product Options and Price Calculation Formulas for WooCommerce – Uni CPO» es un software de código abierto. Las siguientes personas han colaborado con este plugin.


«Product Options and Price Calculation Formulas for WooCommerce – Uni CPO» ha sido traducido a 1 idioma local. Gracias a los traductores por sus contribuciones.

Traduce «Product Options and Price Calculation Formulas for WooCommerce – Uni CPO» a tu idioma.

¿Interesado en el desarrollo?

Revisa el código , echa un vistazo al repositorio SVN o suscríbete al registro de desarrollo por RSS.

Registro de cambios


  • Fixed: Appearance of PHP warnings on the product page


  • Added: compatibility fix for YITH «request a quote»
  • Improved: more reliable discovering of proper main product image tag (used for image conditional logic/imagify)
  • Added: «Conditional logic» for Row module
  • Added: «First day of week» setting for «Datepicker» option


  • Added: integration with Flexible Custom SKU add-on
  • Improved: simplified the workflow working with the form builder – removed «saved to DB» checkbox; now settings are being saved to DB always!


  • Added: CSS Flexbox for Columns and Rows


  • Added: new onboarding script and demo configs importer


  • Fixed: issue from the previous version when not all cases where tested properly


  • Fixed: a bug with «Rules» and «Conditional logic» for Select option
  • Fixed: compatibility with PHP 8.3;


  • Added: compatibility with Bricks theme
  • Improved: compatibility with WooCommerce > 8.6
  • Updated dependencies


  • Fixed: a bug related to «Add/Edit CPO option(s)» button on order details page and HPOS


  • Updated: Freemius SDK to 2.6.0


  • Added: shipping class conditional applying


  • Fixed: displaying dynamic data suboptions’ labels
  • Fixed: some PHP warnings


  • Improved: The plugin prevents ordering the product again (from history) if one or more suboptions are missing
  • Added: support for HPOS


  • Fixed: a bug related to displaying qty based discounts
  • Fixed: a bug related to ‘woocommerce_add_to_cart_redirect’ filter


  • Fixed: a bug with suboptions conditional rules for Checkbox option


  • Fixed: a bug with suboptions conditional rules for Select option
  • Updated: Freemius SDK to the latest version


  • Fixed: a bug related to editing qty value for cart item that is set as an option
  • Added: bulk edit functionality


  • Improved: Added new option «Own role» for «User role when edit orders»
  • Added: setting to control image changing in the cart when you are using «Imagify», «Colorify», «Image Conditional Logic» functionalities


  • Hotfix: fixed PHP error visible on new product creation


  • Improved: proper taxes handling for cpo enabled products when adding order manually
  • Fixed: uploading files with «‘» in the name


  • Improved: error message when importing CSV with suboptions data
  • Fixed: some small bugs


  • Fixed: the issue with importing configurations
  • Improved: added disabling of the «add to cart» button while a file is being uploaded in File Upload option


  • Fixed: issue with ramda.js dependency


  • Fixed: another issue with PHP 8 compatibility


  • Fixed: issue with PHP 8 compatibility
  • Improved: moved JS lib dependency inside the plugin, therefore removed the link to CDN
  • Fixed: issues with proper image displaying for suboptions in some cases


  • Added: support for «woocommerce price based on countries» plugin
  • Security fix


  • Fixed: bug with ‘cpo_product_layered_image’ field
  • Fixed: bug with wrong cart item price for switched (simple -> variable) product


  • Fixed: bug with ‘clear option’ functionality


  • Fixed: bug


  • Fixed: a bug preventing from saving options while using the plugin on some PHP configurations


  • Fixed: notice about cart discount is shown in the cart even if no discounts applied
  • Fixed: price archive template regular/sale prices are now correctly formatted
  • Added: new filter ‘uni_cpo_woocommerce_cart_item_thumbnail’ for possibility to change image size of the cart item


  • Fixed: a bug with «price tmpl for archives» and «price tmpl for archives (sale)» fields in data manager


  • Improved: adjusted CSS price tag selector, added reference to ‘bdi’ tag
  • Added: a new type of option Font Preview (pro version)


  • Fixed: availability of some texts for translations
  • Fixed: saving extra validation rules for options


  • Added: new option «Distance by postcode»
  • Fixed: several small errors in JS


  • Improved: Hidden some system order meta items on edit order page screen
  • Fixed: a bug when it is possible to add uni cpo config product with 0 price to the cart


  • Fixed: displaying default values for options when editing in edit order screen
  • Fixed: teh bug related to deleting NOVs when saving data in data manager
  • Updated: Freemius SDK to the latest version


  • Added: auto correction of ‘pid’ attributes on config import
  • Added: auto correction of URLs in radio/checkboxes on config import
  • Added: new filter ‘uni_cpo_nov_variable_value’


  • Fixed: annoying JS error related to certain version of jQuery
  • Fixed: ‘unknown’ NOV is being saved; now it will not be saving, still you have to remove it from the list of NOVs and save them, for each product


  • Added: first version of CPO data manager (pro version)
  • Improved: integration with NBdesigner plugin
  • Fixed: a bug with layouts for «Colorify» functionality


  • Fixed: a bug with «Colorify» functionality on mobile devices
  • Fixed: a bug with layouts for «Imagify» functionality


  • Improved: several warnings popping up under certain circumstances


  • Fixed: displaying proper order data in add/edit CPO options modal
  • Added: setting to control for which user role prices should be calculated when administrator edits order
  • Improvement: added ‘setlocale(LC_NUMERIC, ‘C’);’ to force using ‘.’ (dots) as decimal delimiter (by default, in PHP 7.3+ env it sets this param differently); commas cannot be used as they break price calculation;


  • Fixed: cart item with removed/overwritten options generated error


  • Updated: ‘rangesum’ functionality; added new filter related to this functionality
  • Improved: possibilities for string translation in several places
  • Improved: conditional logic for «Imagify» functionality
  • Added: fix for ‘sold individually’ behaved wrongly when WC Multilingual plugin is activated
  • Fixed: a bug with tooltips on mobile devices


  • Fixed: a bug in ‘rangesum’ functionality;


  • Fixed: displaying ‘select options’ for ‘out of stock’ products


  • Fixed: disappearing of tooltip icons next to option’s labels


  • Fixed: duplicating cart item functionality


  • Fixed: issue related to checkboxes labels disappearing


  • Added: a possibility to configure dynamic options’ and suboptions’ labels
  • Fixed: a bug in «Imagify» functionality for Classic/Colour/Text types of Radio Input option
  • Checked for compatibility with WC 3.9


  • Added: new util method getCartLabel; it can be used in Dynamic Notice, gets cart/order label of the
    option instead of regular label
  • Fixed: an issue when Image Conditional Logic data was not saving on copying/duplicating the product


  • Fixed: a bug when it was not possible to edit custom options in wp admin dashboard when editing an order


  • Fixed: a bug related to ‘order again’ pro functionality


  • Fixed: a bug in «Imagify» functionality for mobile devices
  • Fixed: a warning appearing in the cart related to pitchprint integration code


  • Fixed: a bug when pitchprint cart item’s preview was not displaying
  • Fixed: a bug in «Image Conditional Logic» functionality
  • Improved: now files of added to cart items are cleared from the form on the product page


  • Fixed: a bug in NOV matrix functionality
  • Fixed: a bug in ‘getLabel’ func


  • Fixed: a bug in Select option render function
  • Added: ‘uni_cpo_before_render_builder_modules’ filter
  • Added: cs_CZ translation file (thanks to Radim Hahn)


  • Fixed: a styling issue with tooltip for select field
  • Improved: NOV’s matrix ‘range sum’ functionality


  • Fixed: an issue with wrong values when editting cart item
  • Fixed: an issue with lost validation of qty field when using Uni CPO plugin
  • Fixed: an issue when it sometimes was possible to upload more than file for File Upload


  • Fixed: a bug in NOV’s matrix ‘range sum’ functionality


  • Added: rangesum() math function (the details are in the docs)
  • Added: an advanced functionality related to using NOV’s matrix in ‘range sum’ functionality


  • Fixed: a bug in Datepicker related to counting duration when in ‘days’ mode
  • Fixed: a bug in fields conditional logic related to operators is_empty|is_not_empty and radio/checkboxes fields


  • Improved: CSV import functionality


  • Added: import tool for radio/checkboxes/select options’ suboptions
  • Fixed: a possibility to choose more than one default value for checkboxes


  • Added: ‘currency’ special variable to formula conditional logic; may be used in conjunction with Aelia switcher
  • Added: new type of JS validators: ‘greaterorequalthan’, ‘greaterthan’, ‘lessorequalthan’, ‘lessthan’
  • Fixed: an issue with validation when creating order in admin area
  • Fixed: an issue with with matrix table


  • Added: ‘minpositiveorzero’ function to be used in formulas
  • Added: ‘uni_wrapper_attributes_for_option’ filter; now custom attributes can be added to option’s wrapper


  • Fixed: small fix: a PHP warning when using conditional logic


  • Fixed: a bug with suboptions conditional rules for Radio Input and Checkboxes options»
  • Fixed: a bug with changing main image for «Range slider»


  • Added: suboptions conditional rules for Radio Input and Checkboxes options
  • Fixed: a bug with step setting for «Range slider» option and the input next to range slider


  • Fixed: Security fix


  • Fixed: conflict when using along with YITH bundled products plugin
  • Fixed: a bug with data.getSuboptionLabel() method for Checkbox inputs option
  • Fixed: a bug with changing main image and adding item to the cart page


  • Fixed: a bug when excluded from participating in Imagify options were still used in Imagify


  • Improved: Colorify/Imagify dynamically generated image for the cart/order item
  • Fixed: Fixed a broken link/html to the uploaded file; reverted to just filename, because WC does not allow ANY html
  • Fixed: changing slides in Flatsome theme when using Colorify/Imagify functionality


  • Improved: displaying product prices on archives


  • Fixed: add/edit CPO options data on edit order page in admin area


  • Fixed: displaying product price in admin area; reverted to original prices, so they can be sorted
  • Fixed: displaying range slider in the builder mode


  • Hotfix: another one bug in the code


  • Hotfix: a bug in the code


  • Added: Imagify functionality
  • Added: new option: Extra Cart Button
  • Added: «Free samples» functionality
  • Added: new option: Google Map
  • Added: two new vars for Dynamic Notice related to cart discounts
  • Added: helper methods for variables to be used in Dynamic Notice
  • Improved: fields conditional logic script, fixed some minor issues
  • Fixed: Colorify func related code – the issue when the main image has not been updated accordingly on init
  • Fixed: Cart/order meta strings could not be translated via string translation functionality of multi language plugins
  • Fixed: a bug related to using big numbers in Matrix option


  • Fixed: a PHP Warning related to Radio Input option


  • Fixed: some issues with radio and checkboxes options


  • Added: qty based cart discounts
  • Added: possibility to choose custom field as qty field (instead of standard WC qty field) and display its value in Qty column in cart/order
  • Added: «sold individually» setting; it does what the original WC setting does, but for products with enabled Uni CPO options
  • Improved: displaying custom price tag templates on archives
  • Improved: added separate settings for styling option’s label


  • Fixed: ‘step’ attribute for Text Input now works like intended
  • Fixed: the compatibility issue with Aelia Currency Switcher when using {uni_cpo_price} variable


  • Fixed: bug in IE with radio/checkbox options
  • Fixed: added missing parsley.min.js.map file
  • Fixed: bug with border for radio/checkbox options


  • Added: a possibility to use any NOV as starting price setting; useful for displaying role based wholesale prices
  • Fixed: issues with fields conditional logic and operators ‘between’ and ‘not_between’


  • Added: product basic setup tutorial (WP pointers)
  • Added: ‘between’ and ‘not_between’ query builder filters for Text Input; fixed the same filters for NOVs
  • Fixed: some minor styling issues


  • Added: support of Aelia Currency Switcher
  • Fixed: not saving ‘class’ and/or ‘id’ attributes for a, img, table html tags
  • Fixed: displaying dimensions for cart items even if it is disabled
  • Improved: suboptions conditional logic functionality based on users’ feedbacks


  • Added: support of Storefront Sticky header
  • Improved: suboption conditional logic
  • Fixed: some minor styling issues


  • Fixed: a bug on order edit page


  • Added: suboption conditional logic (currently Select option only)
  • Added: a possibility to display NOVs in cart/order meta
  • Fixed: a bug with saving checkboxes values in order meta


  • Added: a possibility to use regular variables and NOVs as cart discounts values
  • Fixed: a bug in formula conditional logic


  • Added: a possibility to use Dropbox as the file storage for the files uploaded via File Upload Options
  • Updated: Freemius SDK


  • Added: timepicker mode for Datepicker Option
  • Added: ‘multiple dates’ mode for Datepicker Option
  • Added: ‘subscription’ product type unlocked for using in the plugin (experimental)
  • Updated: jQuery QueryBuilder script to 2.5.2
  • Fixed: several small style issues


  • Added: support for «Popup Maker – Popup Forms, Optins & More» plugin; use popups instead of tooltips
  • Improved: some small enhancements, including adding notifications in case of common errors and issues
  • Fixed: a bug when ‘remove’ icon is disappeared in NOV matrices


  • Improvement: small fixes and improvements
  • Added: support for the plugin add-ons


  • Hot-fix for price calculation in the cart; there was a bug related to options with suboptions
  • Fixed: using NOVs in validation conditional logic
  • Added: support for Avada theme for changing image upon selection in option functionality
  • Added: a possibility to set NOV value as value for validation attribute


  • Added: Matrix Option
  • Added: Colorify functionality
  • Added: a possibility to add input for range slider in single mode
  • Added: starting price, price prefix, price postfix and price template for archives settings
  • Added: support for RTL languages
  • Fixed: a possibility to add files for order meta if this meta is for File Upload Option
  • Fixed: displaying added item in WC cart widget
  • Fixed: some other minor bugs


  • Hot-fix price displaying issue on other products


  • Fixed adding custom image (if selected) upon cart item duplication
  • Fixed updating cart item after ‘full edit’ instead of creating a new cart item
  • Fixed disabling ‘add to cart’ btn by using a special word ‘disable’ instead of formula


  • Fixed a JS bug related to price calculation data that is returned from backend


  • Fixed a bug when adding product to cart
  • Added support for WC 3.3+


  • Added ‘min date’ and ‘max date’ settings for Date picker option
  • Added ‘custom values’ setting for Range Slider option
  • Added ‘font’ setting for Select option
  • Added cart item edit ‘full’ mode (PRO)
  • Added ‘other variables’ are now can be used in Dynamic Notice
  • Improved File upload: a file will be uploaded automatically after adding
  • Improved: WC price is now hidden on init
  • Improved: option’s values are now preserved after page reload during adding to cart
  • Changed: JS event names are prefixed with ‘uni_’
  • Fixed saving special tags in Dynamic Notice option
  • Fixed saving ‘img’ tag in tooltips
  • Fixed displaying/hiding ‘order disabled’ custom message
  • Fixed fields conditional logic when using NOVs


  • Fixed validation for Text Input in ‘decimal’ mode
  • Fixed a bug when it was not possible to set ‘one letter’ slug for suboptions


  • Added Dynamic Notice option
  • Added Range Slider option
  • Added Dimensions Conditional Logic
  • Added ‘convert to unit’ functionality for NOVs
  • Added order item edit functionality
  • Improved support for various WP themes, fixed some CSS related issues
  • Improved cart item inline edit functionality – added support for datepicker
  • Fixed an issue when alt image for suboptions was not actually optional
  • Fixed an issue when two clicks were needed to select radio input in ‘image’ mode


  • Fixed an issue related to the order of cart/order meta
  • Fixed displaying ‘Select options’ instead of ‘Add to cart’ on product archives
  • Fixed an issue with using a wrong protocol during enqueueing some dynamically generated content on sites with SSL enabled
  • Improved styles for several option types
  • Added a scroll bar for the options list in the builder panel


  • Enhaced and improved


  • Fixed a bug «Inconsistency of view in builder and in the frontend»


  • Fixed a bug with displaying prices which are higher than one thousand


  • The release of the plugin