Table based pricing for WooCommerce products

Table-based pricing is a prevalent model utilized across various industries, particularly in sectors where products can be customized or cut to specific sizes based on customer requirements. One such sector is the home improvement industry, where items like carpets, windows, doors, and shutters often employ table-based pricing structures. In this model, pricing is typically determined by a combination of factors such as material type, dimensions, and any additional features or customization options.

For instance, in the carpet industry, customers can select the desired type of carpet material, pile height, and dimensions for their specific space. A table-based pricing system simplifies the pricing process by offering a clear breakdown of costs based on these variables. Customers can easily compare prices for different sizes and materials, allowing them to make informed decisions based on their budget and preferences.

Similarly, in the case of windows, doors, and shutters, table-based pricing enables customers to customize their products according to the precise measurements of their openings. Whether it’s a standard-sized window or a unique architectural feature, the pricing can be calculated based on the dimensions, materials, and additional options such as glazing or hardware.

NOV matrix functionality

Uni CPO plugin implements table pricing through NOV matrices. Essentially it looks like a fragment of spreadsheet like document and shop owner can define prices along with column/row values and connect options to either column or row.

NOV matrix is a NOV (non-option variable) mode “matrix”. So, first user should create a NOV. Then, user can switch the NOV into “matrix” mode. After that, manual typing values is available as well as import of CSV file.

Examples of CSV for NOV matrix

The examples of CSV files can be downloaded here. Inside the archive you will find two files: one is a regular table pricing and the second one is rewritten like “ranges”.

The regular table of prices looks like this:

I have put in different colors prices which will be applied based on value of the option connected to columns. Remember: NOV matrix works in the way when column will be picked base on proximity of the option’s value! Practically it means that if some option “width” is connected to columns of the matrix and option’s value will be equal to ‘210’, then the second column will be picked. Because 210 is closer to 200, than to 300 (next column header value).

You may find yourself in situation when you would want to apply prices when value is bigger than column’s header value. In terms of previous example it means we would want the script to choose column with value ‘300’ when ‘210’ is chosen in the option. In such case you have to rewrite the matrix in “ranges”:

Check the screenshot above. Now, for value ‘210’ the fourth column will be chosen and this column has the same price as the third one. Even for value ‘299’ the same fourth column will be chosen, despite the fact 299 is closer to ‘300’. The idea is to define ranges – pairs of column with minimum and maximum values. So then we know for sure which columns will be picked in this or that case.