Summary Matrix
| Attribute | Product | Variant |
|---|---|---|
| Representation | Abstract marketing container | Specific physical or digital item option |
| Example | Leather Jacket | Leather Jacket / Brown / Size Large |
| Price | Usually a price range (min/max) | Exact selling price |
| Inventory | Aggregate sum of child variants | Exact stock count per location |
| SKU & Barcode | Does not have its own SKU | Has unique SKU and barcode/UPC |
| Cart & Checkout | Cannot be added to cart directly | Directly added to cart and purchased |
Key Differences
1. Conceptual Container vs. Purchasable Unit
A Product exists to market a set of related choices under one title, URL slug, and image gallery. A Variant represents the exact selection (e.g. Size: Medium, Color: Red) chosen by a shopper.
2. Inventory & Stock Allocation
Inventory is tracked at the Variant level. Physical warehouse bins store specific sizes and colors. A Product only reports inventory as the sum total of all its child variants.
3. Pricing Logic
While many stores sell all variants at the same price, variants can have distinct pricing (e.g. Size XXL costing $2 more, or a 500GB laptop model costing $300 more than the 250GB model).
Developer Takeaway
Database Normalization: In relational database design, products and variants are connected by a 1-to-Many relationship (1 Product → N Variants). Every purchasable product has at least one variant, even if it has no options (often called a "Default Variant" or "Single Variant").