PluginGauge

How to add custom product options in WooCommerce

By Raz Technologies · published · data updated

Short answer (data as of ): install a product add-ons plugin, which adds priced option fields to the product page and carries the choices into the cart and order, or add a text field with four WooCommerce hooks (below) if you only need one simple field. See our product add-ons plugin ranking for the full comparison.

The problem

Stores selling personalised or made-to-order products need more than WooCommerce variations: an engraving text, a gift-wrap checkbox that adds a fee, an uploaded logo, a delivery date. WooCommerce has no built-in way to add such fields to a product page.

Option 1: a product add-ons plugin (no code)

These are the highest-ranked product add-ons plugins we track. Each lets the store add several field types and charge for options. The column shows whether priced options are documented in the free or the paid version.

Top product add-ons plugins — priced options — from our product add-ons and options ranking, 2 Nov 2026
PluginRankFeature inCheckout BlocksInstalls
Extra Product Options#1Paid versionYes30,000+
Extra Product Options & Add-Ons#2Paid versionNot declaredNo data
Simple Product Options#3Free versionNot declared3,000+
Extra Product Options#4Free versionYes600+
Advanced Product Fields#5Free versionNot declared50,000+
Flexible Product Fields#6Paid versionNot declared10,000+

Need customers to upload artwork or photos? Not every plugin supports uploads, and some only in the paid version:

Product add-ons plugins that document file uploads — from our product add-ons and options ranking, 2 Nov 2026
PluginRankFeature inCheckout BlocksInstalls
Extra Product Options#1Paid versionYes30,000+
Extra Product Options & Add-Ons#2Paid versionNot declaredNo data
Extra Product Options#4Paid versionYes600+
Advanced Product Fields#5Paid versionNot declared50,000+
Flexible Product Fields#6Paid versionNot declared10,000+
Product Addons#7Paid versionNot declared30,000+

Option 2: one text field in code (for developers)

For a single free-text field (for example an engraving line), four hooks are enough: show the field, store it with the cart item, display it in the cart, and save it to the order. Add it to a small custom plugin.

add_action( 'woocommerce_before_add_to_cart_button', function () {
    echo '<p><label for="engraving">Engraving text</label> <input type="text" id="engraving" name="engraving" maxlength="40"></p>';
} );

add_filter( 'woocommerce_add_cart_item_data', function ( $data ) {
    if ( ! empty( $_POST['engraving'] ) ) {
        $data['engraving'] = sanitize_text_field( wp_unslash( $_POST['engraving'] ) );
    }
    return $data;
} );

add_filter( 'woocommerce_get_item_data', function ( $item_data, $cart_item ) {
    if ( isset( $cart_item['engraving'] ) ) {
        $item_data[] = array( 'key' => 'Engraving', 'value' => $cart_item['engraving'] );
    }
    return $item_data;
}, 10, 2 );

add_action( 'woocommerce_checkout_create_order_line_item', function ( $item, $key, $values ) {
    if ( isset( $values['engraving'] ) ) {
        $item->add_meta_data( 'Engraving', $values['engraving'] );
    }
}, 10, 3 );

Charging for the option, conditional fields or uploads is where a plugin earns its place: pricing has to be recalculated server-side in the cart, not only shown on the product page.

Other plugins people ask about

FAQ

How do I add custom product options and extra fields in WooCommerce?

Install a product add-ons plugin, which adds priced option fields to the product page and carries the choices into the cart and order, or add a text field with four WooCommerce hooks (below) if you only need one simple field. As of 2 November 2026, the top-ranked plugin in our product add-ons ranking is Extra Product Options For WooCommerce | Custom Product Addons and Fields (80.1/100).

Can I do this with WooCommerce variations instead?

Only for choices that change the product itself and need their own stock or SKU (size, colour). Variations cannot collect free text, uploads or dates, and every combination becomes a separate variation. Add-on fields avoid that: one product, any number of options, each with its own price.

Do product add-on plugins work with the block cart and checkout?

Check before you install. Of the 20 product add-ons plugins we track, 3 declare Cart & Checkout Blocks compatibility in their code (as of 8 November 2026).

Which plugins let options add a price in the free version?

Several do: the “Feature in” column below shows whether priced options are documented in the free or the paid version. The full ranking has a “Best free” list once enough plugins qualify.