Where it gets stuck.
slab is a unique piece of stone. It has a block number, a quarry origin, a vein pattern different from every other slab in inventory, and dimensions specific to the slab — not the SKU. The default Shopify product model treats inventory as fungible units of a SKU. A slab does not fit that model. Customers do not buy 'one unit of marble'; they buy this exact piece of marble, with these exact photos, from this exact quarry.
Why it happens.
Every Shopify theme assumes variants are interchangeable. A medium black t-shirt is the same as another medium black t-shirt. Slab commerce inverts that — every slab is a variant of one, with its own SKU, its own media set, its own dimensions, and its own customer-facing reservation logic (typically a 24–48 hour hold while the customer confirms). Themes have no surface for any of that. Brands trying to sell slabs through a stock theme end up either listing slabs as products with no inventory logic (every customer can 'claim' the same slab) or listing one product per slab and creating 200+ product pages with one-unit inventory each.
The size of it.
The correct architecture treats each slab as a variant of a parent material product, with custom metafields for block number, quarry, dimensions, and a hold timer managed by Shopify Flow. The slab gallery component fetches and renders variant media. When a customer claims a slab, Flow triggers a 36-hour hold; if not confirmed, the hold expires and the slab re-lists. Brands that get the slab architecture right see AOV lifts of 20–40% on slab-grade products because customers actually trust what they are buying — and trust is the only thing that moves a $14,000 slab from cart to checkout.
Filed from inside a working engagement. Edited only for client privacy — the numbers and the mechanisms are exact.