Skip to content
Pixeltree

Field notes

Klaviyo Browse Abandonment Flow: Setup Without Cart-Flow Overlap

September 7, 2025

Klaviyo Browse Abandonment Flow: Setup Without Cart-Flow Overlap

The flow nobody sets up correctly the first time

A shopper lands on a product page, reads the description, zooms on the hero image, clicks through three color swatches, and leaves. No cart. No checkout. No purchase. In most Klaviyo accounts that session is lost. The welcome series has already fired, the cart flow has nothing to trigger on, and the abandoned checkout is idle. Roughly 1 in 4 of those sessions will come back on their own within seven days. The other 3 need a nudge. That nudge is the browse abandonment flow, and when it is set up cleanly it typically adds between 3% and 7% to total flow revenue without pulling a single dollar away from the cart sequence.

The reason most stores never get that lift is not because the flow is hard to build. It is because the trigger overlaps with the cart flow, the emails look like duplicates, and the suppression logic leaks. Fixed properly, browse abandonment becomes the quietest high-margin flow in the account.

TL;DR

-> Trigger on the Viewed Product metric with a minimum 2-minute dwell filter so bounces and bots do not enter. -> Ship a 2-email sequence: a 4-hour reminder and a 24-hour social-proof nudge, then exit. -> Suppress anyone who has started a checkout, added to cart, or purchased in the last 30 days so the cart flow owns that recovery. -> Segment the flow by top-level product category so copy and recommendations match what the shopper actually looked at.

What browse abandonment actually is

Browse abandonment is the gap between interest and intent. A shopper has shown enough signal to identify themselves as an email subscriber and has viewed a specific product, but has not added it to a cart. That is a narrower audience than site traffic and a wider audience than cart abandoners. The goldilocks middle.

The flow only works on known profiles. Klaviyo needs a cookie tied to an email address, which usually comes from the welcome pop-up, a prior purchase, or a form fill. Unknown traffic cannot be reached through email, so the flow's actual addressable audience is usually 5% to 15% of total product-page sessions, not 100%. Treat that as a ceiling when you model revenue. If your site gets 50,000 product views a month and 10% of those are from identified profiles, the flow is fishing in a pond of 5,000 events, not 50,000.

The other thing browse abandonment is not is a second cart flow. The shopper did not add anything. They looked. The copy, timing, and offer logic all shift when you accept that. A cart reminder says "you left this behind." A browse reminder says "here is what caught your eye, and here is what else looks like it." Different jobs.

For a broader view of how this flow fits alongside the others, the Klaviyo flows that move revenue breakdown covers the full sequencing logic.

Trigger setup using the Viewed Product metric

In Klaviyo, the trigger is the Viewed Product metric, which fires every time an identified profile loads a product detail page. Out of the box this metric is noisy. A single shopper comparing options can fire it twelve times in one session. Without filters, the flow will queue twelve entries, deduplicate them, and still send the first email based on whichever product was viewed last, which is usually not the one the shopper actually wanted.

The clean setup uses three filter layers on the trigger itself.

Layer one: dwell time. Add a filter that requires the Viewed Product event to have a time-on-page value of at least 120 seconds, or require a minimum of two Viewed Product events within a single session. This strips out accidental clicks, bots, and shoppers who bounced off a thumbnail. The 2-minute threshold is arbitrary but battle-tested. Below 90 seconds you get noise. Above 180 seconds you start excluding legitimate interest.

Layer two: profile quality. Filter for profiles where the Can Receive Email property is true and where the profile has not purchased in the last 30 days. You do not want to chase a customer who bought last week with a reminder about a product they already own, nor do you want to burn sends on unsubscribed profiles.

Layer three: flow suppression. Filter out anyone who has an Added to Cart or Started Checkout event more recent than the Viewed Product that triggered the flow. This is the single most important filter in the whole build. Without it, the browse flow competes with the cart flow for the same recovery and both get credited, which inflates reporting and annoys shoppers.

Set the flow's Smart Sending window to 16 hours so the same shopper cannot receive a browse email and a campaign email on the same day by accident. The default is 16 hours and you should leave it there.

A note on the Active on Site metric

Some accounts trigger browse abandonment on Active on Site rather than Viewed Product. Active on Site fires on any page view, including the homepage, the blog, and the FAQ. That is too broad. Unless the shopper viewed a specific product, there is nothing concrete to remind them about. Stick with Viewed Product.

The 2-email structure

The temptation with a new flow is to stack emails until the sequence "feels complete." Three emails, four emails, a final discount. Do not do this. Browse abandonment has a short half-life. The shopper who looked at a jacket on Tuesday afternoon is either buying by Thursday or has moved on. A week-long drip harasses the ones who moved on and rarely converts the ones who are still deciding.

Two emails. That is the structure.

Email one: 4-hour reminder. Sent the same day, usually while the shopper is still in a deciding mood. The hero is the last viewed product, a clean image, a one-line description, and a single button that links back to the product page. No discount. No urgency. The subject line references the product category or the product name itself. Below the hero, include three complementary products from the same collection so the shopper has a side path if the original did not click. Keep the email short. Under 150 words of body copy.

Email two: 24-hour social-proof nudge. Sent the next day, usually mid-morning. The hero is the same product, but the supporting content shifts to reviews, ratings, a press mention, or a UGC photo. The shopper now has a reason to trust the product beyond the original product page. The CTA stays the same. No discount here either, unless your margin structure genuinely supports one and you have already tested that a discount outperforms no discount in this flow specifically. Most stores skip it.

After email two, the shopper exits. If they come back on their own, great. If they add to cart, the cart flow picks them up. If they do nothing, they are eligible to re-enter the browse flow the next time they view a different product, as long as the re-entry wait time is set to 30 days.

For a parallel reference on the cart side, the Klaviyo abandoned cart sequence post covers the 3-email structure that pairs with this one.

Avoiding cart-flow overlap: the 3-gate filter

The single biggest reason browse abandonment flows get disabled three months after launch is that they step on the cart flow. Shoppers receive two reminders about the same product on the same day, attribution gets messy, and the account owner concludes the flow is not working. It is working. It is just poorly fenced.

Use what we call the 3-gate filter. Three conditions that every profile must pass at the moment of send, not just at flow entry.

Gate one: time. The Viewed Product event that triggered the flow must be more recent than any Added to Cart event for the same profile. Klaviyo's flow filter syntax supports this using the "what someone has done" filter set to Added to Cart, zero times, since the trigger event. If the shopper added something to cart after viewing, they belong to the cart flow, not this one.

Gate two: category. The Viewed Product event must match the category segment the flow is scoped to. This prevents a shopper who was browsing shoes from getting a skincare email because the flow fired on a different product view ten minutes earlier. Category scoping is covered in the next section, but the filter itself lives here on the send-time conditional split.

Gate three: intent. The profile must not have a Started Checkout or Placed Order event in the last 30 days. This is broader than just the current session. A shopper who bought three weeks ago is often back to browse, and a browse email at that moment reads as tone-deaf. Let the post-purchase flow handle them.

All three gates apply at every send in the flow, not just at entry. Klaviyo supports this through the conditional split before each email. Setting the logic once at the trigger is not enough because shoppers move through states between sends, and a browse email should never fire on a shopper who has since added to cart.

Signal to response mapping

Signal in the last 48 hoursCorrect responseFlow that owns it
Viewed Product, no cart activityBrowse reminderBrowse abandonment
Added to Cart, no checkoutCart recovery sequenceAbandoned cart
Started Checkout, no purchaseCheckout recoveryAbandoned checkout
Placed OrderConfirmation and post-purchase flowPost-purchase
Repeat Viewed Product, same category, no cartBrowse reminder with category-specific copyBrowse abandonment
Viewed Product after purchase within 30 daysDo nothing, suppressNone

The table is the whole build in eight rows. If your flow setup does not map to it, something is bleeding.

Category-aware segmentation

A single browse abandonment flow that treats a $40 candle the same way it treats a $400 chair will underperform both. The copy, the product recommendations, the send time, and even the tone should shift with the category.

The clean way to handle this in Klaviyo is to duplicate the flow per top-level category and scope each version's trigger to a specific set of product tags or collections. Most stores end up with three to six versions: apparel, home, accessories, and so on. This sounds like a lot until you realize the structure, suppression, and timing logic is identical across all of them. The only things that change are the subject line template, the cross-sell block, and the social proof source.

Why not just use dynamic blocks? You can, and for smaller catalogs with two or three categories it works. But dynamic blocks tied to a product feed often fall back to generic recommendations when the feed misses a category, and the subject line stays static. A shopper who looked at a rug should not receive a subject line that says "still thinking about it?" when the actual email shows rugs. Match the subject line to the category.

How to pick the split. Open your Klaviyo analytics, go to the Viewed Product metric, and break it down by the product category property. If the top three categories account for more than 70% of product views, build a flow per category for those three and lump the rest into a generic fallback. If the distribution is flatter, build one flow per category for the top five and skip the fallback.

For category-level context on what shoppers actually need to see on the product page before they leave, the product page CRO patterns post covers the on-site side of the same problem.

Measurement and realistic benchmarks

Browse abandonment revenue is almost always reported higher than it actually is, because the attribution window in Klaviyo defaults to five days and the flow's influence fades fast. Switch the window to three days for this flow specifically when you evaluate performance. If the revenue holds up at three days, it is real. If it collapses, the flow was getting credit for purchases that would have happened anyway.

Expected performance on a cleanly built flow, per 1,000 emails sent:

  • Open rate: 42% to 55%. Above the account average because the shopper just saw the product.
  • Click rate: 6% to 11%. Higher than most flows because the email is almost a single-product page.
  • Placed Order rate: 1.2% to 2.5%. Lower than the cart flow, which is expected. The audience is colder.
  • Revenue per recipient: usually between $0.40 and $1.20 depending on AOV.

If the flow is underperforming those ranges, check the 3-gate filter first. In 8 out of 10 audits the answer is that the flow is cannibalizing the cart flow, not that the copy is weak. Suppression is the fix, not subject line tests.

For how this flow ranks against the other early-lifecycle flows you should be measuring, the Klaviyo welcome series 2026 post gives the comparison numbers.

What to do this week

-> Open your Klaviyo flows report, filter to browse abandonment, and check if the 3-gate filter is in place. If any gate is missing, add it before launching any new emails. -> Pull a list of the last 50 shoppers who entered both the browse flow and the cart flow within 72 hours of each other. If the number is above 5, your suppression is leaking and the browse flow needs a trigger-level Added to Cart exclusion. -> Rebuild email one to lead with the actual viewed product and a three-item cross-sell from the same category, not a site-wide bestseller block. -> Add a dwell time filter of 120 seconds to the Viewed Product trigger so single-bounce sessions stop polluting the flow. -> Split the flow by top-level category if you have three or more categories accounting for the bulk of product views, and match each subject line to the category.

If you want a second set of eyes on the setup before it goes live, email marketing audits cover this exact flow structure.

FAQ

How long should I wait between flow entry and the first email?

Four hours is the sweet spot for most stores. Earlier feels stalker-ish and the shopper may still be on the site. Later misses the window where the product is still mentally fresh. If your AOV is high and the purchase decision typically takes longer, push email one to 6 or 8 hours and keep email two at 24 hours.

Should I include a discount in the browse flow?

Usually no. A discount in the browse flow trains shoppers to view a product, leave, and wait for the coupon. That behavior eats into cart flow performance and full-price sales. If your margins support it and you have tested it against a no-discount version for at least 30 days, you can add a small incentive in email two. Most stores find the lift does not justify the training effect.

What happens if a shopper views 20 products in one session?

The flow should only send on the last viewed product of the session. Klaviyo handles this through the Smart Sending window at the account level and through the trigger deduplication inside the flow. If the flow is sending an email for every single product view, the trigger is firing outside the 16-hour Smart Sending window, which usually means the window was turned off on the flow. Turn it back on.

Can I run a browse abandonment flow on SMS instead of email?

Yes, but treat it as a separate flow with stricter entry rules. SMS cost per send is higher and the tolerance for frequency is lower. A working SMS version sends a single message at 6 hours, suppresses anyone who opened or clicked an email in the last 48 hours, and exits. Do not stack SMS on top of the full 2-email sequence.

Will this flow cannibalize my cart abandonment revenue?

Only if the 3-gate filter is missing. With the filter in place, the browse flow picks up shoppers who never entered the cart flow, and the two flows operate on non-overlapping audiences. After 60 days of clean data you should see cart flow revenue unchanged and browse flow revenue net-new. If cart flow revenue drops after browse launches, the suppression is leaking and every email in the browse flow needs the Added to Cart zero-times filter re-checked.

One-page resource

Get the Vendor Recovery Checklist.

The 12 steps every displaced maker should take in the next 30 days. Delivered in your inbox.

No spam. Unsubscribe any time.

Ready to put this into motion?

Book a 15-min call