Try Wisepops now
See results fast—no devs. Begin converting more visitors with contextual onsite messages that fit your brand.
Try for free
Shopify
Popups

Personalizing Popups with Shopify Cart, Product, and Customer data

Read summarized version with

Most Shopify stores either pay developers to build personalized campaigns or settle for generic popups that ignore what's actually happening in the customer's session.

The problem isn't lack of data (your Shopify store tracks everything from inventory levels to customer purchase history) it's that many popup tools can't access that data without custom code.

This guide covers the specific Shopify properties Wisepops accesses, how the AI recommendation algorithms work, and practical targeting configurations you can implement today.

Table of contents:

  1. What Shopify data can popups access automatically?

  2. Examples of personalized popups using targeting properties

  3. Product-level data (price, inventory, tags, availability)

  4. Cart behavior data (total price, item count, discount codes)

  5. Customer intelligence (order history, spending, VIP status)

  6. Contextual triggers based on Shopify events

  7. Eight popup targeting recipes

  8. Targeting multiple cart items without listing each product individually

Set up contextual popups on Shopify in 30 minutes

  • 150+ templates for quick setup

  • Add product recommendations to improve product discovery

  • Make every upsell offer relevant using deep visitor targeting or AI

No cc required • 14-day free trial • Used by 1,500+ businesses

Popup roadmap

Just starting with your popup CRO strategy?

Use this 60-day popup implementation roadmap for ecommerce to set up a system that generates proven revenue.

What Shopify data can popups access automatically?

When you install the Wisepops Shopify app, for example, it immediately gains access to three categories of data:

  • product properties (what they're viewing)

  • cart properties (what they've added), and

  • customer properties (who they are and their purchase history)

These properties are available as targeting conditions in popup campaign display rules without any additional setup.

Example—

Shopify popup campaign personalization data in Wisepops:

shopify popup personalization settings
shopify popup personalization settings

Here's quick intro to Wisepops, the Shopify popup app I'll be using to show all the the targeting properties in this post:

Product-level data that Wisepops pulls automatically

When someone lands on a product page, Wisepops instantly has access to four properties from your Shopify catalog.

product.price

This is the exact price of the item currently being viewed. You can trigger different campaigns based on price thresholds.

For example, if you sell both $20 candles and $200 diffuser systems, you might want to show a customer support phone number popup only on expensive items where people are more likely to have pre-purchase questions.

product.total_inventory_quantity

This property shows the total stock across all variants of the current product. The difference between using this and hardcoding "Only 3 left!" into your popup is that this pulls real data from your Shopify inventory.

When you set a targeting rule like:

product.total_inventory_quantity is less than 10

the popup only appears when stock is actually low. The urgency is genuine rather than manufactured.

product.available

This boolean property equals false when the product can't be purchased, typically because it's out of stock. Instead of leaving customers on a dead-end page, you can trigger a popup that suggests similar in-stock products or offers to notify them when the item is back in stock.

product.tags

This is where Shopify's native tagging system becomes powerful for targeting. If you tag all your oil products with "fragrance-oil" in Shopify, you can target all those products in Wisepops with a single rule:

product.tags contains "fragrance-oil".

Example:

A brand on Shopify wanted to show an exit-intent popup on all oil pages offering diffuser upsells. Instead of manually listing 50+ product URLs, they used the product tag that was already in their Shopify setup. The setup process was adding the tag in Shopify (if it didn't already exist) and then using that tag as a targeting condition in Wisepops.

Cart behavior data for contextual campaigns

Cart properties update in real-time as customers add or remove items, which means your popups can respond to shopping behavior as it happens rather than showing generic messages to everyone.

cart.total_price

This is the most commonly used Shopify property for onsite campaigns. The classic use case is the free shipping threshold popup—if you offer free shipping at $50, you target visitors whose

cart.total_price is greater than $30

and cart.total_price is less than $50

to show them exactly how much more they need to spend. This increases average order value without cutting margins through discounting.

cart.item_count

This property returns the number of items in the cart, which is essential for cart abandonment campaigns. The common mistake is showing exit-intent popups to everyone, including people browsing with empty carts.

By adding the rule

cart.item_count is greater than 0,

your cart recovery popup only appears to people who've actually added something, making the campaign significantly more relevant.

cart.discount_code

This returns the name of any coupon code applied to the cart.

You can use this to confirm that a discount was successfully applied ("Your SAVE20 code is active!") or to exclude people who already have a discount from seeing additional discount offers. This prevents the frustrating experience of stacking restrictions or showing redundant promotions.

cart.items..product_id, cart.items..sku, cart.items.*.variant_id

These properties let you target based on specific products currently in the cart. The syntax here works differently than the single-value properties above, which we'll explain later in "Targeting multiple cart items" section.

Customer intelligence for logged-in users

Most of these properties only work for logged-in customers.

customer.orders_count

This returns the total number of orders a customer has placed, which is useful for VIP segmentation. You might show a loyalty appreciation campaign to anyone with customer.orders_count is greater than 5, or specifically target first-time buyers with different messaging than repeat customers.

customer.total_spent

This property tracks the cumulative amount spent across all orders. You could create tiered experiences—customers who've spent over $500 see exclusive product previews, while customers under $100 see campaigns focused on building trust and showcasing reviews.

customer.last_order.created_at

This is particularly useful for win-back campaigns.

If you target customers where

customer.last_order.created_at is before 30 days ago

you can proactively re-engage people who used to purchase regularly but have gone quiet. The reactivation campaign can be much more specific than a generic "we miss you" email because you know exactly when they last bought.

customer.tags

Just like product tags, Shopify's customer tagging system transfers directly to Wisepops targeting. If you tag VIP customers in Shopify with a "VIP" tag, you can target them in Wisepops with

customer.tags contains "VIP"

This works for any segmentation you're already doing in Shopify—wholesale customers, brand ambassadors, at-risk-for-churn segments, whatever taxonomy you've built.

customer.accepts_marketing

This boolean indicates whether the customer has opted into marketing communications. You can show newsletter signup campaigns only to customers where

customer.accepts_marketing is false,

avoiding the annoying experience of asking existing subscribers to sign up again.

orders..items..sku

This property lets you target based on past purchases. You could recommend complementary products based on what they've previously bought, or create campaigns like "You bought coffee beans last month—time for a refill?"

Contextual triggers based on Shopify events

Beyond static targeting rules, you can trigger campaigns based on specific actions that happen during the shopping session. These event-based triggers let you respond to customer behavior in real-time rather than just showing campaigns when someone lands on a page.

The product-added-to-cart event

The Shopify popup app automatically fires a custom event called

product-added-to-cart

whenever someone adds an item to their cart. This is useful for immediate upsell opportunities—the moment someone demonstrates purchase intent, you can show them complementary products or bundle offers.

Setup in Wisepops:

Navigate to Display Rules, select the Trigger tab, choose "On Custom Event," and type

product-added-to-cart

in the text field. You can combine this trigger with other conditions for more personalization, like only showing certain upsells when specific products are added.

AI-powered cart abandonment trigger

Wisepops comes with a template called "AI-powered Cart Recovery Popup" that can recover 3-6% of abandoned carts.

The template uses proprietary behavioral signals to determine when someone is actually about to abandon their cart versus when they're still actively shopping.

The difference between this and basic exit-intent is that traditional exit-intent triggers fire based solely on mouse movement toward the browser chrome, while the AI-powered version analyzes multiple signals to predict abandonment more accurately.

The goal is appearing only for visitors who show "real signs of cart abandonment" rather than interrupting everyone who moves their mouse to a different tab.

Eight popup targeting recipes to try

These are copy-paste targeting configurations based on actual ecommerce use cases.

1. First-time visitor welcome campaign

Targeting rules:

Use Wisepops' built-in "new visitors" targeting

(this automatically identifies visitors on their first session)

Campaign message: "Welcome to [Brand]—here's what makes us different"

Trigger: After 2 pages viewed or 30 seconds on site

Format: Popup or embedded form (less intrusive than immediate overlay)

The documentation explains that new versus returning visitor targeting is built into Wisepops and doesn't require Shopify properties.

You can access this in the Audience tab under "Frequency." The delayed trigger ensures you're not interrupting them immediately upon arrival, but you're introducing your brand before they reach product pages.

Case study

See Nutrimuscle's popup strategy that helped increase average order value with a welcome workflow:

2. Free shipping threshold campaign

Targeting rules:

- cart.total_price is greater than $30

- cart.total_price is less than $50

- cart.item_count is greater than 0

Campaign message: "Add $[50 minus cart.total_price] more for free shipping!"

Dynamic variable: {{cart.total_price}}

The middle rule is critical because it prevents the campaign from showing to people who've already met the threshold, and the bottom rule ensures you're not showing "add more for free shipping" to people with empty carts.

You can calculate the remaining amount dynamically in your popup copy using the cart total price variable.

3. Low stock urgency (without fake scarcity)

Targeting rules:

- product.total_inventory_quantity is less than 10

- product.available is true

Campaign message: "Only {{product.total_inventory_quantity}} left in stock—order soon!"

Dynamic variable: {{product.total_inventory_quantity}}

The dynamic variable pulls the actual inventory count, so if you have 3 units left, it shows "Only 3 left in stock." When you restock to 15 units, the campaign stops appearing automatically because it no longer meets the targeting criteria.

Learn more: How to use dynamic variables in popups

4. Product category targeting via tags

Shopify setup: Tag all oil products with "fragrance-oil" tag in your Shopify product catalog

Wisepops targeting:

- product.tags contains "fragrance-oil"

- Trigger: On Exit

Campaign: Exit-intent popup showing diffuser recommendations

Tactic: "Frequently Bought Together" or manually selected diffuser products

This was an actual customer use case where they wanted to show diffuser upsells on oil pages. Instead of listing every oil product URL individually, they used the product tag that was already in their Shopify setup.

5. VIP win-back campaign

Targeting rules:

- customer.orders_count is greater than 5

- customer.last_order.created_at is before 30 days ago

- customer.is_logged_in is true

Campaign message: "Don't go just yet! Here's 20% off your next order"

This targets your best customers who have gone quiet, which is a higher value segment than generic reactivation campaigns sent to everyone who hasn't purchased recently.

6. Returning visitor with high intent

Targeting rules:

- Use "returning visitor" targeting in Audience tab

- Set minimum visit count: 3 visits

- Time frame: Within 7 days

- cart.item_count is greater than 0

Campaign message: Product recommendations or additional incentive to close the sale

This could be to target people who are visiting your site many times in a short period of time. You could probably identify this segment as people who have high purchase intent and probably considering options.

Targeting multiple cart items without listing each product individually

The properties with * in their names (like cart.items.*.product_id) work differently than the single-value properties. The asterisk means "any item in the list," which allows you to check if any product in the cart matches your criteria rather than checking for a specific single value.

How it works

Without the wildcard: You're checking if a specific single value exists.

For example:

cart.item_count is greater than 0

checks one number.

With the wildcard: You're checking if any item in a list matches.

For example:

cart.items.*.product_id is equal to 12345

checks if any of the products in the cart has that ID.

Practical example: Cart upsell for specific products

Targeting rules:

- cart.items.*.product_id is equal to 12345

OR

- cart.items.*.sku is equal to "OIL-LAVENDER"

Campaign message: "People who bought this also added..."

Tactic: "Frequently Bought Together"

This upsell popup campaign appears whenever the specified product is present in the cart, regardless of what else is in there. You can use product ID or SKU depending on how your catalog is organized.

If someone has products 12345, 67890, and 11111 in their cart, the rule cart.items.*.product_id is equal to 12345 will match because at least one item (12345) matches the condition.

Targeting by past purchases

Targeting rules:

- orders.*.items.*.sku is equal to "COFFEE-BEANS-001"

Campaign message: "Time for a refill? Your favorite coffee is back in stock"

This checks if the SKU appears in any of the customer's past orders. The double wildcard (orders.*.items.*) means "check all items in all orders." This only works for logged-in customers because it requires access to order history.

Did you know?

Thanks to the native Shopify integration, Wisepops tracks orders and revenue from your campaigns automatically.

Learn more.

revenue tracking
revenue tracking

Getting started with Shopify data-powered campaigns

Start with a welcome campaign—the first-time visitor welcome is lowest-risk, or use the free shipping threshold campaign for immediate revenue impact.

Once running, use A/B testing to optimize targeting and timing.

Learn more:

Get started
in minutes

Start converting more visitors today.
Get started in minutes and see results right after.

Help