Skip to content
GPLWP Guides

How to add custom product options in WooCommerce

WooCommerce Time About 30 minutes 6 steps Updated 4 Sep 2026

WOOCOMMERCE
The short answer

Use WooCommerce variations for fixed choices such as size or colour. For text, file uploads, conditional fields or option-based charges, you need an add-ons extension or custom development because core WooCommerce does not provide those product-page fields.

The route
  1. 01Separate variations from add-ons
  2. 02Build fixed choices with variations
  3. 03Choose the manual custom route
  4. 04Add and verify every data stage
  5. 05Install an add-ons extension
  6. 06Use the fast way for complex options

What you need

  • A WooCommerce store on WordPress 6.0 or later
  • Administrator access to WordPress
  • A clear list of the options, prices and rules
  • A staging site if you are adding custom code

Separate variations from add-ons

Use a variation when the choice changes stock, SKU, image or the base price, such as Small, Medium and Large. WooCommerce supports these choices through product attributes and variations.

Use a product add-on when the customer is personalising the item, such as entering engraving text, selecting gift wrapping, uploading artwork or choosing an optional service. Add-ons are not separate products and normally do not have their own SKU or variation stock.

Build fixed choices with variations

Edit the product and choose Variable product in the Product data panel. Open Attributes, add the options customers can choose, tick the setting that makes the attribute available for variations, and save the attributes.

Open Variations, generate or add the combinations, then set each variation's price, stock, image and other product data. Keep the number of combinations under control: a product with many attributes can quickly become difficult to manage.

Choose the manual custom route

For one simple text field, a developer can print the field in the product form, validate the submitted value, store it as cart item data, display it with the cart item and save it to the order line. WooCommerce provides the relevant extension points, including woocommerce_before_add_to_cart_button, woocommerce_add_to_cart_validation, woocommerce_add_cart_item_data, woocommerce_get_item_data and woocommerce_checkout_create_order_line_item.

This route is reasonable for a small, stable requirement. It becomes a maintenance job when you add uploads, conditional logic, dynamic pricing, quantity rules, cart editing or emails. A recurring support problem is saving the value on the product instead of the order item, which makes it disappear from order details and documents.

Add and verify every data stage

Whatever route you use, check the complete journey: product page, add-to-cart validation, cart, checkout, order screen, customer email and fulfilment documents. A value that appears on the product page but is not carried into the cart item will not reliably reach the order.

Use stable field names rather than visible labels when custom code or integrations read the data. Also test two different option sets in the same cart; otherwise WooCommerce may merge them as one line item instead of keeping the personalised items separate.

Install an add-ons extension

For several custom fields, use an extension rather than maintaining the whole cart and order workflow yourself. Install the extension from Plugins > Add New > Upload Plugin, activate it, then follow its product-options settings.

Create fields such as text, select, radio, checkbox, date or file upload. Set labels, required fields and prices, then assign the options globally or to individual products. Product add-ons documentation commonly supports global rules and product-specific options, with pricing that can be flat, quantity-based or percentage-based depending on the extension.

Use the fast way for complex options

If the job includes conditional fields, file uploads or option-based pricing, WooCommerce Product Addons is the fast route. Configure the fields from the product editor, set which choices are required, add any price adjustments and preview the product page.

Before publishing, place a test order and confirm that the selected options appear in the cart, order details and emails. Check the upload file type and size limits as well. If your shop only needs size or colour choices, skip the extension and use native variations instead.

The fast route

Let WooCommerce Product Addons do it

Adds conditional fields, file uploads, and option-based pricing for personalized products beyond standard WooCommerce variations.

Get WooCommerce Product Addons

Sources

  1. woocommerce.com /document/variable-product/?utm_source=openai
  2. woocommerce.com /document/product-add-ons/?utm_source=openai
  3. woocommerce.github.io /code-reference/hooks/hooks?utm_source=openai
  4. wordpress.org /support/topic/custom-product-field-on-product-and-order-lin…
  5. woocommerce.github.io /code-reference/files/woocommerce-src-storeapi-utilities-car…
  6. woocommerce.com /document/product-addons-and-extra-options/?utm_source=opena…
  7. woocommerce.github.io /code-reference/files/woocommerce-includes-class-wc-checkout…

Questions

Can WooCommerce add custom product options without a plugin?
WooCommerce can handle fixed product choices without a plugin by using attributes and variations. It does not provide a general product-page form for free-text input, file uploads, conditional choices or add-on pricing, so those requirements need custom development or an extension. A small coded field can work, but you must carry it through validation, cart data and order-item storage.
Should I use variations or product add-ons?
Use variations when each choice needs its own stock, SKU, image or base price, such as a red shirt in three sizes. Use add-ons for personalisation or optional extras that do not need separate inventory, such as engraving, gift wrapping or an uploaded logo. WooCommerce add-ons are not treated as individual products for inventory tracking.
Why do my custom options appear on the product page but not in the order?
The option is usually being displayed but not saved at the cart or order-item stage. Custom data must be added to the cart item, displayed from that cart data and then written to the order line when checkout creates the order. Check the cart, checkout, order screen and email separately because a field can work in one location and be missing from another.
Can I add different options to each variation?
It depends on the extension. Core WooCommerce variations can have different prices, stock and images, but product add-ons are often inherited by every variation of a variable product. The official Product Add-Ons documentation states that different add-ons cannot be defined per variation, so confirm this limitation before building your product structure.
What is the quickest way to add text fields and file uploads?
Install a product-options or product-add-ons extension, create the fields, assign them to the product and test a complete order. This avoids writing and maintaining the code that prints fields, validates submissions, stores cart data, displays selections and saves order metadata. For one basic text field, custom code may be quicker; for multiple field types, the extension route is usually faster to maintain.