Setting up a Klaviyo browse abandonment flow takes about 30–60 minutes: enable Viewed Product tracking via Klaviyo's Shopify app embed, create a new flow triggered by the Viewed Product metric, add smart flow filters to suppress recent purchasers and higher-intent visitors, then build one or two emails using dynamic product blocks that show exactly what the shopper viewed. For print-on-demand sellers, this is one of the highest-ROI automations you can activate without touching your ad spend.

Table of Contents

  1. What Is a Browse Abandonment Flow?
  2. Why POD Sellers Can't Afford to Skip It
  3. Prerequisites: Viewed Product Tracking on Shopify
  4. Step 1 – Create the Flow and Set the Trigger
  5. Step 2 – Add Trigger Filters (Stop Bad Entries at the Door)
  6. Step 3 – Add Flow Filters (Priority Logic)
  7. Step 4 – Build Your Email Sequence
  8. Step 5 – Use Dynamic Product Blocks
  9. Step 6 – Suppress Internal Staff
  10. Common Mistakes and How to Avoid Them
  11. How PodVector Helps
  12. FAQs

What Is a Browse Abandonment Flow?

A browse abandonment flow is an automated email sequence that triggers when a known subscriber visits one of your product pages but leaves without adding anything to their cart. It catches shoppers at an earlier stage of intent than a cart abandonment flow — they were interested, just not quite ready.

Browse abandonment is consistently a top-five revenue-generating flow — and sometimes top three. It normally falls behind welcome, checkout, and cart abandon flows, but it can compete with cart. For a print-on-demand store where every unconverted visit has a real ad-spend cost behind it, that matters.


Why POD Sellers Can't Afford to Skip It

Print-on-demand margins are tight. You're paying Meta or Google to send people to product pages, and most of them leave without buying. A browse abandonment flow is a chance to recapture that traffic for close to zero incremental cost.

Unlike a straight discount email, a browse abandonment message is a soft reminder — not a hard sell. Show the specific products they viewed using Klaviyo's dynamic product blocks — the actual items, not best sellers — and pair it with friction-reducing callouts like free shipping or easy returns. This isn't a hard sell; it's a reminder.

If your ad costs are climbing, optimizing your average checkout completion rate and layering in post-click email flows like this one is one of the fastest ways to squeeze more revenue from the same traffic. Browse abandonment flows also pair naturally with CRO techniques you may already be running on your Shopify storefront.


Prerequisites: Viewed Product Tracking on Shopify

Before you build anything in Klaviyo, your store has to fire the Viewed Product metric.

Browse abandonment flows are triggered by the Viewed Product metric, so this flow requires Viewed Product tracking to be enabled on your website. For Shopify, Viewed Product tracking is enabled by Klaviyo's app embed in Shopify.

To confirm the embed is active, go to Shopify → Apps → Klaviyo and make sure the app embed is toggled on in your active theme. Once it's on, visit any product page while logged into a Klaviyo-tracked profile and check Klaviyo → Analytics → Metrics → Viewed Product to confirm events are coming in.

EU/UK privacy note: Based on your Customer Privacy settings in Shopify, Klaviyo may not track onsite events for visitors in the EU, EEA, UK, and Switzerland unless they have provided consent — so your browse abandonment flow will not include non-consented individuals. This is expected behavior, not a bug.

Cookie-state gap: A subscriber who has been on your list for six months may open their laptop, go directly to your website, browse three products, and leave — Klaviyo may not fire a Viewed Product event for any of those views, because the subscriber isn't cookied in that browser session. The result: a large proportion of your list's browse activity is invisible to your flow, and your browse abandonment audience is significantly smaller than it could be. Server-side tracking tools can partially close this gap, but that's an advanced step — get the basic flow live first.


Step 1 – Create the Flow and Set the Trigger

  1. In Klaviyo, go to Flows → Create Flow.
  2. Choose Create From Scratch (or use the pre-built browse abandonment template if it appears in your library).
  3. Set the Trigger to Metric → Viewed Product.

Klaviyo gives you two candidate triggers and one of them is a trap. Viewed Product fires when an identified profile views a product page — this is the trigger to use. It carries the product data you need for dynamic blocks and fires on a specific, meaningful action.

Active on Site fires when a cookied profile visits any page. It tells you nothing about what they looked at, carries no product context, and fires constantly. Do not build browse abandonment on it.

Also remember: browse abandonment only works for identified profiles — meaning people who are cookied through a previous email click or a form fill. Anonymous visitors will never enter this flow.


Step 2 – Add Trigger Filters (Stop Bad Entries at the Door)

Trigger filters decide whether someone enters the flow at all. This is different from flow filters (which act on people already inside). You want to block the wrong people before they enter.

Add "has not placed order in the last 10 days" as a trigger filter, not just a flow filter. Trigger filters prevent people from entering; flow filters skip people after they've entered. You want to stop this at the door.

Add these trigger filters:

  • Has not placed an order in the last 10 days
  • Has not started checkout zero times since starting this flow (keeps browse intent separate from cart intent)
  • Is not suppressed (Klaviyo enforces this automatically but worth confirming)

Step 3 – Add Flow Filters (Priority Logic)

Flow filters run at each step before a message sends. They handle situations that change after someone enters the flow.

For your Checkout Started flow, using the Checkout Started event as a filter in your Browse Abandon essentially gives that flow priority based on the most recent activity by your user. In practice, add these flow filters to your browse abandonment flow:

  • Has not started checkout since starting this flow → suppresses anyone who leveled up to cart intent
  • Has not placed an order since starting this flow → stops the email if they converted
  • Has not been in this flow in the last 14–30 days → prevents email fatigue for frequent browsers

To restrict how often the flow is sent to a customer who regularly browses your website, use a delay timer and the "has not been in this flow in the last X days" filter — most practitioners use a 14- or 30-day window. Otherwise, you'll get one email for every product that was browsed and tracked.

Using this setup, users can be entered into both flows, but the flow filters give priority to the most recent event — using the one closer to purchase — and suppress someone from receiving emails from the other flows.


Step 4 – Build Your Email Sequence

For a browse abandonment flow, one or two emails is the right length.

Email 1 fires around two hours after the trigger. Use a light, editorial touch with a dynamic block showing the viewed product, and frame the copy as helpfulness rather than pursuit — and include two to four related products, because unlike a cart abandoner, a browser may have rejected that specific item.

Email 2, optional, fires around 24 hours later and leads with social proof on the viewed product or category — reviews, press, a bestseller angle. If you only build one email, you lose little. Past two emails, browse flows generate unsubscribes faster than orders.

Timing recap:

Email Delay Angle
Email 1 ~2 hours "Still thinking about this?" + product + related items
Email 2 ~24 hours Social proof, reviews, bestseller framing

Do not add a coupon in a browse abandonment flow. Shoppers at this stage didn't commit to buying — you'll train them to wait for discounts before they ever add to cart.


Step 5 – Use Dynamic Product Blocks

Dynamic product blocks pull the actual product a shopper viewed into your email automatically. This is what makes browse abandonment feel personal rather than generic.

In your email builder, add a Product Block and set it to pull from the Viewed Product event data. The key variables are:

  • {{ event.ProductName }}
  • {{ event.ImageURL }}
  • {{ event.ProductURL }}
  • {{ event.Price }}

Test the dynamic product block with a real cookied profile before going live. Viewed Product blocks break the same way cart blocks do, and a browse email with an empty product block is pure noise.

Send yourself a test email using a profile that has a recent Viewed Product event. Confirm the image, name, price, and link all render correctly before activating the flow.


Step 6 – Suppress Internal Staff

Your own team browsing the store will trigger this flow. To remove internal staff members from receiving the browse abandonment flow in Klaviyo, create a segment that excludes them based on their email address domain and then use it to exclude them from the flow.

Add the suppression segment to your flow's Who should not receive this flow setting before you go live.


Common Mistakes and How to Avoid Them

Using Active on Site as the trigger. This produces a flood of low-relevance emails with no product context. Always use Viewed Product.

Skipping the trigger filter for recent purchasers. Someone who places an order, gets a shipping notification, clicks through to the website — boom, browse abandonment flow triggers. The same thing happens with browse abandon if you don't exclude recent purchasers.

Using OR instead of AND for flow filter conditions. Note the logic: these are AND conditions, because you mean "none of these happened." Written with OR, the filter passes anyone who fails a single condition — which is almost everyone, all the time.

Sending too many emails. Two is enough. A third email from a browse flow rarely recovers an order and almost always costs you a subscriber.

Not checking your net profit margin benchmark after activating this flow. Browse abandonment lifts revenue, but if you've accidentally set a flow that hammers your suppressions and inflates list churn, your effective email revenue per subscriber can drop.


How PodVector Helps

Running a browse abandonment flow is one piece of a larger email-plus-profitability system. The harder challenge for most POD sellers is knowing which products in their catalog are actually worth recovering — because not every browsed SKU has a margin worth fighting for.

PodVector is an AI employee platform built for print-on-demand sellers on Shopify. Victor, the AI employee inside PodVector, reads your live Shopify, Meta Ads, Google Ads, Printify, Printful, and Klaviyo data in one warehouse so you always know which products are worth your email automation effort.

Victor can schedule a Klaviyo email campaign directly from the PodVector interface — you see the proposed campaign as an approval card with the old state and new state, approve it, and Victor executes it. He can also reprice your worst-margin SKUs or adjust your free-shipping threshold so the products your browse abandonment flow recovers are actually profitable when they convert.

If you're also running Google Ads traffic to your product pages, make sure your Shopify–Google Ads conversion tracking is set up correctly before reading browse abandonment performance — misattributed conversions make it look like email is doing more (or less) work than it really is. And if you're running a WooCommerce store alongside Shopify through Printify, the same Viewed Product tracking logic applies — just implemented through your WooCommerce–Klaviyo integration.

Read the full POD strategy hub and the print-on-demand topic hub for more context on how browse abandonment fits into a complete retention system.

**Ready to know which products are actually worth recovering?**

Victor reads your Shopify, Printify, Printful, Meta Ads, Google Ads, and Klaviyo data and proposes your next profit move as a one-click approval card. Browse abandonment recovers traffic — Victor makes sure that traffic converts to margin.

Try PodVector free →


FAQs

What triggers a Klaviyo browse abandonment flow?

Browse abandonment flows are triggered by the Viewed Product metric. This flow requires Viewed Product tracking to be enabled on your website. For Shopify, that tracking is activated through Klaviyo's app embed — no custom code needed.

Does browse abandonment work for anonymous visitors?

No. Browse abandonment only works for identified profiles — meaning people who are cookied through a previous email click or a form fill. If a visitor has never clicked a Klaviyo email or filled out a pop-up form, Klaviyo can't identify them and the flow won't fire.

How many emails should a browse abandonment flow have?

If you only build one email, you lose little. Past two emails, browse flows generate unsubscribes faster than orders. One to two emails is the standard best practice.

Should I include a discount code in my browse abandonment email?

No. Browse abandonment is a low-intent signal — the shopper looked at a page but didn't even add to cart. Pair your email with friction-reducing callouts like free shipping and easy returns — whatever makes buying feel safe. This isn't a hard sell; it's a reminder. Offering a discount at this stage trains shoppers to browse without buying until a coupon appears.

How often can the same person enter the browse abandonment flow?

Use the "has not been in this flow in the last X days" filter — most practitioners use 14 or 30 days as the window — to prevent a frequent browser from triggering a new send every time they visit. Set this as a flow filter so it checks at each email step.

What's the difference between a trigger filter and a flow filter?

Trigger filters prevent people from entering the flow entirely. Flow filters skip people after they've entered the flow at the point each email is about to send. Use trigger filters for conditions you know upfront (like "hasn't ordered in 10 days") and flow filters for conditions that might change while someone is inside the flow (like "has since started checkout").

Will this flow interfere with my abandoned cart or checkout flow?

Only if you don't set up the right flow filters. Using the Checkout Started event as a filter in your Browse Abandon essentially gives the checkout flow priority based on the most recent activity by your user. Add "has not started checkout since starting this flow" and "has not placed an order since starting this flow" as flow filters to keep the two flows from overlapping.

Why are my Viewed Product events not showing up in Klaviyo?

First, confirm Klaviyo's app embed is enabled in your Shopify theme settings. Second, check your browser — if you're visiting your own store while not cookied by Klaviyo (for example, in a private browsing window or a browser you've never clicked a Klaviyo email in), no event will fire. Test the dynamic product block with a real cookied profile before going live.