WooCommerce Product Options: Everything Your Store Can Do (And How to Set It Up)

There’s a moment almost every WooCommerce store owner hits. A customer emails asking if they can add a personal message. A client’s checkout requires a file upload. Someone wants to configure dimensions. And you look at the product page and think: how is this not just built in?

It isn’t built in. WooCommerce is deliberately minimal on the product options front — and that gap is where a lot of stores quietly lose money.

This guide is about closing that gap. We’ll walk through what WooCommerce product options actually are, what’s genuinely possible when you set them up properly, and how to use them in a way that improves the experience for your customers and increases revenue for your store. We’ll also be honest about what takes five minutes to set up and what requires a bit more thought.

If you’re building your own store, there’s a practical setup section you’ll want to bookmark. If you’re a developer building for clients, the advanced features section covers the more complex configurations that come up on real projects.


First, Why WooCommerce Leaves This Gap

WooCommerce is built around a simple model: products have variations (size, colour, material), and customers choose one. That model works beautifully for a clothing store with S/M/L/XL options. It starts to fall apart when what you’re actually selling is custom.

Take a quick look at the kinds of requests that native WooCommerce can’t handle cleanly:

  • A bakery that wants customers to choose flavours, write a message for the cake, pick a delivery date, and add candles as an optional extra.
  • A print shop that needs customers to upload artwork, specify dimensions, select paper stock, and choose between matte and gloss finish — with price changing based on size.
  • A gift retailer offering engraving, gift wrapping, and a handwritten card — each with a small additional fee.
  • A furniture maker selling to trade customers who need to specify material, dimensions, and finish, with pricing calculated from a rate card.

In every one of these cases, the store owner ends up doing one of three things: hacking together a workaround using separate products, collecting information via email after the order, or losing the sale to a competitor whose store can actually handle the request.

None of those are good options. Product options solve this properly.


What WooCommerce Product Options Actually Are

Product options — sometimes called product add-ons, custom fields, or extra options — are additional inputs that appear on a product page, letting customers specify what they want before adding to cart.

They’re not the same as WooCommerce variations. Variations create separate SKUs (Red/Small, Blue/Large). Product options are open-ended customisations layered on top of a product — and crucially, each option can carry its own price.

In practice, product options cover a wide range of field types:

  • Text fields and text areas — for names, messages, notes, or instructions
  • Checkboxes and radio buttons — for yes/no choices or single-selection options
  • Dropdowns and multi-select — for lists with multiple choices
  • Image, colour, and text swatches — replacing dropdowns with visual selectors
  • File upload — so customers can send artwork, photos, or documents
  • Date and time pickers — for delivery scheduling or appointment booking
  • Range sliders — for dimensions, numeric quantities, or custom values
  • Product elements — letting customers add related products alongside the main item

Think of product options as the question-and-answer layer between your customer and the order. They replace the back-and-forth emails that slow down fulfilment and frustrate everyone.


The Part Most Guides Skip: Pricing

Here’s where product options stop being a convenience and start being a revenue tool.

Every option you add to a product page is a potential upsell. The customer is already there, already decided they want the product. The question is whether they leave with just the base product or with $15–30 of extras layered on top.

A good product options plugin should support all of the following pricing types:

Fixed amount

The simplest form. Add gift wrapping: +$4.99. Add a handwritten card: +$2.50. Add priority processing: +$7.99. These feel small to the customer but add up meaningfully across hundreds of orders. We’ve written before about how a single well-placed checkbox can have an outsized effect on profit margins — the short version is that the math is surprisingly powerful.

Percentage of product price

Useful for options that logically scale with what’s being bought. A 10% rush fee on a $200 order feels proportional. A flat $20 rush fee on a $12 product does not. Percentage pricing keeps the relationship sensible.

Price per character or word

This one is a game-changer for personalisation businesses. Instead of charging a flat fee for engraving, you charge per character. The customer types their message, the price updates in real time, and they understand exactly what they’re paying for. It’s transparent, it’s fair, and it scales naturally with the effort involved.

Math formula pricing

For made-to-measure products, this is where things get genuinely impressive. You write a formula using inputs from other fields as variables. A banner printing store might use: width × height × price_per_sqft. The customer enters their dimensions, the price calculates live on the page, and they add to cart with full price clarity. No quoting emails, no manual calculations, no errors.

The formula engine in Extra Product Options supports standard mathematical operations, rounding functions, conditional expressions, and can pull data from Advanced Custom Fields and JetEngine via shortcodes — which matters if you’re building complex configurators for clients.

Lookup table pricing

When pricing follows a matrix — specific material plus specific size equals specific price — you upload a CSV table and the plugin handles the rest. This comes up frequently in fabric pricing, custom framing, and industrial supplies. It’s the kind of requirement that used to need custom development; now it’s a configuration task.

Quantity-independent pricing

By default, add-on prices multiply with quantity. Sometimes that’s correct. But for one-time charges — a setup fee, a single gift message, a file processing charge — you want the fee to apply once regardless of how many units are ordered. This setting handles that cleanly.

Taken together, these pricing options mean that for many store types, the product options setup effectively becomes the pricing engine for the business — not an add-on to it.


Conditional Logic: The Feature That Makes Forms Feel Smart

A product form with twenty fields is overwhelming. A product form that shows you exactly the fields relevant to your choices feels intuitive.

Conditional logic is what creates the difference. Fields appear or disappear based on what the customer has already selected. Only checked “Add personalisation”? Now the text field appears. Selected a delivery date within 48 hours? The rush fee option becomes visible. Chose a large format? The premium paper options appear.

For the customer, it feels like the form is reading their mind. For the store, it means customers only see what’s relevant to them — which reduces confusion and increases the chance they actually complete the purchase.

Conditional logic in Extra Product Options supports AND/OR conditions, multiple condition groups, and can trigger on:

  • Any field value (checkbox checked, dropdown selection, text input)
  • WooCommerce variation attributes (which variation the customer chose)
  • Product quantity (show bulk options when quantity exceeds a threshold)
  • Product ID or variation ID

For developers building complex configurators, the AND/OR group system means you can handle genuinely sophisticated logic without writing code.


Global Forms vs Per-Product Forms: Which to Use When

This is a practical question that comes up early in every setup, and getting it right saves a lot of time later.

Per-product forms

Built directly inside the product editor. Options created here apply only to that specific product. Use per-product forms for options that are unique to a single product — the specific configuration choices for a bespoke sofa, the personalisation fields for a particular trophy design.

Global forms

Built in Products → Global Forms and assigned to all products, specific categories, specific tags, or specific individual products. Use global forms for options that apply across your catalogue — a universal gift wrapping checkbox, a delivery instructions field, a rush processing upgrade. Build it once, apply it everywhere, edit it in one place.

Most stores end up using both. A global form handles the universal add-ons. Per-product forms handle the specific configurations. They stack together cleanly on the product page, and you control the display order via priority settings.


Setting It Up: A Practical Walkthrough

If you’re getting started with Extra Product Options for the first time, here’s the sequence that works well.

1. Install and activate

Download the zip file from your CodeCanyon account. In WordPress, go to Plugins → Add New → Upload Plugin, select the zip, install, and activate. Requirements are PHP 7.4+, WordPress 5+, and WooCommerce 5+. It’s tested with WordPress 6.x and WooCommerce 10.x.

2. Start with a global form for your universal add-ons

Go to Products → Global Forms → Add Global Form. In the Form Settings meta box you can select the apply mode for the form, apply to all products, or choose specific categories. Build your most common options here first — gift wrapping, gift message, rush processing. This gives you something live quickly and teaches you how the builder works before you tackle product-specific configurations.

3. Use the form builder: sections first, fields second

The builder works with sections as containers and fields inside them. Add a section, then add fields within it. Sections can be full width, half width, or custom widths — which lets you create clean two-column layouts when you have related options that sit naturally side by side.

The builder supports drag-and-drop reordering, copy/paste with keyboard shortcuts, and right-click context menus. If you’re building a complex form with many similar fields, the copy/paste workflow saves significant time.

4. Set pricing on each field that should cost extra

In each field’s settings, choose your pricing type and enter the relevant value. The plugin renders a live totals box on the product page that updates as the customer makes selections — showing the base price, each selected option and its cost, and the running total. Enable this. Customers who can see exactly what they’re paying for are significantly more likely to complete the purchase.

5. Add conditional logic where it improves the flow

In each field’s settings, there’s a conditional logic tab. Set the trigger conditions, choose AND or OR, and save. Test it on the front end by walking through the customer’s journey yourself — try every path through the form and make sure what appears and disappears makes sense.

6. Consider the add-to-cart button behaviour

You can configure the Add to Cart button to stay hidden until a specific required field is filled, all required fields are completed, or all fields are filled. For products where an incomplete order genuinely can’t be processed — file uploads, essential specifications — this prevents the problem at source rather than dealing with it post-purchase.


The Features Worth Knowing About That Most People Discover Later

These aren’t obscure — they’re just the things you tend to find after you’ve been using the plugin for a while. Worth knowing about upfront.

Repeatable sections tied to quantity

If a customer orders 4 personalised gifts, they need 4 sets of personalisation fields. Repeatable sections handle this automatically — the section duplicates to match the ordered quantity. You can also allow customers to add more manually, which is useful for “build your own bundle” type products.

Product elements and custom bundles

The Product Element feature lets you add real WooCommerce products as selectable options within another product’s form. A customer buying a camera can choose compatible lenses, cases, and memory cards — all added to cart in one interaction, with stock managed correctly for each. The Custom Bundle layout mode gives this a distinct visual treatment that makes the bundle relationship obvious to the customer.

Role-based visibility

For stores serving both retail and trade customers, you can show or hide entire forms based on the customer’s user role. Trade customers see wholesale-specific options. Retail customers see a clean standard product page. This works at both the global form level and the individual field level.

Variation attribute conditions

Conditional logic can trigger on which WooCommerce variation the customer selects — not just on custom field values. This means you can show completely different sets of options depending on which size, colour, or type was chosen, all within a single product.

Display sections as tabs, sliders, or pop-ups

For products with a lot of configuration options, displaying sections as tabs or sliders keeps the page manageable. Pop-up sections work well for secondary options that most customers won’t need — available when wanted, out of the way when not.

Shortcode and ACF integration for dynamic pricing

If you’re using Advanced Custom Fields or JetEngine to store product data, you can pull that data into pricing formulas via shortcodes. This is primarily a developer feature, but it opens up sophisticated dynamic pricing configurations — pricing that responds to custom product metadata without writing any custom code.


What Stores Actually Use This For

In case concrete examples are more useful than a feature list, here are some real-world configurations that come up frequently.

The gift shop setup

A global form with three checkboxes: gift wrapping (+$3.99), handwritten gift card (+$1.50), and premium ribbon (+$0.99). A conditional text field that appears only when “handwritten gift card” is checked — asking for the message. These run on every product, every order, invisibly but consistently adding to average order value.

The print shop configurator

File upload field for artwork. Dropdown for paper stock. Dropdown for finish (matte/gloss). Width and height number inputs. A dynamic element that calculates price from width × height × price_per_sqft and displays it live. Conditional fields that show bleed and colour profile options only when the uploaded file type requires them.

The personalised gifts store

A text field for the recipient’s name, priced per character for engraving. A text area for a longer message. An image swatch for font selection. A date picker for the required-by date, with a rush processing checkbox that becomes visible — and adds a fee — when the date is within 5 days.

The B2B wholesale store

Role-based forms that show trade-specific options (purchase order number field, trade account reference) only to registered wholesale users. Retail customers see none of this. Lookup table pricing that applies trade rates to specific product/quantity combinations.

The food ordering setup

Checkbox groups for toppings, with a maximum selection limit. Radio buttons for crust type. A special instructions text area. A time picker for collection or delivery. Conditional logic that shows delivery address fields only when “delivery” is selected, and hides them for collection orders.


A Few Things to Get Right From the Start

Most of the support questions that come up with product options setups trace back to the same handful of decisions. These are worth thinking about before you build.

Don’t put everything on one page without structure

A flat list of twenty fields is overwhelming. Use sections to group related options logically. Use tabs or conditional logic to hide what isn’t relevant yet. A well-organised form with eight visible fields converts better than a comprehensive form with twenty visible fields.

Price your add-ons properly

If gift wrapping costs you $2.50 in materials and 8 minutes of time, pricing it at $2.50 makes no sense. Add-ons should cover your cost, your time, and a reasonable margin. Customers don’t expect extras to be free — they expect them to be fairly priced and clearly presented.

Enable the totals box

The floating totals box that shows the running breakdown of base price plus selected options is one of the most effective conversion tools in the plugin. Customers who can see exactly what they’re paying for, with each option itemised, are more confident checking out. Customers who can’t see the price building are more likely to abandon at checkout when the total surprises them.

Test the mobile experience

A significant portion of WooCommerce purchases happen on mobile. Image swatches, date pickers, file uploads, and range sliders all behave differently on touch screens. Walk through the complete customer journey on your phone before going live.

Use global forms for anything shared across products

It sounds obvious, but it’s easy to recreate the same gift wrapping checkbox on 40 individual products instead of building one global form. When you need to update the price or label later, you’ll be glad you used the global form.


Is Extra Product Options Right for Your Store?

If your products are standard off-the-shelf items with no customisation, no add-ons, and no configuration — you probably don’t need this. WooCommerce variations will serve you fine.

But if any of these sound familiar, it’s worth a serious look:

  • Customers email you after ordering to provide information you couldn’t collect at checkout
  • You’re losing sales because your product pages can’t handle configuration requests
  • You’re leaving upsell revenue on the table because there’s no clean way to offer add-ons
  • You’re managing custom pricing through spreadsheets and manual calculations
  • You’re building for a client whose products require personalisation or configuration

Extra Product Options & Add-Ons for WooCommerce has been trusted by over 36,000 stores since 2014. It’s a one-time purchase — no annual subscription, no forced renewals.

If you have questions before buying — about compatibility with your theme, your other plugins, or a specific use case — the support forum is the right place to ask. We’d rather answer your questions upfront than have you buy something that isn’t the right fit.

One-time purchase. Lifetime usage. Free updates during your support period. Rated 4.9/5 by over 1,300 customers.