Title: Flexa Extra – Extra Product Options For WooCommerce
Author: FlexaTech
Published: <strong>September 8, 2026</strong>
Last modified: September 8, 2026

---

Search plugins

![](https://ps.w.org/flexa-extra/assets/banner-772x250.png?rev=3685804)

![](https://ps.w.org/flexa-extra/assets/icon-256x256.png?rev=3685911)

# Flexa Extra – Extra Product Options For WooCommerce

 By [FlexaTech](https://profiles.wordpress.org/flexatech/)

[Download](https://downloads.wordpress.org/plugin/flexa-extra.1.1.1.zip)

 * [Details](https://wordpress.org/plugins/flexa-extra/#description)
 * [Reviews](https://wordpress.org/plugins/flexa-extra/#reviews)
 *  [Installation](https://wordpress.org/plugins/flexa-extra/#installation)
 * [Development](https://wordpress.org/plugins/flexa-extra/#developers)

 [Support](https://wordpress.org/support/plugin/flexa-extra/)

## Description

Flexa Extra lets you attach extra option fields to WooCommerce products so shoppers
can personalize what they buy and you can charge for it. Build an **Option Set**
once, assign it to products (all, a hand-picked list, or by category/tag/price/stock
conditions), and the fields appear on the product page with live price updates.

Every price is recomputed on the server from your saved field definitions when the
product is added to the cart — a client-submitted price is never trusted — so the
amount a shopper pays always matches what you configured.

#### Field types (free)

 * Text, textarea, number (with min/max/step and email/URL/regex validation)
 * Date picker and colour picker
 * Checkbox, radio, dropdown
 * Colour/image swatches
 * Button group
 * Heading / description block
 * Minimum and maximum number of choices on any multi-select field

#### Pricing

 * Per-field or per-option surcharge
 * Fixed amount or a percentage of the product price
 * Conditional fees and discounts applied to the item when selections match a rule

#### Inventory

 * Optional stock limit per choice option: sold-out options are disabled, over-selling
   is blocked at add-to-cart, and paid orders draw the stock down (restored on cancel
   or refund)

#### Templates

 * Start from a template: pick a ready-made starter (gift wrapping, engraving, size&
   colour, installation service, warranty plan, product add-ons) and it creates 
   an option set, switched off, that you can edit before turning it on

#### Assignment & logic

 * Target all products, a manual list, or conditions (category, tag, product, price,
   stock)
 * Conditional logic to show/hide fields based on other selections
 * Duplicate an option set, and import or export sets as a JSON file
 * Import your existing option sets from YayExtra or ThemeHigh “Extra Product Options”(
   added switched off for review)
 * Live preview in the builder: see the option set render (and price) exactly as
   the storefront will, updating as you edit

#### Store insights

 * Analytics screen ranking which options and choices sell, and the add-on revenue
   they bring, filterable by date range and order status

#### Headless & integrations

 * Gutenberg “Flexa Extra Configurator” block to show an option set with live pricing
   on any page or post (display only, does not add to cart)
 * Public read-only REST API for decoupled/headless storefronts: fetch a product’s
   option sets, prices, and logic to render the same configurator and subtotal elsewhere.
   Open by default, closable with a filter

#### Cart

 * Edit a line’s options straight from the cart: the product page reopens with the
   
   saved selections filled in, and re-adding replaces the line instead of stacking
   a duplicate

#### Display & accessibility

 * Position fields before or after the add-to-cart button
 * Live “extra subtotal” and “total price” readouts
 * Itemized price breakdown: each selected option and conditional fee/discount listed
   with its own price, updating live
 * Swatch size/shape and button colour styling
 * Accessible markup (fieldset/legend groups, `aria-required`, keyboard focus), 
   responsive, and reduced-motion aware

### Source code for compiled JavaScript and CSS

The admin app ships as a compiled bundle in `assets/dist/admin/`. The
 human-readable
source is included in this package under `apps/admin/src/` (with its build config)
and is built with pnpm + Vite:

 1. `cd apps/admin`
 2. `pnpm install`
 3. `pnpm build` (or `pnpm dev` for a watched dev build)

The storefront assets in `assets/frontend/` are plain, unminified JS/CSS and need

no build step.

### External services

This plugin does not connect to any external services. All data is stored locally
in your WordPress database.

## Screenshots

[⌊All your option fields on one product page: swatches, buttons, radio and checkbox
choices, priced live.⌉⌊All your option fields on one product page: swatches, buttons,
radio and checkbox choices, priced live.⌉[

All your option fields on one product page: swatches, buttons, radio and checkbox
choices, priced live.

[⌊Add-ons that charge automatically: per-option fees, a colour dropdown, and a date
picker on the product page.⌉⌊Add-ons that charge automatically: per-option fees,
a colour dropdown, and a date picker on the product page.⌉[

Add-ons that charge automatically: per-option fees, a colour dropdown, and a date
picker on the product page.

[⌊One option set reused across products: the same gift options assigned wherever
you need them.⌉⌊One option set reused across products: the same gift options assigned
wherever you need them.⌉[

One option set reused across products: the same gift options assigned wherever you
need them.

[⌊Build option sets by drag and drop: pick a field from the palette, drop it in,
and configure it in the inspector.⌉⌊Build option sets by drag and drop: pick a field
from the palette, drop it in, and configure it in the inspector.⌉[

Build option sets by drag and drop: pick a field from the palette, drop it in, and
configure it in the inspector.

[⌊Conditional fees and discounts: apply a fixed or percentage amount when the shopper's
selections match your rules.⌉⌊Conditional fees and discounts: apply a fixed or percentage
amount when the shopper's selections match your rules.⌉[

Conditional fees and discounts: apply a fixed or percentage amount when the shopper’s
selections match your rules.

[⌊Decide where each set applies: all products, a hand-picked list, or by category,
tag, price and stock conditions.⌉⌊Decide where each set applies: all products, a
hand-picked list, or by category, tag, price and stock conditions.⌉[

Decide where each set applies: all products, a hand-picked list, or by category,
tag, price and stock conditions.

[⌊Control what shoppers see: toggle the extra subtotal, total price, itemized breakdown,
and mini-cart values.⌉⌊Control what shoppers see: toggle the extra subtotal, total
price, itemized breakdown, and mini-cart values.⌉[

Control what shoppers see: toggle the extra subtotal, total price, itemized breakdown,
and mini-cart values.

[⌊Start from a ready-made template: six starters you can edit before turning the
set on.⌉⌊Start from a ready-made template: six starters you can edit before turning
the set on.⌉[

Start from a ready-made template: six starters you can edit before turning the set
on.

## Blocks

This plugin provides 1 block.

 *   Flexa Extra – Options configurator Show an interactive option-set configurator
   with live price on any page. Display only: selections are not added to the cart.

## Installation

 1. Upload the plugin to `/wp-content/plugins/flexa-extra` or install it through the
    Plugins screen.
 2. Activate it. WooCommerce must be active.
 3. On activation a short quick-start guide points you at the template gallery so you
    can build your first Option Set in a couple of minutes. It is skippable, and you
    can replay it later from Advanced settings.
 4. Open **Flexa Extra** in the admin menu to configure settings and build Option Sets.

## FAQ

### Does it require WooCommerce?

Yes. Flexa Extra stays inactive (with an admin notice) until WooCommerce is active.

### Can a customer tamper with the surcharge?

No. The extra price is recomputed server-side from your stored option definitions
on add-to-cart and on every cart totals pass; the posted values are sanitized against
the field schema.

### Is it compatible with High-Performance Order Storage (HPOS)?

Yes. The plugin declares HPOS compatibility.

### Can developers extend it?

Yes, see `docs/HOOKS.md` for the available actions and filters.

### Can I import from another options plugin?

Yes. The Import screen reads option sets from YayExtra and from ThemeHigh “Extra
Product Options” (free) and re-creates them in Flexa Extra, switched off. They appear
in the Option Sets list for review; the storefront ignores them until you turn each
one on. Field types, per-option prices, swatches and product assignment are mapped
where an equivalent exists; anything that cannot be mapped 1:1 is listed per set
so you can re-create it. Keep the source plugin active during the import so its 
data is readable.

### Can I use it with a headless or decoupled front end?

Yes. Two open, read-only REST routes (`/wp-json/flexa-extra/v1/public/config` and`/
public/product/{id}`) return the option sets, prices, and logic a front end needs
to render the configurator and compute the live subtotal. They expose only what 
the on-page configurator already ships, and you can close the API with the `flexa_extra/
public_api/enabled` filter. Add-to-cart and the final price are always recomputed
server-side.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Flexa Extra – Extra Product Options For WooCommerce” is open source software. The
following people have contributed to this plugin.

Contributors

 *   [ FlexaTech ](https://profiles.wordpress.org/flexatech/)

[Translate “Flexa Extra – Extra Product Options For WooCommerce” into your language.](https://translate.wordpress.org/projects/wp-plugins/flexa-extra)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/flexa-extra/), check
out the [SVN repository](https://plugins.svn.wordpress.org/flexa-extra/), or subscribe
to the [development log](https://plugins.trac.wordpress.org/log/flexa-extra/) by
[RSS](https://plugins.trac.wordpress.org/log/flexa-extra/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.1.1

 * Fixed: YayExtra import brought nothing over. Field types (and per-option names)
   are stored by YayExtra as `{ value, label }` pairs, not the flat `fieldType` 
   key the converter expected, so every field was skipped and each set dropped as
   empty. The real saved shape is now read, with the older flat form still accepted.
 * Fixed: conditional product assignment is now migrated from YayExtra instead of
   falling back to “all products”. Category and tag names are resolved to term IDs
   and each “is one of” list becomes one targeting rule per term; anything that 
   cannot be mapped is reported per set.
 * Fixed: plain button fields no longer import as colour swatches. Colour and image
   are now carried only for swatch field types, per option according to its swatch
   type.

#### 1.1.0

 * Import option sets from YayExtra and ThemeHigh “Extra Product Options” (free):
   auto-detected, added switched off through the schema sanitizer, with a per-set
   report of anything that could not be mapped 1:1.
 * Headless read API: two open, read-only REST routes (`/public/config` and `/public/
   product/{id}`) so a decoupled front end can render the configurator and compute
   the subtotal. Closable with the `flexa_extra/public_api/enabled` filter.
 * Sales analytics screen: rank options/choices by picks and add-on revenue, filterable
   by date range and order status (HPOS-safe).
 * Gutenberg “Flexa Extra Configurator” block: show an option set with live pricing
   on any page or post (display only).
 * Live preview in the builder: render and price an option set as the storefront
   will, updating as you edit.
 * Conditional fees and discounts: set-level rules that add a fixed or percentage
   fee or discount when selections match (a discount never drops the line below 
   zero).
 * Per-option stock: give a choice a limited quantity; sold-out options are disabled,
   over-selling is blocked, and paid orders draw stock down (restored on cancel 
   or refund).
 * Min and max choices per multi-select field, enforced again on the server at add-
   to-cart.
 * Edit options in cart: reopen the product page with the saved selections and replace
   the line instead of stacking a duplicate.
 * Template library: start a new option set from a ready-made starter.
 * Itemized price breakdown on the product page, listing each option and fee or 
   discount with its own price.
 * First-run quick-start guide, replayable from Advanced settings.
 * Date picker and colour picker field types.
 * Duplicate an option set, and import or export sets as JSON.
 * Fixed: admin dropdown arrows no longer crowd the text.

#### 1.0.1

 * Security: escape swatch image URLs for the CSS `url()` context on the product
   page and in the cart, preventing CSS injection through crafted URLs.
 * Removed the “Tested up to” line from the main plugin file so compatibility is
   declared only in readme.txt.

#### 1.0.0

 * Initial release: option-set builder with text, number, date picker, colour picker,
   choice, swatch and button fields; storefront render engine; server-authoritative
   pricing/cart engine; UX & style settings; and a two-tier automated test suite.

## Meta

 *  Version **1.1.1**
 *  Last updated **14 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 5.0 or higher **
 *  Tested up to **7.1**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [extra product options](https://wordpress.org/plugins/tags/extra-product-options/)
   [personalization](https://wordpress.org/plugins/tags/personalization/)[Product Addons](https://wordpress.org/plugins/tags/product-addons/)
   [Product options](https://wordpress.org/plugins/tags/product-options/)[woocommerce](https://wordpress.org/plugins/tags/woocommerce/)
 *  [Advanced View](https://wordpress.org/plugins/flexa-extra/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/flexa-extra/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/flexa-extra/reviews/)

## Contributors

 *   [ FlexaTech ](https://profiles.wordpress.org/flexatech/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/flexa-extra/)