To access the settings for Product Add-Ons Ultimate, go to WooCommerce > Settings > Product Add-Ons.
General settings
Pricing
Hide zero prices
When enabled, add-on options that have no cost (£0.00) will not display a price in the cart. Useful for keeping the cart tidy when you have a mix of priced and free options.
Hide field prices
When enabled, the field-level price is hidden in the cart for fields that have only a single selectable option (e.g. Radio, Select). This prevents the price from appearing twice — once on the option and again on the field. You can set this at a field level by using the ‘Price visibility’ setting.
Ignore tax setting
By default, add-on prices respect the WooCommerce “Display prices in the shop” setting, which controls whether prices show including or excluding tax. Enable this option to ignore that setting and display add-on prices as entered, without any tax adjustment.
Display tax suffix
When enabled, the tax suffix configured in WooCommerce (e.g. “inc. VAT” or “excl. tax”) is appended after all add-on prices on the product page.
Price separator
Defines the character displayed between an add-on option label and its price. Defaults to +. You can change this to any character or string, or leave it blank to show no separator.
Update price label
When enabled, the main product price displayed on the product page updates dynamically as customers select add-ons. Useful for showing a running total in the product price.
Role-based Pricing
Roles
Select one or more user roles that should have different add-on prices. Once a role is selected here, a role-based pricing option becomes available on individual add-on fields, allowing you to set a different price for each role.
Enhancements
Enable tooltips
Controls whether add-on field descriptions are displayed as tooltips rather than inline text.
- Disabled — descriptions are shown as standard inline text
- Standard — descriptions appear in a basic tooltip on hover
- Enhanced — descriptions appear in a styled tooltip with richer formatting
Enable Clear All Options button
When enabled, a Clear All Options button is displayed on the product page, allowing customers to reset all add-on fields back to their default state in one click.
Note: This requires Optimize conditions (see the Optimizations section) to be enabled.
By default the button appears below the field groups. To move it to the top, add the following snippet:
Enable cart editing
When enabled, customers can return to the product page from the cart to edit their add-on selections. An “Edit” link is added to each cart item that has add-ons.
Display group titles in cart
When enabled, the group title is shown alongside the add-on fields in the cart and order summary. Useful when you have multiple groups and want customers to see which group each add-on belongs to.
Exclude empty fields in cart
When enabled, add-on fields that have no value entered are not included in the cart meta. This keeps the cart and order details clean by hiding fields the customer left blank. Enabled by default.
Progress Bar
Display progress bar
Shows a visual indicator of how many add-on fields the customer has completed.
- Disabled — no progress bar shown
- Fields — progress is calculated per individual field
- Groups — progress is calculated per group
Here’s how to add a progress bar to your product fields.
Required fields only
When enabled, the progress bar only counts required fields towards completion, ignoring optional ones.
Progress bar layout
- Bar — a horizontal filled bar
- Steps — a stepped indicator showing each field or group as a discrete step
Global
Display groups as post type
Controls how add-on groups are stored and displayed internally. When enabled (the default), groups are managed as custom post types rather than being embedded directly on a single page. This is the standard mode and should generally be left enabled.
Conditions
Reset field values
When enabled, if a field is hidden by a condition its value is cleared. This prevents hidden field values from being passed through to the cart. Recommended if you want to ensure customers can only submit values for fields they can actually see.
Display hidden fields as disabled
When enabled, fields that would normally be hidden by a condition are instead shown in a greyed-out, disabled state. This can be useful for giving customers context about what fields are available but not yet applicable.
Labels
Price label
Custom text to display alongside add-on prices. Can be used to add a prefix, suffix, or replacement for the price.
Price label display
Controls where the custom price label appears relative to the price:
- Before price — label appears to the left of the price
- After price — label appears to the right of the price
- Hide price — the price is hidden entirely (only the label is shown)
Display totals fields
Controls whether totals are shown on the product page:
- Show totals — displays all totals (product total, options total, grand total)
- Hide totals — no totals are shown
- Total only — shows only the grand total
Product total label
The label displayed next to the product’s base price in the totals section. Defaults to “Product total”.
Options total label
The label displayed next to the sum of all add-on prices in the totals section. Defaults to “Options total”.
Flat rate total label
The label displayed next to flat rate add-on prices in the totals section. Defaults to “Flat rate total”.
Grand total label
The label displayed next to the combined product + options total. Defaults to “Grand total”.
Here’s more information about the product price summary.
Optimizations
Optimize calculations
Enables an alternative method for evaluating calculation fields that can improve performance on pages with many fields. Enabled by default and recommended for most sites.
Optimize conditions
Enables an alternative method for evaluating conditional field logic. Improves performance on pages with complex conditions. Also required for the Clear All Options button to function. Enabled by default.
Dequeue scripts
When enabled, the plugin’s JavaScript and CSS files are only loaded on product pages, not on other pages of the site. Recommended if you want to reduce page load times on non-product pages.
Date
Enable days of the week
When enabled, an additional setting appears on each date field allowing you to disable specific days of the week (e.g. weekends). Customers will not be able to select those days in the date picker.
Enable offset
When enabled, date fields gain an option to set a minimum date offset — a number of days from today before which the customer cannot select a date. Useful for lead times or processing periods.
Enable blocked dates
When enabled, date fields gain a field where you can enter specific dates that are unavailable. Customers will not be able to select those dates in the date picker.
There’s more on Date fields here.
Uploads
Users must be logged in to upload
When enabled, only logged-in users can upload files. For security reasons this is recommended if you allow file uploads on your site.
Max file size (MB)
The maximum file size customers are allowed to upload, in megabytes. Defaults to 1 MB.
Enable PDF uploads
When enabled, customers can upload PDF files in addition to image formats. PDFs are disabled by default as they carry a higher security risk than images.
Enable AJAX uploader
When enabled, files are uploaded via AJAX as soon as the customer selects them, without requiring a page reload. This is the default and recommended behaviour. Disable this if the AJAX uploader conflicts with your theme or other plugins.
Retain upload graphic
When enabled, the upload drop zone graphic remains visible after a file has been uploaded, rather than being replaced by a preview of the uploaded file.
Disable Add to Cart button
When enabled, the Add to Cart button is disabled while a file upload is in progress, preventing the customer from submitting the form before the upload completes.
Attach uploads to emails
When enabled, uploaded files are attached to the new order notification email sent to the store admin.
Rename uploads
Define a custom filename format for uploaded files using the following tags:
{original_file_name} {order_number} {date} {product_id} {product_sku} {group_id} {field_id}
For example: {order_number}-{original_file_name} would prefix the original filename with the order number.
Organize uploads by order
When enabled, uploaded files are stored in a unique subfolder for each order, making it easier to locate files associated with a specific order.
File types
A multiselect list of permitted MIME types for uploads. Defaults to JPEG, PNG, and GIF. Add additional types with caution — allowing certain file types can introduce security risks.
There’s more on Upload fields here.
Swatches
Replace main image
When enabled, selecting an image swatch replaces the main product image with the swatch image. Useful for colour or material selectors where you want the product image to update to reflect the customer’s choice. This can also be set per field.
There’s more on Swatches here.
Products
Include variations as child products
When enabled, product variations are available as selectable child products within a Products field. Enabled by default.
Exclude SKUs from child variants
When enabled, the SKU is not shown as part of the child variant name in the product field.
Hide child products in the cart
When enabled, child products added via a Products field are not shown as separate line items in the cart. The parent product is still shown.
Display child products as metadata
When enabled, child products are displayed as metadata (additional information) on the parent product’s cart line item, rather than as separate cart rows.
Hide parent products in the cart
When enabled, the parent product is hidden in the cart, leaving only the child products visible.
Hide child products in the order
When enabled, child products are not shown in the order details (order confirmation page, order emails, admin order view).
Hide parent products in the order
When enabled, the parent product is hidden from the order details.
Indent child products
When enabled, child products are indented in the cart and order to visually indicate their relationship to the parent product.
Multiply independent quantities
When enabled, if a child product has an independent quantity set, that quantity is multiplied by the parent product’s quantity when the customer changes the parent quantity.
Remove parent if child product out of stock
When enabled, the parent product is automatically removed from the cart if any of its child products go out of stock.
Show stock status
When enabled, a child product’s stock status (e.g. “In stock”, “Out of stock”) is appended to its name in the product field.
Redirect hidden products
When enabled, customers who navigate directly to a child product’s page are redirected, preventing them from purchasing the child product independently outside of the Products field.
Enable QuickView for child products
Controls whether customers can view more detail about a child product without leaving the page.
- Disabled — no QuickView
- Lightbox — product details open in a lightbox overlay when clicking the product name
- New tab — product details open in a new browser tab
Optional link text
If QuickView is enabled, enter text here to display as a separate link below the child product name. If left empty, the product name itself becomes the link.
There’s more on Products fields here.
Calculations
Variable 1 / Variable 2 / Variable 3
Global numeric variables that can be referenced in any calculation formula using {variable_1}, {variable_2}, and {variable_3}. Useful for storing a value that is used across multiple calculation fields (e.g. a VAT rate, a markup multiplier, or a material cost) so it can be updated in one place.
Zero value for missing fields
When enabled, if a calculation formula references a field that is not present on the page, that field’s value is treated as 0 rather than being left unresolved. Prevents formulas from failing when fields are conditionally hidden or not applicable.
Theres more on Calculation fields here.
Integrations
Enable compatibility with Polylang
Enable this if you have the Polylang multilingual plugin installed and want add-on fields to work correctly across translated versions of your products. If you previously added Polylang compatibility code snippets manually, remove those before enabling this setting to avoid conflicts.
Dynamic Pricing and Discount Rules
These settings appear only if the WooCommerce Dynamic Pricing and Discount Rules plugin is active.
Disable Dynamic Pricing and Discount Rules price labels — prevents that plugin from overwriting the price labels on the product page when add-ons are present.
Disable add-on prices on pricing table — prevents add-on prices from being included in that plugin’s pricing table display.
Apply User Role Pricing to add-on field prices — when User Role Pricing is configured in Dynamic Pricing and Discount Rules, this applies those role-based adjustments to add-on prices as well.
Disable discounts for add-ons — prevents Dynamic Pricing and Discount Rules discounts from being applied to add-on field prices.
Custom user fields
This section appears only if the WooCommerce Members Only plugin is active.
Enable user fields — allows custom user profile fields from that plugin to be referenced within add-on fields.
Validation
Optimized validation
When enabled, add-on field validation is handled by JavaScript on the client side, providing faster feedback without a page reload. Recommended for most sites.
Hide totals until validated
When enabled, the price subtotals section is hidden until all required fields have been completed. Requires Optimized validation to be enabled.
Disable groups
When enabled, subsequent groups are locked and cannot be interacted with until all required fields in the current group are completed. Only applies when groups are displayed in Accordion, Steps, or Tabs layout. Requires Optimized validation to be enabled.
Disable scroll on Steps layout
When enabled, the automatic scroll animation that occurs when validation fails on a Steps layout is suppressed. Requires Optimized validation to be enabled.