How to charge for product add-ons on Shopify without creating variants
Variants are the native way to sell different versions of a product at different prices. They are the wrong tool for optional extras, because every extra multiplies the variants you already have. Here is why, and what to use instead.
Why variants do not fit add-ons
A shirt in 5 sizes and 4 colours is 20 variants. Add an optional print (yes or no) and it is 40. Add gift wrap and it is 80. Each copy needs its own price and splits your stock count, and a change to the add-on price means editing every one.
Option 1: a separate add-on product
Create a product for the extra and link to it from the description. Free and simple, but the add-on is not tied to the item it belongs to, customers forget it, and the add-on product appears in your collections and search unless you hide it.
Option 2: an options app
Options apps put the extras on the product page as checkboxes, dropdowns or text fields, and add the charge when the item is bought. They differ in how they add that charge. The common method creates a hidden duplicate product or variant for each priced option, which keeps working but clutters your catalog, inventory and reports. Newer apps use a Shopify checkout function instead, which adds the charge at checkout without creating those copies.
Two things worth checking before you install one: that the price cannot be changed by a shopper editing their cart, and that the product stays buyable if the app has a problem.
Varia is our app, so weigh this accordingly. It adds the field, shows the price next to it, keeps a running total on the product page and adds the charge at checkout as its own line, without creating a duplicate product for each option. The free plan covers one live option set with text, dropdown and checkbox fields and flat add-on prices.
Varia charges flat amounts, amounts per choice, per character, or a percentage of the product's price (useful for rush orders and premium materials), and the paid plan adds conditional fields and colour swatches.