How Do I Add Product Variants With Different Prices?
Define option sets like Size, Color, or Material and then override the price on individual variant combinations — each variant can have its own price, SKU, weight, and inventory count.
Most physical products come in variations — different sizes, colors, materials, storage capacities, whatever. VeloCMS handles this with a multi-dimensional variant tree: you define option groups (Size, Color, Material), list the values for each, and the system generates every possible combination automatically. Then you go in and customize individual combinations — price override, stock count, SKU, weight. The matrix generator does the tedious combinatorial math so you don't have to.
Creating option groups
Open a product from Admin → Products and scroll to the Variants tab. Click 'Add option' to create your first dimension. Give it a name (Size, Color, Material — anything), then add the values: S, M, L, XL for a size option, or Red, Blue, Green for colors. You can have up to three option dimensions per product. Most stores use one or two; three is rare but useful for something like 'Print on Canvas / Size / Frame Color.'
Once you've defined all option groups and their values, click 'Generate variants.' VeloCMS creates a row for every combination — so three sizes times four colors gives you twelve rows. Each row starts with the base product price inherited from the product-level price field.
Price overrides per variant
Here's the key part: in the variant table, the Price column is editable. Click into any variant's price cell and type a different value. That variant will charge the overridden price at checkout rather than the base price. You don't have to override every variant — leave cells empty to inherit the base, and only change the ones that genuinely cost more or less. XL often costs more. Limited-edition colorways often cost more. Refurbished-grade variants of an electronics product often cost less. All of that is straightforward in the grid.
Price overrides are absolute, not relative. If the base price is $29 and you want the XL to be $5 more, enter $34, not +5. There's no 'add $5 to base' formula syntax — just the actual price you want to charge.
SKUs, weights, and inventory per variant
Each variant row also has fields for SKU, weight, and stock quantity. SKU is free-form text — use your warehouse's naming convention. Weight matters if you're using weight-based shipping rates; each variant gets weighed independently, so a dumbbell in 5kg and 10kg options genuinely charges different shipping. Inventory tracks per variant: the blue XL and the red XL are separate counts. The low-stock alert system respects this granularity too — it will email you about the blue XL running low even if the red XL has plenty in stock.
Variant images
Each variant can have its own image, separate from the main product hero image. Click the image slot in the variant row, upload or paste a URL, and VeloCMS swaps the product page's featured image whenever a customer selects that variant — pick Blue, see the blue version. This is the standard storefront experience shoppers expect from major retailers, and it does real work: color variants without separate images see noticeably higher returns and refund rates because customers feel surprised by what arrived.
Editing and deleting variants
You can add new values to an existing option group (add XS or XXL to a size option) and VeloCMS will generate the new variant rows while leaving the existing ones untouched. Deleting a value from an option group is more drastic — it removes all variants containing that value. If those variants have pending orders, VeloCMS will warn you before proceeding. You can't delete a variant that's attached to an unfulfilled order.
How variants appear at checkout
On the public product page, option groups render as dropdowns or swatch grids (configurable in your theme settings). As the customer makes selections, the displayed price updates live to reflect the selected variant's price. If a combination is out of stock, that combination is visually greyed out — customers can see it exists but can't add it to cart. When they add a variant to cart, the cart line item shows the option values selected ('Blue / L') alongside the variant price, not the base product price.