Shopify product page add-ons: a gift-wrap or rush checkbox that actually changes the price — no extra variants or sibling fee SKUs.
2026-09-11

Shopify product page add-ons: gift wrap without extra variants

Gift wrap, a handwritten card, rush production, an extra year of warranty: those are Shopify product page add-ons, not a new size or colour. Stores still model them as a fourth variant option, or as a theme checkbox that shows up on the order and never in the total. The shopper ticks “+ $4.95 wrap”. Checkout charges the catalog price.

If you sell gifts, prints, jewellery, or anything with optional extras, this is the gap. Native variants and Liquid line-item properties are the wrong tools. Below: the current Shopify caps, the workarounds that fail in Community threads, and how Options Price Calculator turns a checkbox into a surcharge the cart actually collects.

Why an extra is not a variant

Adding variants still limits a product to three options and 2048 variants. The variant ceiling moved from 100 to 2048 in October 2025 (changelog). Useful when Small/Medium/Large are real SKUs. Useless when “gift wrap” would be option four, or when Size, Color, and Material already occupy the three slots.

Treat wrap as a variant and you duplicate every combination. Ten sizes × eight colours = 80 SKUs; add yes/no wrap and you have 160. Inventory on “wrapped / red / M” is fiction — you wrap after the order. Feeds, discounts, and POS inherit the noise. You also spent the three-option budget on something that is not stock.

Shopify’s own vintage guide Add a gift wrap option pushes a separate product into the cart. Fine until a shopper deletes that line, until wrap costs differ per product, or until you need three extras at once (wrap + card + rush). Then you are maintaining Ajax, hidden SKUs, and theme code.

What stores try — and where it breaks

1. A Liquid checkbox

How to add a checkbox for gift wrapping on a product page? is the classic recipe: drop `<input name="properties[Gift wrap]">` into the product form. Fulfilment sees “Yes”. The price does not change. How to add a chargeable add-on repeats the trap: a cart-template snippet *displays* +¥500, checkout never bills it unless you add a fee SKU, a draft order, or a cart transform. We covered the same ceiling in line item properties do not change price.

2. A sibling product plus Ajax

In Add a price “from $X” the staff answer is: make wrap its own product, paint a new total with JavaScript, and POST both lines through `/cart/add.js`. Shoppers remove the wrap line. Shop Pay never runs your script. Per-SKU wrap rates mean a pile of hidden products.

3. Burn a variant option on the extra

“Finish: standard / gift / deluxe” looks tidy until Size and Color already exist, or until deluxe wrap is a flat $12 regardless of SKU. Then you retouch every combination by hand. Miss one cell and you sell under cost.

A checkbox that actually adds money

Options Price Calculator puts unlimited fields on the product page — checkboxes, radios, dropdowns, text, file upload — without minting SKUs. The checkbox field is built for optional extras.

The docs example is literally gift wrap, from Pricing / Formula Examples:

``` product_price + gift_wrap ```

Field setup:

  • Label: `Gift wrapping (+ $4.95)`

  • Key: `gift_wrap` (lowercase, numbers, underscores only)

  • Numeric value: `4.95`

  • Default: unchecked

Checked, the formula adds `4.95`. Unchecked, the variable is `0`. The storefront price updates as the shopper ticks. The selected extras travel with the order, so packing and the confirmation email see the same add-on.

Stack several extras without Premium:

``` product_price + gift_wrap + greeting_card + rush ```

Three checkboxes, three keys, three numeric values. No 2³ extra SKUs. If the shopper must pick *standard wrap* ($4.95) *or* *deluxe box* ($12) — mutually exclusive — use a radio or dropdown: each option carries a numeric value, “none” is `0`.

Conditional formulas (Premium) matter when the surcharge depends on something else: deluxe wrap only if a card is ticked, or a floor price. See Conditional Pricing. Live preview of text on a box is Premium (Product Personalizer). A flat wrap fee is not.

Keep native variants for stock: a colour you warehouse, a SKU with its own cost. Wrap, rush, and a card sit *beside* that SKU.

Example: a candle shop in December

Eight scents × three sizes = 24 inventory SKUs. Peak season extras:

  1. Gift wrap — $4.95 (checkbox)

  2. Handwritten card — $2.50 plus a text field (checkbox + custom text)

  3. Ship before 20 December — $7.50 (checkbox, or a date field if you show a cutoff)

Native Shopify would need option four and five, or 24 × 2 × 2 extra combinations. In OPC the 24 SKUs stay. Attach the calculator to the product (or per variant if one scent uses a different wrap rate). Formula:

``` product_price + gift_wrap + greeting_card + rush ```

`greeting_card` is `2.50` or `0`. The message field does not price anything; it only lands on the order. Test wrap on/off first, then add the card. Round in the formula if you need exact cents (`Math.round` at the end).

Jewellery shops use the same pattern (polish cloth + pouch). Poster shops: tube vs. flat. B2B: rush next to a setup fee. Engraving with free text is a sibling use case; add-ons are the surcharge without the personalisation layer.

What you need to go live

  1. Install Options Price Calculator. Free: 20 uses (always free on a Shopify Develop plan). Starter ($9.99/mo): unlimited options, formula builder, metafields, multilingual. Premium ($14.99/mo): conditional logic, font picker, live preview, price breakdown.

  2. Add the app block on the product template: theme editor → Products → Default product → Add block → Apps. Sit it under the price, above Add to cart. Walkthrough: How to add the extension to the product page.

  3. Create a calculator. First field: checkbox `gift_wrap`, numeric value = your fee. Optional: more checkboxes or a radio for wrap tiers.

  4. Formula: `product_price + gift_wrap`. Preview checked and unchecked.

  5. Link the calculator to the product or variant. On the storefront, tick the box and verify cart and checkout, not only the product page.

  6. Heavily custom theme? Run the selector picker for price and Add to cart. Most themes work out of the box; custom markup often does not.

Server-side price validation (safety) is a global Theme setting, off until you save it on. Use it if you do not want a browser payload to rewrite the quoted total. It is not a Premium-only switch.

Wrap-up

Shopify product page add-ons should not consume a variant option. Three options and 2048 variants protect a SKU grid; they were never designed for “+ wrap”. A Liquid checkbox stores text. A hidden gift-wrap product can leave the basket. `product_price + gift_wrap` puts the fee in the same number checkout charges.

Install Options Price Calculator and attach it to one product this week. When December volume hits, reuse the calculator across the catalog — without 160 new SKUs.

online origins logo full

Custom webshops, websites, and applications combined with smart online marketing to help your business grow online!

linkedin online origins iconinstagram online origins icon

Reviews

5/5

Check on Google

Mail: info@onlineorigins.nl

Tel: 073 234 0612

KVK: 89825624

BTW: NL865123639B01

Bruistensingel 500,
5232 AH 's-Hertogenbosch
Cookies

© 2026 Online Origins