Shopify conditional product option logic: a surcharge should fire only after the shopper enables the parent option. Premium if/then, not a SKU grid.
2026-10-09

Shopify conditional product option logic: price follows the last pick

A made-to-order table is sold with a standard plinth or a custom base. Leg style should only cost money after someone picks the custom base. Shopify conditional product option logic is that sequence: parent choice first, surcharge second. Native variants do not sequence anything. Three options sit on the form at once. Every combination is a SKU — including “standard plinth + designer legs” you never weld.

This is not a size threshold. Thresholds live in Shopify conditional pricing (minimums, higher m² past 200 cm). Here the trigger is the option itself. Options Price Calculator keeps the extra picks off the variant matrix and, on Premium, lets the total listen to the previous control.

Why the third option cannot wait

Shopify variants are stocked combinations. Adding variants still caps a product at three options and 2048 variants. The old 100-variant ceiling is gone; the three-option cap is not.

Base (standard / custom) × Legs (none / pin / splayed) × Finish (six stains) is 2 × 3 × 6 = 36 SKUs. Twelve of those are nonsense: a standard plinth with splayed legs. They still occupy cells. Shoppers still see Legs, because a native option has no “only after Base = custom” switch.

You have also spent the third option. Continuous length no longer fits — same wall as more than three product options. Adding a fourth option is not the fix. The fix is a total that reads the parent field, outside inventory.

Theme line item properties (`properties[Base]`, `properties[Legs]`) write the labels onto the line. They do not change the price. Shoppers configure a custom base, pick splayed legs, and still pay the static variant amount — or you quote by email.

Patterns shops outgrow

Fill the cartesian and hope nobody picks the dead cells

You hide “do not select” in the description. Someone selects it anyway.

Two products: “standard table” and “custom base table”

Two URLs, two review counts. Switching base means leaving the page.

A footnote instead of a live total

“Custom base from $180, legs quoted after.” No Add to cart for custom base plus stock pin legs.

None of that gives you extra fields beside the three SKU options, and a total that adds legs only when the custom base is on.

Extra fields, then Premium if/then on the pick

Options Price Calculator is Built for Shopify (5.0 from 26 reviews on the listing). Unlimited product options — the listing lists Checkboxes, Dropdowns, Radio buttons, and Conditional logic — plus formula pricing and a live total, without extra variants. Starter $9.99/month: unlimited options, formula builder, metafields, multilingual, AI. Premium $14.99/month: + conditional logic for dynamic pricing, Font Picker, live preview, price breakdown. Free: 20 uses; always free on a Shopify Develop plan. Billed in USD.

Keep stain as the variant (SKU, purchasing). Put base and legs on the calculator. A single formula `product_price + custom_base + legs` still adds legs when the base is standard. That is not option logic. In tab 4c. Formula, switch to Conditional formulas — Premium only. Switching back to a single formula turns the branches off.

A checkbox as the parent, not a stocked option

The Checkbox is one on/off. Label `Custom base`, key `custom_base`. Numeric value may be `0` when the tick exists only for logic — the docs say so: use `0` if the checkbox is “only used for logic or conditions”. If the base itself costs money, put `180` (or your supplier number). Unchecked = `0`. Variables and Field Values is the same rule: checked = configured number, otherwise `0`.

Conditional Pricing (Premium) compares against `TRUE` and `FALSE`. Example 8 in the formula examples is that branch:

``` premium_finish == TRUE ```

Then: `product_price + 20`. Else: `product_price`.

For the table: custom base on → the then formula. Custom base off → else, no legs.

Which row, not only which number

A Dropdown is exactly one pick. Each row has a label and a Value (float). On Starter that float goes into the main formula — a plain dropdown surcharge, not a branch.

Two rows that share a float — `Pin` and `Splayed` both `1` as a multiplier — cannot be told apart in a single formula. Conditional rules also get position: `{key}_optidx`, zero-based, conditions only, not the regular formula. Dropdown docs call it 1st / 2nd / 3rd. Radio and swatch behave the same way.

Rules run top to bottom. First match wins. Comparisons plus AND / OR. Else is required so a price always exists.

Legs only after custom base

One condition:

``` custom_base == TRUE ```

Then:

``` product_price + (length * width * finish) + custom_base + legs ```

Else:

``` product_price + (length * width * finish) ```

`custom_base` in the then branch is the checkbox float (180). `legs` is the selected dropdown float. If the box is off, `legs` never enters the sum — even if the dropdown still shows Splayed. That is the documented option logic: the *price* follows the parent. Docs do not describe hiding the second field; do not promise a disappearing control.

Parent plus a specific row, in the same shape as `width > 200 AND height > 150`:

``` custom_base == TRUE AND legs_optidx == 2 ```

Then: `product_price + area + 180 + 95` (third legs row, index 2). Else: the standard sum. Avoid overlapping ranges. Keep a safe else.

Round in the then/else formulas (`Math.round`, `Math.ceil`). Math helpers belong in the formula, not in the comparators.

A table line, one stain SKU

Native variants: stain (six values). One of your three options. No “Base” option. No “Legs” option.

Calculator:

  • Number `length` and `width` in cm, required, min/max from the workshop

  • Checkbox `custom_base`, value `180`, default off

  • Dropdown `legs`: `None` → `0`, `Pin` → `40`, `Splayed` → `95`

  • Conditional, Premium:

  • `custom_base == TRUE` → `product_price + ((length / 100) * (width / 100) * finish) + custom_base + legs`

  • else → `product_price + ((length / 100) * (width / 100) * finish)`

Shopper picks oak (€120), 180 × 90, custom base on, splayed legs: `120 + (1.80 * 0.90 * finish) + 180 + 95`. Same stain, box off: no 180, no 95, even if Legs still reads Splayed from a previous click. Check that in preview before you publish.

Finish rate can be a metafield or a dropdown. Keep the variant price for the stain SKU. Link one calculator across the series when only `product_price` changes.

Made-to-measure furniture is the size story. This article is the parent switch: custom base first, legs in the total second.

Get it live

  1. Install Options Price Calculator. Free: 20 uses (always free on Develop). Starter $9.99/month for fields and one formula. Premium $14.99/month for conditional logic.

  2. Drop the app block on the product template, under the price and above Add to cart — How to Add the Extension to the Product Page.

  3. Add the parent control (checkbox or dropdown) plus the field that should only price when the parent is on. Keys lowercase: `custom_base`, `legs`.

  4. Keep stain as Shopify variants. Do not store base/legs as option values.

  5. Tab 4c: Conditional formulas. First condition on the parent (`== TRUE` or `{key}_optidx`). Then = sum with the surcharge. Else = sum without. Preview: uncheck the parent, leave the child selected, confirm the total drops.

Server-side price validation (app setting) stops the browser total from being the only check. Theme bindings exist because themes differ — not “works everywhere with no setup”. AI can draft fields; if/then stays Premium. On Starter you get an upgrade notice, not silent branches.

Wrap-up

Shopify conditional product option logic is not another column in the variant grid. Native Shopify shows three options every time, in every combination, up to 2048 cells. Designer legs on a standard plinth become a SKU you do not want. Extra calculator fields buy you space. Premium if/then buys you order: the surcharge follows the last pick.

Put that rule in Options Price Calculator and let the next shopper pay for a custom base plus legs — without a dead SKU, without a quote email.

online origins logo full

The Shopify Select partner for ambitious e-commerce businesses that want to grow!

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

Shopify conditional product option logic: price follows the last pick