How to Use Variants

Variants let you offer a single service (e.g., "Comforter wash") in different sizes (Small, Medium, Large) at different prices — instead of creating one product per size. Cleaner catalog, same flexibility at the POS.

Variant manager modal showing the Size type with chico, grande, mediano values
Variant manager — define attribute types once, reuse on any product

When to use variants

Use variants when the same service has different prices depending on a property of the item (size, color, fabric). For example: washing a comforter costs $80 for a twin, $120 for a queen, $160 for a king — same service "Comforter wash", three prices.

ConsejoFor binary options like "delicate wash" or "with cover" → use Extra Charges. Variants are for the main attribute that changes the price; extras stack on top.

Step 1 — Create a variant type

In Products, click the Variants button at the top of the toolbar (the one with the NEW badge).

Products toolbar with the highlighted Variants button
The Variants button opens the variant manager

In the + New Type card, type a name (e.g., "Size") and the values separated by commas (e.g., "small, medium, large"). Click Create type.

New type form with Size as name and small, medium, large as values
Create a type and its initial values in one step

The type appears at the top of the modal as a card with its values rendered as vibrant teal pills. You can add more values from the same card later, or remove individual ones with the × button.

Type card with three pills and a new input adding "king size"
You can add new values anytime from the same input

Step 2 — Enable the variant on a product

Open any product (click its card to edit).

Find the "Enable variant (Size, Type...)" checkbox and turn it on. A section appears below.

Edit product modal with the enable variant checkbox unchecked
Turn on the variant block to associate a type with this product

Step 3 — Pick the type and set the price per variant

Click the chip with the type you want (e.g., "Size"). It highlights to mark the selection and the price table appears below with one row per value.

Type a price in each row. Values left empty fall back to the product's base price. Set only the ones that differ.

Price table with three rows: small, medium, large with $120 placeholders
Each variant can have its own price — empty rows use the base price
ConsejoUse the "Apply to all" button to fill the same price in every row in one click — useful when most variants share a price.

Type the price in each row.

Click Update Service at the bottom. Done.

How it looks at the POS

When the product has variants, the POS card shows a small badge with the type name (e.g., "Size").

POS product card with the Size badge highlighted
The badge tells the cashier this product has variants

Tapping the card opens a picker with all the available values — each one shows its real price live. The cashier picks the size, sees the price, and clicks Add.

POS picker with size chips and live price preview
Picker — choose the size, see the price, add to cart

Adding the same product with a different variant creates a separate line in the cart. The same variant tapped twice increments the quantity.

Cart line showing service name, variant "Size: medium", and resolved price $160
Cart line includes the variant selection under the service name
NotaThe "No size" chip lets the cashier add the product without committing to a specific variant — falls back to the base price. Useful when the variant doesn't apply for that particular sale.

How it looks in the order detail

When you open an order from the Orders or Reports list, every line shows its variant below the service name. Prices are frozen at the moment of sale — even if you change variant prices later, history stays intact.

Setup ideas for your business

Here are some real configurations our customers use. Copy the one that fits your business or use them as inspiration:

ConsejoComforters / bedding — Type: "Size". Values: Twin, Full, Queen, King. Price: $80 / $100 / $120 / $160. One product "Comforter wash" replaces 4 separate services.
ConsejoBlankets (frazadas) — Two types: "Thickness" (thin, medium, thick) + "Size" (twin, super king). Each combination gets its own price in the 2D matrix. See the Advanced Variants guide.
ConsejoSneaker / cap cleaning — Type: "Material" (canvas, leather, suede). Different materials require different cleaning and time, so each one has a different price. Add Color as an identifier to track which one is which.
ConsejoShirts / alterations — Type: "Alteration" (shorten sleeves, take in waist, hem). Each alteration has its price. The base product "Shirt alteration" stays the same.
ConsejoCurtains — Type: "Size" (small window, large window, patio door). Priced by the size of the curtain panel. A single product "Curtain wash" covers everything.
ConsejoRugs — Two types: "Material" (synthetic, wool, silk) + "Size" (small, medium, large). Wool + large is the most expensive; synthetic + small the cheapest.

Remember: if the attribute doesn't change the price (like Color for most businesses), use "Identifies only" mode. The variant appears on the ticket as a label without affecting the total.

Frequently asked questions

Can I have more than one variant per product (e.g., Size AND Color)? Yes! See the Advanced Variants guide for 2D pricing matrices, Color as an identifier, and more.

What happens to past orders if I delete a variant? Nothing. Past orders keep the variant name and the frozen price — the snapshot is stored inside the order line.

Can I migrate from "one product per size" to variants? Yes. Delete the legacy products (soft delete — history is safe) and create a single product with the variants assigned. Reports and finance stay 100% intact because line items store a denormalized snapshot.

What if I delete all values of a type? Products that used it stop offering the variant in the POS automatically — no errors, just falls back to the base price. Historic orders keep the saved variant.