OptionKit — Documentation

Guide to installing and using OptionKit (version 0.3.1), the free product add-ons plugin for WooCommerce. Product page: https://007aj.com/optionkit.

1. Installation

  1. Install and activate WooCommerce 8.0 or newer.
  2. In WordPress, go to Plugins → Add New and install OptionKit, or upload the optionkit zip file with Upload Plugin (or copy the optionkit folder to /wp-content/plugins/).
  3. Activate OptionKit on the Plugins screen. The database tables are created on activation.
  4. Open WooCommerce → OptionKit.

If WooCommerce is missing, inactive or older than 8.0, OptionKit shows a notice and does nothing else until WooCommerce is ready. On WordPress 6.5 and newer, WordPress itself asks you to activate WooCommerce first.

If OptionKit Add-ons is active on the same site, OptionKit pauses itself and shows a notice. Both plugins use the same option groups, so nothing is lost; you can deactivate OptionKit.

2. Requirements and compatibility

ItemRequirement
WordPress6.3 or later (tested up to 7.1)
PHP7.4 or later (tested on 7.4 and 8.4)
WooCommerce8.0 or later, required (tested up to 11.1)
Order storageHigh-Performance Order Storage (HPOS) and legacy posts storage are both supported; compatibility with HPOS is declared
Cart and Checkout blocksSupported through the Store API; compatibility is declared
Who can manage option groupsUsers with the manage_woocommerce capability (store managers and administrators)

3. Where to find things

4. Creating an option group

  1. Open WooCommerce → OptionKit and click Add group.
  2. Enter a Name (and optionally a Slug).
  3. Choose a Status: Draft groups are never shown to customers; Active groups are.
  4. Set a Priority. When several groups apply to one product, lower numbers are shown first.
  5. Choose the products under Assignment (see Assigning groups to products) and click Create group.
  6. Click Add field to add the fields customers will fill in.

A group can be moved to the trash with Trash group at the bottom of its edit screen.

5. Fields

TypeWhat the customer sees
TextA one-line text box, for example engraving text. Up to 500 characters unless you set a lower max length.
Text areaA multi-line text box; line breaks are kept. Up to 5,000 characters unless you set a lower max length.
NumberA number box with optional min, max and step, checked on the server.
DropdownOne choice from a list.
Radio buttonsOne choice, all choices visible.
CheckboxesAny number of choices; each ticked choice adds its price.

Field settings

6. Pricing types

Each choice, and each text, text area or number field, can carry a price. The product page shows a live preview; the price that goes into the cart is always recalculated on the server from the product's own fields.

Price typeHow it is charged
NoneNo charge.
FlatThe amount is added to the price of each item, so it is multiplied by the quantity.
% of baseA percentage of the product price (the variation's price for variable products), added to each item.
Per qtyThe amount per item, multiplied by the quantity (the same calculation as Flat, labelled separately for clarity).
One-timeAdded once per cart line, whatever the quantity. WooCommerce shows it spread over the line's unit price.

For dropdowns, radio buttons and checkboxes the choice price is used; for checkboxes every ticked choice adds its own price. For text, text area and number fields the field price is charged only when the customer enters a value. A cart line's unit price never goes below zero.

7. Assigning groups to products

On the group's edit screen, under Assignment:

To add a group to one product, open the product, go to Product data → OptionKit and tick it under Local option groups. Only active groups are listed. A local group always applies to that product, in addition to global assignments.

Only Active groups are shown. When several groups apply, they are shown in priority order (lower first).

8. Showing and hiding fields

Each field can be shown or hidden based on one other field in the same group. In the field editor under Conditional (basic):

  1. Choose Show when or Hide when.
  2. Choose the field the condition depends on.
  3. Choose an operator: equals, not equals, contains, is empty, is not empty, is checked or not checked.
  4. Enter the value to compare with. For choice fields, use the choice's value (not its label).

Hidden fields are not charged and are not required. The server checks the same rules: values sent for hidden fields are dropped before they reach the cart.

9. Product page, cart and orders

10. JSON export and import

On WooCommerce → OptionKit, click Export JSON next to a group to download it (fields, choices, prices, conditions and assignments). To bring a group in, use Import group (JSON). Imported groups are always created as Draft, so you can check them before activating. Assignments refer to product, category and tag IDs, which may differ between sites, so review them after importing to another site.

11. Free plugin limits

When a limit is reached, a notice explains it. Existing groups keep working; deactivate a group (set it to Draft) or remove a field to make room.

12. Features in OptionKit Add-ons

OptionKit Add-ons is a separate, standalone paid plugin from 007AJ. It has everything in OptionKit without the group and field limits, plus range slider, date, file upload, calculated fee, signature, repeater and shortcode/HTML fields, formula and lookup-table prices, color, image and button swatches, several conditions per field with AND/OR matching, group layouts (accordion, tabs, steps, popup), editing options from the cart, starter templates, import tools for WooCommerce Product Add-Ons, PPOM and ThemeComplete EPO data, and option analytics. See the OptionKit Add-ons documentation.

It reads the same option groups. While it is active, OptionKit pauses itself, so you can switch without rebuilding anything.

13. Accessibility

The product page fields aim at WCAG 2.2 AA:

Please report any barrier to admin@007aj.com.

14. Privacy and personal data

Privacy policy of the plugin author: https://007aj.com/privacy.

15. Deactivating, uninstalling and deleting data

Deactivating stops OptionKit but keeps everything. Deleting the plugin also keeps your settings and option groups unless you first tick Delete data on uninstall in WooCommerce → OptionKit settings; then the settings, the option group tables and the cache are removed. If OptionKit Add-ons is still installed, the shared option group tables are kept for it. Options already saved on orders are part of those orders and are never removed.

16. Known limits

17. Questions

Does OptionKit need WooCommerce?

Yes, WooCommerce 8.0 or newer.

Can I use it with variable products?

Yes. Groups are assigned to the product; "% of base" prices use the chosen variation's price.

Why is the total on the product page only a preview?

The browser cannot be trusted with prices. When the product is added to the cart, the server recalculates every option price from the product's own fields, so a changed page cannot change what is charged.

Is it compatible with HPOS and the block checkout?

Yes, both are declared and tested.

Does it slow down my shop?

No scripts or styles are loaded on pages without option fields. Where there are fields, OptionKit adds about 4 KB of script and 1 KB of styles (gzipped), and resolved option groups are cached between requests.

What happens to my data when I delete the plugin?

It is kept unless you tick "Delete data on uninstall" first. See Deactivating, uninstalling and deleting data.

Where do I get help?

Email admin@007aj.com.

18. Changelog

0.3.1

0.3.0

0.2.2

0.2.1

0.2.0

0.1.1

0.1.0

Support: admin@007aj.com · Privacy · Terms · 007aj.com