Product Variations
Variations let you sell the same product in multiple sizes, weights, or configurations — each with its own SKU, price, and stock level. For example, a cannabis flower product might come in 1g, 3.5g, 7g, and 14g options.
When to Use Variations
Use variations when:
- The same product is sold in different sizes (e.g., 1g, 3.5g, 7g, 14g, 28g).
- The same product comes in different package types (e.g., pre-roll single, pre-roll 3-pack).
- You want a single product listing on the POS with selectable options rather than separate products.
Do not use variations when:
- Products are fundamentally different items (e.g., different strains). Create separate products instead.
- You only sell one size of the product. A product with no variations is perfectly fine.
Creating Variations

From the Product Detail Page
- Navigate to Products and click on the product you want to add variations to.
- Scroll to the Variations section.
- Click Add Variation.
Variation Fields
Each variation has the following fields:
| Field | Required | Description |
|---|---|---|
| Name / Label | Yes | A short label for this variation (e.g., "3.5g", "7g", "Pre-Roll 3-Pack"). |
| SKU | Yes | A unique SKU for this specific variation. Must be different from the parent product and all other variations. |
| Price | Yes | The pre-tax selling price for this variation. |
| Cost | No | Your wholesale cost for this variation. |
| Stock | No | Current stock quantity for this variation (defaults to 0). |
| Weight | No | The weight value, if applicable. |
Step-by-Step
- Click Add Variation.
- Enter the Name (e.g., "3.5g").
- Enter a unique SKU (e.g., "BD-35-001").
- Set the Price (e.g.,
29.99). - Optionally enter the Cost (e.g.,
18.50). - Set the Stock level if you have inventory on hand.
- Click Save.
- Repeat for each additional variation.
Adopt a consistent SKU pattern for variations. For example:
- Parent:
BD-001 - 1g variation:
BD-001-1G - 3.5g variation:
BD-001-35G - 7g variation:
BD-001-7G
This makes scanning and CSV management much easier.
How Variations Appear on the POS
When a cashier selects a product that has variations:
- The product tile opens a variation selector.
- Each variation is shown with its name and price.
- The cashier taps the desired variation to add it to the cart.
- The cart shows the product name with the variation label (e.g., "Blue Dream — 3.5g").
If a product has only one variation, the system may add it directly without showing the selector, depending on your store settings.
Managing Existing Variations
Editing a Variation
- Open the product detail page.
- In the Variations section, click the Edit icon next to the variation.
- Update the fields you need to change.
- Click Save.
Variation Display Order
Variations appear on the POS in the order they were created. There is no drag-and-drop reordering interface.
Managing Variation Status
Variations are managed through the parent product's edit page. There is no separate status toggle per variation. To remove a variation from sale, delete it or edit the parent product.
Deleting a Variation
- Open the product detail page.
- Click the Delete icon on the variation.
- Confirm the deletion.
Deleting a variation is a soft-delete — it sets a deleted_at timestamp and hides the variation from all views, but preserves the data for sales history and reporting.
Stock Tracking for Variations
Each variation maintains its own independent stock count. This means:
- The
total_stockmethod calculates the sum of all variation stocks dynamically. The parent product'scurrent_stockfield is separate and not automatically updated. - Stock adjustments must be made on individual variations, not on the parent product.
- Low stock alerts apply per variation if thresholds are configured.
- Purchase orders and stock transfers reference specific variation SKUs.
Stock for individual variations can be adjusted through the stock adjustment workflow or by editing the variation directly on the product detail page.
See Stock Adjustments for more on adjustment workflows.
Variations and CSV Import/Export
When importing or exporting products via CSV:
- Each variation is its own row in the CSV file.
- The parent product name groups them together.
- The
variation_namecolumn distinguishes each variation.
See CSV Import and CSV Export for the exact column format.
Best Practices
- Be consistent with labels. Use the same format across all products (e.g., always "3.5g" not sometimes "3.5 grams" and sometimes "3.5g").
- Set up all variations before activating. Create the product as inactive, add all variations, then set it to active.
- Keep variation counts manageable. Five to eight variations per product is typical. More than ten can slow down the POS selection screen.
- Always assign unique SKUs. Duplicate SKUs will cause barcode scanning conflicts.
What's Next?
- Images — Upload photos for the product and its variations.
- CSV Import — Bulk-add products with variations from a spreadsheet.
- Managing Products — Return to the product list.
- Stock Adjustments — Adjust stock for individual variations.