The Product Add-Ons extension allows you to add additional paid (or free!) options to your products using several field types including radio buttons, checkboxes, drop-down fields, custom text inputs and more. This extension also works with the WooCommerce Subscriptions plugin to add additional pricing with your options to the recurring subscription.
After installing the extension, you can add product level add-ons by editing a product; or global add-ons by going to Products > Global Add-ons.
Per-Product Add-Ons ↑ Back to top
Per-product add-ons only display for the product they are added to. Edit one of your products to add product-level add-ons. They will appear in the product data panel under the sub-section “Add-ons.”
Add-ons can be applied to variable products, but can only be defined at the product level. Example: You cannot have an add-on for a specific variation of a variable product (e.g., For a blue shirt only).
Global Add-Ons ↑ Back to top
Global add-ons can be applied to all products or only certain categories, depending on your choices. To get started with global add-ons, go to Products > Global Add-ons. You will see the main global add-ons screen:
Existing global add-ons will be listed in the table view. To add a new global add-on, click the “Add Global Add-on” button. You will then see the add screen:
Add-on Reference is a name you give global add-ons, so you know what they’re for. By default this is filled in for you.
Priority determines the order in which add-ons are displayed on the frontend. Per-product add-ons get priority 10, so you can set it lower than 10 to display your global add-on first, or higher than 10 to show your global add-on last.
Applied to determines which products will show this global add-on. ‘All Products’ shows on all of them, or you can choose categories from the list to only show the add-on for products.
Click Save when you are done. Next we’ll cover adding the actual add-ons.
Setting Up Add-Ons ↑ Back to top
Add-ons are added the same way for both per-product and global add-ons. This panel is found on a new or existing product. To add your first add-on, click the “New Add-on Group” button on your new product settings. This will insert a blank add-on:
Select a field type from the top-most select box. As of writing, the following options are available:
- Checkbox – shows a checkbox or checkboxes that can be ticked/unticked by a customer
- Radio buttons – shows a radio button or radio buttons of which the user can choose one
- Select box – shows a dropdown list of options of which the user can select one
- Custom input (text area) – shows a text field where users can write multiple lines of text (character limit possible)
- File upload – allows users to upload a file
- Custom price input – shows a field where users can enter a numerical value that is added to the product price
- Custom input multiplier – shows a spinner where users can input a number, i.e. quantity
- Custom input (text) – There are five in-built types. This shows a text field where users can enter either any text; just letters; just numbers; both; or an email address only
The other options are:
- Group Name – Name for your add-on group. Displayed on the product page above any fields you add to the group.
- Required fields? – Check this box if the add-on requires a value/selection.
- Group Description – Describe the add-on. Shown beneath the group name on the frontend.
Below these settings you can add options/fields.
- Click New Option. A row appears:
- Under Option Label, enter text for the Label (required) and set a price (optional). Some field types have other properties, such as minimum allowed value and maximum allowed value.
- Publish or Update the product to save.
To remove an option row, click the ‘X’.
Re-order add-ons ↑ Back to top
You can change the order of add-ons displayed within groups by dragging and dropping.
Importing / Exporting add-ons ↑ Back to top
Add-ons can be exported and imported using the buttons when editing a per-product or global add-on. Click ‘export’ to export the existing fields as serialized data. Then click import to paste the serialized data and append them to your existing add-ons.
Frontend display and viewing order add-ons ↑ Back to top
On the frontend, add-ons are shown on the single product page above the cart button. To see how your add-ons look, select “Preview Changes”:
Once a customer adds this item to their cart, data will be shown as meta:
Add-on data is stored to the order line items as meta. View your order to see the chosen values.
Input character limit ↑ Back to top
When selecting custom input (text ) or custom input (text area) you’ll be given the option to input a number for the minimum and maximum number of characters.
Keeping uploads secure ↑ Back to top
Uploads are stored in randomized folders under wp-content/uploads/ to make them hard to find. However, some hosts enable directory listing, which allows people to browse your file/folder structure. To disable this ‘feature’, add the following to your main .htaccess file:
Troubleshooting ↑ Back to top
The upload field type doesn’t work ↑ Back to top
This can be due to the length of the field name. Try to reduce the field name length or contact your hosting company to increase the value of post.max_name_length.
FAQ ↑ Back to top
Can Product Add-Ons be imported via the Product CSV Import Suite? ↑ Back to top
No, product add-ons are made up of complex serialized meta data which would be difficult to do in a product CSV row as plain text. CSV Import can only import meta that is unserialized unless otherwise stated.
Can an add-on have a separate SKU for sales/tracking purposes? ↑ Back to top
No. An add-on is treated as an option, not a separate product. Products and their variables have SKUs.
Can I add a datepicker? ↑ Back to top
Not at the moment. However, we are looking into adding this possibility in a future version of the extension.
How can I set default input values? ↑ Back to top
Note that this code example only sets the value for the
Custom price input field to
0 , so make sure to personalize it to your needs.
Can I add custom fields to variable products? ↑ Back to top
Yes! Here is a sample:
Can I have product add-ons applied once to the product, no matter the quantity ordered? ↑ Back to top
No, this is not currently possible. This feature is on our Ideas Board. If you’d like to see this added, vote it up – that way our developers know what solutions our customers need and can prioritize based on demand.
Why are my Add-Ons blank? ↑ Back to top
It might be due to not clicking Save, after adding/deleting/editing any fields.
Where do I place my language files? ↑ Back to top
.mo and .po language files for Product Add-ons must be placed in the following path: /wp-content/languages/plugins/. Learn more on translating extensions here.
How can I change the position of the Add-Ons on my product page? ↑ Back to top
If you are using our Storefront theme, the Add Ons will appear neatly between the short description and the Add to Cart button. However, on many other themes, the Add Ons are displayed beneath the Add to Cart button, which can be confusing for the customer. To change the position, you can overwrite the template structure via a theme. Note that in the case of Product Add-Ons you need to place those template override files into a folder named woocommerce-product-addons in your WordPress theme (instead of placing them directly into the WooCommerce folder in that theme).
Can I use conditional logic with Product Add-Ons? ↑ Back to top
No, that is not supported with Product Add-Ons. If you want your customers to fill out different fields based on information they fill out, we recommend that you use the powerful Gravity Forms plugin to create forms with conditional logic. Then link those forms to your WooCommerce products with Gravity Forms Product Add-Ons.
Can Product Add-Ons be used to apply a discount ↑ Back to top
No, that is not possible. Product Add-Ons cannot be configured to reduce the price of a product. Negative numbers in the add-on cost field are not allowed.