How to target a popup by cart value or specific products
Show a popup only when the cart hits a value threshold, contains specific products, or matches a customer-value tier.
Cart-aware popups outperform generic ones for one reason: they meet the shopper at a moment of real intent. A free-shipping nudge fired at $42 in the cart converts; the same message on the homepage doesn't. Here's how to wire that up in Nudgesmart.
TL;DR
Open your campaign's Targeting panel and add a rule using Cart Total or Cart Item Count for cart-value thresholds, Product Viewed or Collection Viewed for current page context, Products Purchased for past-order history, and RFM Group or Predicted Spend Tier for customer-value tiers. Combine rules to build precise audiences — "cart total at least $75 plus shopper viewing the Sale collection" — then layer behavior triggers so the popup fires at the right moment.
Cart-value triggers — Cart Total and Cart Item Count
Two cart fields cover most use cases: Cart Total (the cart's running dollar value) and Cart Item Count (how many line items are in the cart). Both update in real time as the shopper adds, removes, or changes quantities.
Cart Total is the right field for free-shipping nudges, minimum-order discounts, and "spend $X more" upsells. The merchant-facing operators are is, is more than, is less than, is at least, and is at most. A typical free-shipping nudge: "Cart Total is less than 50."
Cart Item Count is the right field for bundle prompts ("Add a third item for 10% off") and stock-up nudges. It counts line items, not unit quantities — five units of one SKU is one item.
The Targeting panel inside a campaign showing a Cart Total rule set to is less than 50, with the operator dropdown expanded to show all five comparison options.
Screenshot coming soon
A common mistake: cart-value rules in a campaign that's also page-targeted to the homepage. The homepage shopper has no cart yet, so a "cart total at least $50" rule will never match there. Drop the homepage page rule, or run cart logic on cart-aware pages only (Product, Collection, Cart).
Specific product or collection — three distinct fields
This is where merchants get tripped up most often. Nudgesmart exposes three fields that sound similar but answer different questions, and picking the wrong one quietly breaks the campaign.
Products Purchased asks "did this shopper buy this product in the past?" It uses Shopify order history. Pick this for replenishment reminders or accessory upsells to past buyers. It does not look at what the shopper is browsing right now.
Product Viewed asks "is this shopper looking at this product right now?" It uses current page context — the product detail page the shopper has open. Pick this for hesitation nudges on a single SKU or product-specific bundle offers. It does not look at order history.
Collection Viewed asks "is this shopper currently on this collection page?" Same idea as Product Viewed but for collection-level pages — Sale, New Arrivals, a specific category. Pick this when the offer is collection-wide.
The shorthand: Products Purchased = past behavior. Product Viewed and Collection Viewed = present behavior. They're not interchangeable.
Three rule rows in the Targeting panel side by side — Products Purchased, Product Viewed, Collection Viewed — each with helper text clarifying it uses order history versus current page context.
Screenshot coming soon
You can stack them. A campaign with both "Collection Viewed is Sale" and "Cart Total is at least 75" only fires when the shopper is on the Sale collection page and has at least $75 in their cart — a great moment for a "you've earned free shipping" reward.
Cart abandonment recovery — fresh data on tab return
Nudgesmart re-evaluates cart state when the shopper switches back to the tab. If they opened a new tab, came back twenty minutes later, and the cart shifted because items expired or stock changed, the rule picks up the new state before the popup fires. An abandonment popup running against the current cart converts much better than one running on stale data.
Targeting panel set up for an abandonment recovery campaign — Cart Item Count is more than 0, Visitor History 2+ visits, paired with an Exit Intent behavior trigger.
Screenshot coming soon
Two abandonment-flavoured patterns work well:
- Returning-shopper recovery. Combine "Cart Item Count is more than 0" with Visitor History "2+ visits" and an Exit Intent trigger. This catches people who've shown interest, walked away, and come back.
- High-value recovery. Use "Cart Total is at least 100" to gate a more generous recovery offer toward shoppers whose abandonment costs you the most. A 10% off code on a $40 cart is a discount you didn't need to give; the same code on a $250 cart can recover real revenue.
For Shopify's own perspective on cart value and conversion, the Shopify blog on average order value covers the merchant fundamentals.
Customer-value tiers — RFM Group and Predicted Spend Tier
These two fields are different from the cart rules above in an important way: they describe the shopper, not the cart. They're audience-level attributes — who the visitor is, not what's in their cart this session.
RFM Group classifies shoppers using the classic Recency-Frequency-Monetary model — recent high-frequency, high-spend buyers land in a "high-value" or "VIP" group; lapsed shoppers land in "at-risk" or "win-back." Pick this when you want different offers for your best customers versus everyone else.
Predicted Spend Tier is forward-looking — it estimates which shoppers are likely to spend more in the next purchase window based on past behavior. Pick this when targeting shoppers with high upside even if their historical RFM doesn't yet say so.
A practical recipe: combine RFM Group "High Value" with "Cart Total is at least 100" to fire a VIP-only popup that rewards high-value shoppers shopping at a meaningful basket size. The two fields layer cleanly because one looks at the shopper and the other at the cart.
Recipes — four cart-aware patterns merchants use most
These four cover roughly 80% of cart-aware popup work. Pick one, copy the rule shape, customize for your store.
Free-shipping nudge. Cart Total is less than 50, plus a corner teaser. Copy: "You're $X away from free shipping." Pair with a 10s time-on-page trigger.
Upsell at threshold. Cart Total is at least 100, fired after thirty seconds on a Product Page. Copy: "Add this for 20% off your next order." Works best when the offer is concrete and product-specific.
Abandoned-cart recovery. Cart Item Count is more than 0, with Visitor History "2+ visits" and Exit Intent. Copy: "Still interested? Here's 10% off to finish your order." Free shipping often beats a percentage off.
VIP exclusive. RFM Group "High Value" plus Cart Total is at least 75. Copy: "VIP early access — 15% off, today only." Pair with a single-use, customer-bound discount code.
Four side-by-side campaign cards in the Campaigns dashboard each labelled with one of the four recipes — Free Shipping Nudge, Upsell at Threshold, Abandoned Cart Recovery, VIP Exclusive — with their cart rule visible in the card preview.
Screenshot coming soon
Cart rules in the same campaign use AND logic — every rule must match. If you want "free shipping nudge OR upsell at threshold," that's two campaigns.
Common pitfalls
- Cart Total rule never matches because the popup is also page-targeted to the homepage. Cart is empty on the homepage. Drop the homepage page rule or split into two campaigns.
- Confusing Products Purchased with Product Viewed. Past order history versus current page context. If the popup fires for shoppers who already bought the product when you wanted it on first-view, switch to Product Viewed.
- VIP popup fires for new shoppers. RFM Group and Predicted Spend Tier need order history. First-time visitors are unclassified and won't match a "High Value" rule — that's correct behavior.
- Cart edits race the popup. Very fast add-to-cart → popup-fires sequences can occasionally beat the cart update. Add a 5-10s time-on-page trigger so cart state settles first.
- Two cart-aware campaigns compete. Overlapping cart-total ranges across campaigns make popups fight each other. Use frequency caps and one campaign per cart-value band.
Two cart-aware campaigns in the dashboard with non-overlapping Cart Total ranges — the first set to is less than 50, the second set to is at least 100 — illustrating how to avoid competing campaigns.
Screenshot coming soon
Frequently asked questions
Can I target a popup to shoppers with a specific product variant in their cart?
Use Product Viewed if the shopper is on the variant's product page, or Products Purchased for past variant purchases. Variant-level cart-content rules aren't exposed directly; pair Product Viewed with Cart Item Count for the closest equivalent.
How do RFM Group and Predicted Spend Tier get calculated?
Both pull from your Shopify customer and order data. RFM uses recency, frequency, and lifetime spend. Predicted Spend Tier layers a forward-looking estimate on top. New shoppers with no order history stay unclassified until their first purchase.
Can I show a popup only when the cart contains a specific SKU?
The closest pattern is firing on the product page (Product Viewed = that product) plus a Cart Item Count rule — most shoppers add the product to their cart while still on the page, so the timing aligns.
Why is my Cart Total rule firing on the cart page even when the shopper just emptied it?
The campaign may have already triggered before the empty-cart event registered. Add a small initial delay (5-10s) so the rule has time to re-evaluate against the current state.
Do cart-value rules work on the cart drawer or only the cart page?
Both. Cart-value rules use the live cart state, so they work everywhere — cart drawer, cart page, product page, even the homepage if the shopper has cart contents from a previous session.
What to read next
How to trigger a popup based on time on page or scroll depth
Wait until a shopper is genuinely engaged — by time on page, scroll milestone, or visit history — before firing your popup.
How to schedule a popup for holidays or specific date ranges
Run Black Friday, Mother's Day, or any seasonal campaign on a schedule — start, end, with sensible time-zone defaults.