Skip to main content
Product variants let you sell multiple versions of a product (e.g., different sizes or colors) under a single product record, each with its own price and code.

How Variants Work

Variants are built from Variant Options — brand-level axis definitions (e.g., “Color”, “Size”). On the product, you select which options apply, then define each combination as an individual variant row.

Linking a Variant to an Existing Product

A variant normally points at a product you already have rather than owning its own commercial data. Set Linked product on the variant row and everything downstream — SKU, inventory, fulfilment, payouts, merchant_product_ids, postback matching — keeps resolving through that product’s code, exactly as it did before. This is the difference from Shopify, and it is deliberate. In ElasticFunnels the product code is the identity the whole system is keyed on, so a variant that owned a separate price and SKU would need all of that duplicated. Linking keeps one source of truth:
  • The variant is presentation — which option values it represents, what order it appears in, which one is selected by default.
  • The linked product stays the sellable thing, unchanged.

Worked example: pack sizes

A supplement sold as 1, 3 and 6-bottle packs, where each pack is already its own product: The dashboard product list shows one MenoSoothe row instead of three, the storefront renders one page with a picker, and add-to-cart still submits menosoothe-3.
Leave Linked product empty for a standalone variant that carries its own price, SKU and inventory. Mixing both styles on one product is supported — each variant resolves independently.

Field resolution order

For every commercial field the variant’s own value wins when set, and the linked product fills in the rest:

Default Variant

Every product with variants has exactly one default — the variant used when no selection is made. If you do not flag one, the lowest Position wins. This guarantees a product can always be added to a cart without an explicit choice.

Setting Up Variant Options

Before adding variants to a product, create the variant option definitions:
  1. Go to Settings → Products → Variant Options
  2. Create a new option (e.g., Color with values: Red, Blue, Green)
  3. Repeat for each dimension (e.g., Size with values: S, M, L, XL)

Adding Variants to a Product

  1. Open the product and go to the Variants tab
  2. In Variant Options, check the options that apply to this product (e.g., Color and Size)
  3. In Product Variants, click Add Variant for each combination
  4. For each variant row, fill in:
    • Code — Unique variant identifier
    • Price — Variant-specific price
    • One field per selected option (e.g., Color, Size)

Per-Variant Pricing

Each variant has its own Price field. If left blank, the product’s base price is used at checkout.

Variant Option Values (option_values)

Each variant stores its option selections as option_values — a map of option slug to selected value:
This map is available in the template engine as variant.option_values.

Variant Attributes

Product Attributes with applies_to = variant or applies_to = both can store values per variant. These appear in each variant row in the Variants tab and are managed independently. To set up variant-scoped attributes:
  1. Go to Settings → Products → Product Attributes
  2. Create or edit an attribute and set Applies To to Variant or Both
  3. Open any product → Variants tab — variant rows will include inputs for these attributes
See Product Attributes for full documentation on the attribute system.

Template Access

Variants are available on the product object:
Each variant object:

Displaying All Variants

Accessing Variant Attributes