Checkout Upsells

Overview

Checkout Upsells render a pre-purchase offer block inside Shopify Checkout. When a rule’s trigger conditions match the live cart, the block appears with the offered product and an “Add to order” button. A single click adds the item to the cart without the buyer ever leaving checkout.

Upsells use the same condition engine as discounts, so you can target offers by cart value, customer tags, authentication status, product presence, and cart attributes.

Plan requirement: Pro (up to 10 rules) and Enterprise (up to 30 rules). Starter plans do not include checkout upsells.

Use Cases

Use CaseDescription
Protection plansOffer a 2-year warranty SKU when the cart subtotal exceeds $200.
Free-shipping unlock nudgesFor carts between $30 and $45, offer a low-cost item that nudges the buyer past your free-shipping threshold.
Matching accessoriesWhen a specific SKU is in the cart, promote its companion product.
VIP-only offersExpose an exclusive variant only to customers tagged VIP.

How It Works

  1. You create a rule with a set of trigger conditions and one or more offer variants.
  2. At checkout, the upsell block evaluates your rule against the live cart. If every trigger condition passes, the offer renders.
  3. When the buyer clicks “Add to order”, the offered variant is added to the cart and attribution is stamped onto the line so analytics can track the accept.

The block refreshes automatically as the cart changes, so if the buyer removes an item that made the trigger conditions pass, the offer disappears.

Placement Options

Each rule has a placement that controls which checkout step the block renders on. In a multi-step checkout, this lets you time an offer for the moment the buyer is most receptive.

PlacementWhere the Block Renders
anyEvery checkout step (default).
informationThe contact and shipping-address step.
shippingThe shipping-method step.
paymentThe payment step.

Important: Shop Pay and other one-page checkouts only expose a single step. On those flows, only rules with placement any will appear. Step-specific placements (information, shipping, payment) never match. If an upsell must reach every buyer regardless of checkout type, use any.

Offer Configuration

Each rule’s offer defines what the buyer sees and what gets added to the cart.

FieldDescription
Offer variantsOne or more product variants that the rule can offer. At least one is required.
Display modegrouped shows a single card with a variant picker; separate shows one card per variant.
HeadlineBold heading displayed above the offer (optional).
SubtextSupporting body text below the headline (optional).
CTA labelButton text. Defaults to “Add to order” if not set.
Max quantity per acceptHow many units are added each time the buyer clicks the CTA. Defaults to 1.
PrioritySort order when multiple offers match. Lower numbers render first. Defaults to 100.

grouped mode is usually the right choice when you’re offering a product with size or color variants: the buyer picks the variant inline. separate is better when each variant is a distinct product-like offer (for example, three different protection plans).

Trigger Conditions

Rules can combine any subset of the supported trigger conditions with AND/OR logic. Leaving the condition list empty means the offer always matches.

Supported conditions: cartSubtotal, cartTotalQuantity, cartLineCount, customerTag, customerIsAuthenticated, product, cartAttribute.

Operators mirror those available on discount conditions (greaterThan, between, hasAny, hasNone, exists, and so on). See the Cart-Level Conditions reference for operator details.

Important: Upsells Don’t Apply Discounts

Important: A checkout upsell adds a product to the cart. It does not apply its own discount. If you want the offered product to appear at a discounted price, create a matching Discount Function (for example, a Conditional Discount with the offered variant’s product tag and a percentage discount value). The two features work together: the upsell moves the product into the cart, and the discount prices it.

This separation keeps the system predictable: every discount your buyer sees is driven by your discount configuration, not by a side effect of a different feature.

Analytics Integration

Every accepted upsell is tracked automatically. Acceptance events are surfaced in the Analytics Dashboard with revenue, accept count, top rules, and per-rule trend data, so you can measure which offers drive the most incremental revenue.

No customer identifiers are stored with the acceptance record. Alfo keeps analytics anonymized at the session and order level.

Example Configurations

Protection Plan for Premium Purchases

Offer a 2-year protection plan when the cart subtotal exceeds $200.

SettingValue
Trigger conditionsCart subtotal greater than $200
Offer variantProtection plan SKU (variant GID)
Display modeseparate
Headline”Protect your purchase”
Subtext”2-year coverage for accidents, drops, and spills.”
CTA label”Add protection”
Placementany
Priority50

Free-Shipping Unlock Nudge

When the cart is between $30 and $45, offer a low-cost accessory that pushes the buyer past your $50 free-shipping threshold.

SettingValue
Trigger conditionsCart subtotal between $30 and $45
Offer variantsSocks, hair ties, sticker pack (three variants)
Display modegrouped
Headline”Add one more item to unlock free shipping”
CTA label”Add to order”
Placementinformation
Priority10

VIP-Only Early Access

Expose an exclusive variant only to customers tagged VIP.

SettingValue
Trigger conditionsCustomer tag has any of VIP
Offer variantEarly-access product variant
Display modeseparate
Headline”VIP early access”
Subtext”Available to you before public launch.”
Placementany
Priority25

Managing Upsells

The Checkout Upsells page in the Alfo admin lists every rule with the fields you need to scan quickly:

FieldDescription
StatusEnabled or disabled, with a toggle.
PlacementWhich checkout step the rule targets.
Variant countHow many variants the offer can render.
PrioritySort order when multiple offers match.
DeleteRemove rules you no longer need.

Clicking any rule opens its editor where you can change trigger conditions, offer configuration, placement, and copy.

Next Steps