WooCommerce Gravity Forms Product Add-Ons

Gravity Forms Product Add-ons, also called WooCommerce Gravity Forms Product Add-ons, is a WooCommerce product configurator built on Gravity Forms. It attaches a Gravity Forms form to a WooCommerce product page, updates pricing in real time as customers select options, and records every detail on the cart item, the order, the order emails and a linked Gravity Forms entry.

Stores use Gravity Forms Product Add-ons for engraving and personalization, made-to-order and configure-to-order products, custom-priced products, deposits and donations.

Can Gravity Forms Product Add-ons do this?

↑ Back to top
QuestionAnswer
Product options that change the priceYes. Gravity Forms Product Add-ons adds the form’s Product and Option field prices to the WooCommerce product price, and the product page shows the product price, the options total and the grand total as the customer selects options.
Conditional logic, calculations and multi-page formsYes. Gravity Forms Product Add-ons runs the form on the product page with its conditional logic, calculated prices, validation and multi-page navigation.
Repeater fieldsYes. Gravity Forms Product Add-ons supports the Gravity Forms Repeater field in Gravity Forms 3.2 and later. Product and Option fields in each row add to the price, the cart and order show one line per row, and the cart’s Edit link restores every row.
One form for many productsYes. Gravity Forms Product Add-ons attaches a form to product categories and tags from the form’s WooCommerce tab, and every product in them uses that form.
Settings shared by every product that uses a formYes. Gravity Forms Product Add-ons keeps the WooCommerce settings on the form, and each product follows them or uses its own settings section by section.
Cart editingYes. Gravity Forms Product Add-ons adds an Edit link to the cart item, which opens the product with the customer’s selections filled in. Cart editing is a setting, on or off per form or product.
Custom cart item and order descriptionsYes. Gravity Forms Product Add-ons shows every selection, a chosen set of fields, or one block of text built from Gravity Forms merge tags under the item in the cart, at checkout, on the order and in emails.
Shipping weight, dimensions and quantity from form fieldsYes. The Gravity Forms Product Add-ons field map sets the cart item’s weight, length, width, height and quantity from form fields, so shipping rates and shipping labels use the customer’s numbers.
Block themesYes. Gravity Forms Product Add-ons works with block themes such as Purple and Twenty Twenty-Five. The form, the live totals and cart editing work in single-product templates built with the Add to Cart with Options block or the Add to Cart Form block.
WooCommerce Cart and Checkout blocksYes. Gravity Forms Product Add-ons shows each selection on its own line in the Cart, Mini-Cart and Checkout blocks, with the Edit link in the Cart block.
Headless stores and AI shopping assistantsYes. Gravity Forms Product Add-ons publishes each product’s form on the WooCommerce Store API and adds items with their form values, validated and priced the same way as on the product page.
Gravity Forms entries linked to ordersYes. Gravity Forms Product Add-ons creates one Gravity Forms entry per ordered item, linked both ways to the order, with the order’s payment status and transaction on the entry.
Gravity Forms notificationsYes. Gravity Forms Product Add-ons sends the form’s notifications when the customer places the order. Notifications are a setting, on or off per form or product.
Variable products, subscriptions and bookingsYes. Gravity Forms Product Add-ons works on simple and variable products, WooCommerce Subscriptions products, including entries for renewal orders, and WooCommerce Bookings products.
WooCommerce Quick View ProYes. Gravity Forms Product Add-ons shows the product’s form, with its prices and totals, in the WooCommerce Quick View Pro modal, and customers add the configured product to the cart from it.
Gravity PerksYes. Gravity Forms Product Add-ons works with Populate Anything, Conditional Pricing, Limit Choices, Nested Forms and many other Gravity Perks. To check a perk on your store, add it to the form and test the form on a product.
Hooks and filters for developersYes. Gravity Forms Product Add-ons provides filters and actions for cart item data, order item meta, pricing, field visibility, notifications and cart editing. The developer section lists the common ones.

Requirements

↑ Back to top
  • WordPress 6.9 or later
  • WooCommerce 11.0 or later
  • Gravity Forms 2.9 or later, any license
  • PHP 7.4 or later

Quick start 1: Add a form to a product

↑ Back to top

This example configures a Personalized Mug priced at $20, with an engraving, a font choice and two priced extras: gold lettering at $2 and gift wrap at $5.

  1. In Gravity Forms, build the form: a Single Line Text field for the engraving, a Radio Buttons field for the font, a hidden Product field at $0 for the mug, and an Option field with checkboxes for Gold lettering at $2 and Gift wrap at $5. Prices that change the item’s price belong in Product and Option fields.
  2. Edit the product and give it a Regular Price of $20. Use $0 when the form sets the whole price.
  3. Open Product data > Gravity Forms, choose the form under Form, and update the product.
The product's Gravity Forms tab with the Mug Personalization form chosen and the settings sections Display, Cart, Entries, Structured data, Item meta and Field map, each showing whether it uses Form settings or Product settings

The product page displays the form with its totals. With gold lettering and gift wrap selected, the totals show a subtotal of $20, options of $7 and a total of $27.

The Personalized Mug product page with the engraving Happy Birthday, gold lettering and gift wrap chosen, and totals of $20, $7 and $27

Quick start 2: Assign a form to a category or tag

↑ Back to top
  1. Open Forms > your form > Settings > WooCommerce.
  2. In Products, type the category or tag name and choose it. Products can be added one by one in the same box.
  3. Save the settings.

Every product in the category uses the form. The tab lists the categories, the tags and the products that use the form. A product with its own form chosen keeps that form.

The form's WooCommerce tab, Products section, with the Mugs category attached and the products that use the form listed below

To see which form each product uses, turn on the Form column under Screen Options on Products > All Products. The column filters the list by form.

The Products list with the Form column showing Mug Personalization (Mugs) for the three mugs

Form settings and product settings

↑ Back to top

The WooCommerce tab on a form holds the settings every product using that form follows. The product’s Gravity Forms tab holds the same settings in six sections. Each section has a Settings source:

  • Form settings: the section follows the form, and shows a link to the form’s settings.
  • Product settings: the section uses the product’s own settings.

The badge on each section’s heading shows its source while the section is closed. Products set up before form settings existed use Product settings in every section, so their behavior stays as configured.

The Display section open on Product settings, with Hidden and Visible toggles for the form title, description, Total field and product price, the price label fields, and the totals rows

Reference: settings

↑ Back to top

The same settings appear on the form’s WooCommerce tab and on the product’s Gravity Forms tab.

Display

↑ Back to top
SettingChoicesWhat it does
Form titleHidden | VisibleShows the form’s title above the form.
Form descriptionHidden | VisibleShows the form’s description above the form.
Total fieldHidden | VisibleShows the form’s own Gravity Forms Total field on the product page. Hidden keeps the field working, so the entry still records its total.
Product priceHidden | VisibleShows the product’s price in the store. Choose Hidden when the form sets the whole price; the text before and after the price still shows.
Text before priceTextShown before the product’s price, such as From.
Text after priceTextShown after the product’s price, such as per mug.
Totals sectionHidden | VisibleShows the subtotal, options and total lines with the form. Choose Hidden when no field adds to the price.
Subtotal, Options, TotalHidden | Visible, and a labelShows each line, with its own label. Defaults: Subtotal, Options, Total.
Totals locationAfter form | Before formPlaces the totals after or before the form.
Validation anchorEnabled | DisabledScrolls to the form when a multi-page form has an error.
Dynamic PricingEnabled | DisabledApplies Dynamic Pricing to the totals as the customer selects options. Shown while Dynamic Pricing is active.

Cart

↑ Back to top
SettingChoicesWhat it does
Cart editingEnabled | DisabledAdds an Edit link to the item in the cart. The link opens the product with the form filled in, and saving returns the customer to the cart.
Original cart itemReplace it | Keep bothReplaces the edited item, or keeps it and adds the new one.

Entries

↑ Back to top
SettingChoicesWhat it does
Abandoned cart entriesKeep | DeleteKeeps the entry made when the item is added to the cart, even when the order is never placed. With Keep, Gravity Forms add-ons that run on form submission run when the item is added to the cart.
Entry payment updatesEnabled | DisabledCopies the order’s payment status and transaction to the entry as the order changes.
NotificationsEnabled | DisabledSends the form’s notifications when the item is ordered.

Structured data

↑ Back to top

Search engines read product prices from structured data. For products priced by their forms, these settings publish a price that includes the form’s options.

SettingChoicesWhat it does
Override structured dataYes | NoReplaces the product’s price in the structured data.
Price typeFlat price | Price rangeOne price, or a range from lowest to highest.
PriceAmountThe price for a flat price.
Minimum price, Maximum priceAmountsThe range for a price range.
Product priceAdd to it | Replace itAdds these amounts to the product’s price, or uses them in its place.

Item meta

↑ Back to top

Item meta is the list of the customer’s selections under the item in the cart, at checkout, on the order and in order emails.

SettingChoicesWhat it does
Item metaDefault | CustomDefault lists the form’s fields. Custom shows one block of text built from a template.
Item meta fieldsInclude all fields | Include all fields except | Exclude all fields exceptWhich fields the customer sees. Fields left out still show on the order screen, and stay out of emails.
Excluded from orderFieldsFields left off the item for everyone. Their values stay on the Gravity Forms entry.
Item meta templateText with merge tagsThe Custom text, labeled Options. Use Gravity Forms merge tags, one value per line.
Block cart layoutOne per line | WooCommerce defaultHow the selections show in the Cart, Mini-Cart and Checkout blocks.

On the product’s tab, Choose fields opens a list of the form’s fields with their field IDs.

The Choose fields dialog listing the form's fields with their IDs, Select all and Select none links, and Cancel and Done buttons

Example template:

Engraving: {Engraving:2}
Extras: {Extras:4}

Field map

↑ Back to top

The Field map sets the cart item’s weight, length, width and height from the form’s Number fields, and its quantity from a Number, Quantity or Single Product field. Shipping rates, the order and shipping labels use the mapped values.

RowChoicesWhat it does
Weight, Length, Width, HeightA form field, then Replace it | Add to itReplaces the product’s own value with the field’s value, or adds the field’s value to it.
QuantityA form field, then Map to Cart Item | Map to Stock OnlyMap to Cart Item sets the cart item’s quantity. Map to Stock Only keeps the cart quantity and reduces stock by the field’s value when the order is placed.
The Field map section with Weight mapped to the Package weight field

Cart, checkout and order details

↑ Back to top

The customer’s selections show under the item in the cart, at checkout, on the order and in order emails. Two items with different selections are separate cart items; the same selections add to the quantity.

The Cart block with the Personalized Mug and its selections on separate lines, and an Edit link after the product name

When the order is placed, each item gets its own Gravity Forms entry. The order item links to its entry, and the entry links to its order. With Entry payment updates enabled, the entry also carries the order’s payment status and transaction.

An order's items box with the Personalized Mug and its engraving, font, extras and color

Form setup

↑ Back to top
  • Prices belong in Gravity Forms Product and Option fields. The product’s Regular Price is the starting price, and it needs a value, $0 when the form sets the whole price.
  • A Total field is optional. The product page shows its own totals, and the Total field setting hides the form’s Total field.
  • Gravity Forms Total fields stay off cart items and orders. The item’s price already includes every option, and the entry still saves the total. To list Total fields on items, add add_filter( 'woocommerce_gforms_hide_total_field', '__return_false' );
  • Product forms are submitted with the add to cart, so the form’s AJAX setting and confirmation are bypassed on the product page.
  • Gravity Forms’ honeypot, link detection and reCAPTCHA v3 are disabled for forms on products. A CAPTCHA field prevents the item from being added to the cart, so use CAPTCHA fields only on forms outside product pages.
  • On variable products, with Bulk Variation Forms active, Choose Bulk Form on the product’s Gravity Forms tab sets the form shown with the bulk variations grid. Without one, the grid uses the product’s form.
  • Test a new form on a page first. A form that submits correctly there works the same way on a product.

Supported fields

↑ Back to top
GroupFields
StandardSingle Line Text, Paragraph Text, Drop Down, Multi Select, Number, Checkboxes, Radio Buttons, Hidden, HTML, Section
AdvancedName, Date, Time, Phone, Address, Website, Email, File Upload, List (stored on the order as text), Repeater (Gravity Forms 3.2 and later; one line per row), Page
PricingProduct, Option, Quantity, Shipping, Total

For developers

↑ Back to top

Store API

↑ Back to top

A product’s form is published on the Store API product response under extensions["gravityforms-product-addons"]: the form ID and, for each field the customer fills in, its ID, type, label, whether it is required, the inputs to send and, for choice fields, the exact value to send for each choice.

GET /wp-json/wc/store/v1/products/123

Add the item with the form’s values in gravity_form_values, keyed the way Gravity Forms names its inputs:

POST /wp-json/wc/store/v1/cart/add-item
{
  "id": 123,
  "quantity": 1,
  "gravity_form_values": {
    "input_1": "Happy Birthday",
    "input_2": "Script|2"
  }
}

The values go through the product page’s own validation and pricing. A missing or invalid value returns a 400 response that names each input. File Upload fields take their files on the product page.

Filters

↑ Back to top
FilterUse
woocommerce_gforms_hide_total_fieldReturn false to list Total fields on cart items and orders.
woocommerce_gforms_strip_meta_htmlReturn false to keep a field’s HTML on the order, such as a List field’s table.
woocommerce_gforms_field_display_textChange a field’s text under the item in the cart and on the order.
woocommerce_gforms_item_meta_rowsChange the item’s selection rows in the cart and on the order. The fifth argument, $context, is 'cart' or 'order'.
woocommerce_gforms_cart_edit_redirectChange where the customer goes after saving an edited cart item.
woocommerce_gforms_disable_form_antispamReturn false to keep Gravity Forms’ anti-spam checks on product forms.
woocommerce_gforms_form_output_hookMove the form on variable products to another WooCommerce hook.

A form field with the CSS class wc-gforms-hide-from-email stays off emails, and wc-gforms-hide-from-email-and-admin stays off the order as well.

FAQ

↑ Back to top

How is the final price calculated?

↑ Back to top

Gravity Forms Product Add-ons prices the cart item as the WooCommerce product price plus the total of the form’s Product and Option fields. A $20 product with options totaling $7 is added to the cart at $27. A Regular Price of $0 lets the form set the whole price.

Can one Gravity Form be used on many WooCommerce products?

↑ Back to top

Yes. Gravity Forms Product Add-ons attaches a form to product categories and tags on the form’s WooCommerce tab, and a form can also be chosen on any number of products one by one. Settings made on the form apply to every product that uses it.

Can customers edit a configured product from the cart?

↑ Back to top

Yes. With Cart editing enabled, Gravity Forms Product Add-ons adds an Edit link to the cart item. The link opens the product with the customer’s selections filled in, and saving returns the customer to the cart with the item updated.

Does Gravity Forms Product Add-ons support the Gravity Forms Repeater field?

↑ Back to top

Yes. Gravity Forms Product Add-ons supports the Repeater field in Gravity Forms 3.2 and later. Customers add a row for each person or item, product fields inside each row add to the price, and the cart, the order and emails show one line per row.

Does it work with the WooCommerce Cart and Checkout blocks?

↑ Back to top

Yes. Gravity Forms Product Add-ons works with the Cart, Mini-Cart and Checkout blocks and with the classic cart and checkout. The blocks show each selection on its own line.

Does Gravity Forms Product Add-ons work with block themes?

↑ Back to top

Yes. Gravity Forms Product Add-ons works with block themes, including Purple and Twenty Twenty-Five. The form, the live totals and cart editing work in single-product templates that use the Add to Cart with Options block or the Add to Cart Form block.

What shows under the item in the cart and on the order?

↑ Back to top

Gravity Forms Product Add-ons shows the customer’s selections under the item in the cart, at checkout, on the order, on the customer’s account and in order emails. The Item meta settings choose every field, a set of fields, or one block of text built from merge tags.

Can form fields set the shipping weight, dimensions or quantity?

↑ Back to top

Yes. The Gravity Forms Product Add-ons field map sets the cart item’s weight, length, width and height from Number fields, and its quantity from a Number, Quantity or Single Product field. Shipping rates and labels use the mapped values.

Which Gravity Forms add-ons and Gravity Perks work with it?

↑ Back to top

Gravity Forms Product Add-ons runs the form with Gravity Forms’ own conditional logic, calculations, validation, multi-page forms and notifications. Gravity Forms Product Add-ons works with Populate Anything, Conditional Pricing, Limit Choices, Nested Forms and many other Gravity Perks. To check an add-on or perk on your store, add it to the form and test the form on a product.

Does it send Gravity Forms notifications?

↑ Back to top

Yes. With Notifications enabled in the Entries section, Gravity Forms Product Add-ons sends the form’s notifications when the customer places the order.

Does it work with WooCommerce Subscriptions and Bookings?

↑ Back to top

Yes. Gravity Forms Product Add-ons works with WooCommerce Subscriptions products, including entries for renewal orders, and with WooCommerce Bookings products.

Why doesn’t the form show on the product?

↑ Back to top

Gravity Forms Product Add-ons shows the form on purchasable products, so the product needs a Regular Price, $0 when the form sets the whole price. A JavaScript error from the theme or another plugin also prevents Gravity Forms from rendering the form; the browser console identifies the script.

Are Gravity Forms entries duplicated?

↑ Back to top

Gravity Forms Product Add-ons deletes the entry made when the item is added to the cart, and the order makes one entry per item. With Abandoned cart entries set to Keep, the cart entry stays as well.

How do I keep a large form fast?

↑ Back to top

Split the form into pages with Page fields, and use conditional logic to show each customer only the fields their choices need.

Why don’t the options add to the price?

↑ Back to top

Each Option field must be assigned to a Product field. On a Product field whose quantity the customer doesn’t choose, check Disable quantity field.

Can a choice change the product image?

↑ Back to top

Form fields leave the product image unchanged. Variations change the image, and a variable product can use a form as well.

Does it work with the Partial Entries add-on?

↑ Back to top

Partial Entries saves forms that are started but not submitted. Gravity Forms Product Add-ons creates its entries when the item is ordered, so product forms fall outside what Partial Entries records.

Questions and support

↑ Back to top

Have a question before you buy? Please fill out this pre-sales form.

Already purchased and need some assistance? Get in touch with the developer via the Help Desk.

Related Products

WooCommerce Subscriptions is a WooCommerce extension that lets customers subscribe to your products or...

Power your membership association, online magazine, elearning sites, and more with access control to...

Use of your personal data
We and our partners process your personal data (such as browsing data, IP Addresses, cookie information, and other unique identifiers) based on your consent and/or our legitimate interest to optimize our website, marketing activities, and your user experience.