> For the complete documentation index, see [llms.txt](https://docs.globo.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.globo.io/options/add-on-pricing/limitations.md).

# Limitations

Everything add-on pricing cannot do, gathered in one place so you find out before you build.

This page lists the limitations of add-on pricing. Most have a workaround. Check them before you build.

## Mode limitations

<table><thead><tr><th width="290">Limitation</th><th>Affects</th><th>What to do</th></tr></thead><tbody><tr><td>No Shopify POS support</td><td><a href="/options/add-on-pricing/add-price-directly.md">Fixed amount</a></td><td>Use a product-backed mode on any option set published to POS. See <a href="/options/point-of-sale/limitations.md">POS limitations</a></td></tr><tr><td>No stock, so no out-of-stock display</td><td><a href="/options/add-on-pricing/add-price-directly.md">Fixed amount</a></td><td>Use a product-backed mode</td></tr><tr><td>No SKU, weight, or tax setting</td><td><a href="/options/add-on-pricing/add-price-directly.md">Fixed amount</a></td><td>Use a product-backed mode if any of those matter</td></tr><tr><td>Does not appear in Shopify product reports</td><td><a href="/options/add-on-pricing/add-price-directly.md">Fixed amount</a></td><td>Use a product-backed mode</td></tr><tr><td>Generated products are visible to browsing until you exclude them</td><td><a href="/options/add-on-pricing/auto-generate-a-product.md">New product</a></td><td>Exclude the <code>globo-product-options</code> tag from collections and search. Do not unpublish them</td></tr><tr><td>Generated products do not track stock until you turn it on</td><td><a href="/options/add-on-pricing/auto-generate-a-product.md">New product</a></td><td>Enable tracking and change the inventory policy. See <a href="/options/add-on-pricing/stock-and-inventory.md">Stock and inventory</a></td></tr><tr><td>The link breaks if the product or variant is deleted in Shopify</td><td><a href="/options/add-on-pricing/use-an-existing-product.md">Existing product</a></td><td>Relink. The app tells you when the target no longer exists</td></tr></tbody></table>

## Option types that cannot carry a price

<table><thead><tr><th width="330">Type</th><th>Workaround</th></tr></thead><tbody><tr><td><a href="/options/option-types/input-types/phone.md">Phone</a>, <a href="/options/option-types/input-types/email.md">Email</a></td><td>Put the charge on a Switch beside it</td></tr><tr><td><a href="/options/option-types/input-types/hidden-field.md">Hidden field</a></td><td>Nothing to charge for — the customer makes no choice</td></tr><tr><td><a href="/options/option-types/input-types/date-and-time-picker.md">Date and time picker</a></td><td>Charge for express delivery on a separate Radio button or Switch</td></tr><tr><td><a href="/options/option-types/input-types/file-upload.md">File upload</a></td><td>Charge a setup fee on a separate Switch</td></tr><tr><td><a href="/options/option-types/input-types/range-slider.md">Range slider</a></td><td>Use <a href="/options/option-types/input-types/number.md">Number</a>, which can drive an add-on quantity</td></tr><tr><td><a href="/options/option-types/selection-types/font-picker.md">Font picker</a></td><td>Charge for a premium font on a separate option</td></tr><tr><td><a href="/options/option-types/selection-types/product-links.md">Product links</a></td><td>It navigates away — the destination product carries its own price</td></tr><tr><td>All <a href="/options/option-types/static-types.md">static types</a></td><td>They collect nothing</td></tr></tbody></table>

For all of these types, apply the charge to a [Switch](/options/option-types/input-types/switch.md) or [Checkbox](/options/option-types/selection-types/checkbox.md), then use [conditional logic](/options/conditional-logic/conditional-logic.md) to display the two options together. See [Where you can set add-ons](/options/add-on-pricing/where-you-can-set-add-ons.md).

## Behavior to be aware of

<table><thead><tr><th width="290">Behavior</th><th>Why it matters</th></tr></thead><tbody><tr><td><strong>Hidden options are not charged</strong></td><td>A conditional rule that hides a priced option also removes its charge. This is usually what you want, but make sure to check both branches of the rule.</td></tr><tr><td><strong>Priced default values charge on page load</strong></td><td>The product looks more expensive than advertised before the customer does anything</td></tr><tr><td><strong>Every selected value is charged on a multi-select</strong></td><td>Cap it with <a href="/options/option-types/shared-settings/limits.md#min-and-max-selections">Max selections</a></td></tr><tr><td><strong>Add-on quantity is per option, not per value</strong></td><td>All values in one option scale the same way. Except <strong>Mixed quantity</strong>, which gives each its own box</td></tr><tr><td><strong>Duplicating an option set shares its add-on products</strong></td><td>Both sets draw down the same stock. See <a href="/options/option-sets/duplicate-and-delete.md">Duplicate and delete</a></td></tr><tr><td><strong>Deleting an option set leaves its generated products behind</strong></td><td>Tidy them up in Shopify admin if the set is gone for good</td></tr><tr><td><strong>Formulas cannot subtract</strong></td><td>Dimension pricing must be expressed with multiplication, addition, and division. See <a href="/options/add-on-pricing/dimension-formula.md">Dimension add-on formula</a></td></tr><tr><td><strong>Negative prices are rejected</strong></td><td>You cannot use an add-on to discount the main product</td></tr><tr><td><strong>Display settings are store-wide</strong></td><td>There is no per-option-set control over how prices are shown</td></tr></tbody></table>

## Features that add-on pricing does not include

<table><thead><tr><th width="330">You want</th><th>The right tool</th></tr></thead><tbody><tr><td>A discount when several options are chosen</td><td>A Shopify discount, or a bundle app. Add-ons only add</td></tr><tr><td>A price that goes down</td><td>Not possible — negative prices are rejected. Price the base product lower and charge for upgrades instead</td></tr><tr><td>Tiered pricing — cheaper per unit at volume</td><td>Size or quantity bands as separate priced values on a <a href="/options/option-types/selection-types/radio-button.md">Radio button</a></td></tr><tr><td>A minimum order charge</td><td>A Shopify setting or app, not an option</td></tr><tr><td>Different prices for different customers</td><td>Two option sets with different prices, split by <a href="/options/option-sets/assign-to-customers.md">customer rules</a></td></tr><tr><td>Different prices per country</td><td>Two option sets split by <a href="/options/option-sets/assign-to-countries.md">country rules</a>, or Shopify Markets pricing on the add-on products</td></tr><tr><td>Add-ons on a subscription</td><td>Depends on your subscription app — test before promising it to customers</td></tr></tbody></table>
