Checkout Components logo
View the changelog
New Feature

New Feature: Variant-level targeting in compose

recommendations

New Feature: Compose recommendation mappings can now target specific product variants — both for what must be in the cart (the trigger) and for what you want to recommend. Previously mappings only worked at the product level, so any variant of a trigger product would fire the rule. Now you can say "only if the Small Red variant is in cart" and "recommend the Large Blue variant specifically".

When you build a mapping, the product picker now lets you drill into a product and select one or more specific variants. You can mix variant pins and product-level entries in the same mapping.

Here's how it behaves:

  • Variant-pinned trigger: the mapping only fires when one of the selected variants is in the cart. If you pick multiple variants on the same row, any of them will satisfy the rule.
  • Variant-pinned recommendation: the recommended product shows in checkout with the pinned variant already selected, instead of the checkout guessing based on cart contents.
  • Quantity thresholds still apply: if you require "at least 2" of a trigger, the total across all pinned variants of that product must meet the threshold.
  • Mixed rows: a single mapping can combine product-level entries (any variant of that product) with variant-pinned entries on other rows.

Example use cases:

  • "If the cart has the Small Red T-shirt, recommend the Large Red T-shirt" — classic size-up cross-sell on the same SKU.
  • "If the cart has the 1L bottle of olive oil AND the 500g pasta, recommend the Italian Gift Box (Large size)" — multiple triggers, variant-pinned recommendation.
  • "If the cart has any of the Small, Medium, or Large variants of the Basic Hoodie, recommend the Premium Hoodie" — OR-matched variant trigger.

We also added a few quality-of-life improvements to the mappings admin:

  • Search and filter: the mappings list has a search box (matches product IDs, titles, and handles) and tabs for All / Active / Draft.
  • Column sorting: click the Status, Source, or Type columns to sort.
  • Edit in place: each row has an Edit button that reopens the picker with the current product and variants preselected, so updating one entry doesn't mean rebuilding the whole mapping.
  • "Same product on both sides" warning: if a product appears as both a trigger and a recommendation, a banner now explains that you need the component's "Recommend same products" setting enabled for variant-to-variant upsells on the same product to show.
  • CSV support: exported CSVs preserve variant pins as productId:variantId (or productId:vid1|vid2 for multiple variants). CSVs without variant pins continue to work exactly as before.

Existing mappings continue to work without changes — variant pinning is purely additive.