What is a browse abandonment flow in Klaviyo?
A browse abandonment flow is a metric-triggered flow that starts when an identified shopper views a product and leaves without adding it to the cart, starting checkout or buying. In Klaviyo, the trigger is the Viewed Product metric.
It’s the lightest of the three abandonment flows. Someone looking at a product page has shown interest, not intent. They might be comparing prices, checking a size guide or just scrolling on the bus. The email that works here is a helpful reminder, not a “you forgot something” message, and it shouldn’t carry the same weight or offer as a cart reminder.
How do browse, cart and checkout abandonment differ?
Each flow responds to a different step, with a different metric and a different level of intent.
- Browse abandonment starts on Viewed Product. The shopper looked at a product page. Intent is low and the audience is large.
- Cart abandonment starts on Added to Cart. The shopper chose a product but didn’t start checkout. Intent is higher, and the audience is smaller.
- Checkout abandonment starts on Started Checkout (often shown as Checkout Started for Shopify data). The shopper reached checkout, usually after giving an email address, and left. This is the strongest signal of the three.
The trouble is that one shopper often does all three in a few minutes. Without filters, they enter all three flows and get three emails about the same product. The rule that prevents it is simple: each flow excludes anyone who has since moved further down the path. Browse excludes cart and checkout. Cart excludes checkout. All three exclude anyone who places an order. The rest of this guide shows how that’s set up for browse; the cart abandonment guide covers the next step, and the checkout abandonment guide the last.
Before you build: check the tracking
Browse abandonment depends entirely on Viewed Product being recorded against real profiles. Check two things first.
Is Viewed Product arriving?
Go to Analytics > Metrics, find Viewed Product and look at recent activity. On Shopify, the metric comes from Klaviyo’s onsite tracking, which is enabled through the Klaviyo app embed in your theme. On BigCommerce or custom platforms, it depends on a tracking snippet on the product page template. If the theme was changed recently, check the metric is still receiving events. Theme switches are the most common reason this flow goes silent.
Who can Klaviyo actually identify?
Klaviyo can only connect product views to shoppers it has identified. That generally means someone who has clicked through from a Klaviyo email, submitted a Klaviyo form or been identified through the Klaviyo cookie in some other way. An anonymous first-time visitor who arrives from a search ad and never signs up won’t enter the flow, however many products they look at.
There’s also a consent limit. On Shopify, Klaviyo excludes visitors from the EU, EEA, UK and Switzerland unless they’ve consented to tracking through your cookie banner. A European store with a strict banner and low consent rates will see far fewer browse abandonment entries than its traffic suggests. That isn’t a bug, and it’s worth explaining to anyone who compares browse revenue across regions.
Setting up the flow
Klaviyo has a browse abandonment template in its flow library, or you can build from scratch with Create flow > Build your own, choose a metric trigger and pick Viewed Product.
Trigger filters: narrow by product, if you need to
Trigger filters check properties of the Viewed Product event itself, such as the product name, price or categories. Use them when browse reminders only make sense for part of your catalog. A store selling both $15 accessories and $900 furniture might only run browse abandonment above a price threshold, or run a separate version for the furniture range with a longer delay.
Remember that trigger filters on a metric-triggered flow are only checked when someone enters. They can’t stop a message later in the flow. That’s what profile filters are for.
Profile filters: who gets excluded
These are the filters that keep the flow in its lane. Klaviyo’s recommended set for browse abandonment is:
- Placed Order zero times since starting this flow
- Started Checkout zero times since starting this flow (use the metric name that appears in your account, which may be Checkout Started)
- Added to Cart zero times since starting this flow, but only if you also run a cart abandonment flow on Added to Cart
- Has not been in this flow in the last 30 days, so frequent browsers aren’t emailed every time they visit
Profile filters are checked at entry and again before each message. So if a shopper views a product at 10:00, enters the flow, adds it to the cart at 10:20 and gets picked up by the cart flow, the browse email scheduled for later is skipped.
A store that buys on Amazon’s Buy with Prime should also add the Buy with Prime versions of Started Checkout and Placed Order, because those come through as separate metrics.
Timing
Klaviyo recommends waiting at least an hour after the trigger before the first message. That gap matters more than it looks. It gives the shopper time to keep browsing, add to cart or buy, and it gives the profile filters something to catch. Sending five minutes after a product view mostly reaches people who are still on the site.
One or two emails is enough for most stores. A second message a day or two later can show related products or reviews. A third is rarely worth the unsubscribes.
Should Smart Sending be on?
Yes. Klaviyo recommends keeping Smart Sending on for browse abandonment, and it’s the right call. Smart Sending skips a message if the profile received another marketing email recently (16 hours by default for email). For a low-intent reminder, being skipped because the shopper got a campaign this morning is fine. Skipped messages aren’t rescheduled, so nothing piles up later.
Which product shows in the email?
The email should show the product the person viewed, pulled from the trigger event. Klaviyo’s browse abandonment template does this with event variables such as {{ event.Name }}, {{ event.Price }}, {{ event.URL }} and an image set to event.ImageURL. If you copied your cart email as a starting point, rebuild the product section; the cart template’s dynamic product block expects cart data, not a single product view.
When a shopper views several products, the re-entry filter decides which one they see. With “has not been in this flow in the last 30 days”, they enter on their first view, so the email shows the first product they looked at. Klaviyo notes that using “has viewed product zero times since starting this flow” instead shows the most recent product. Think about which is more useful for your catalog. For a store where people compare several similar items, the last one viewed is often closer to the decision.
What should a browse abandonment email say?
Less than you’d think. Some practical guidance:
- Lead with the product. Image, name, price and a clear link back to the page. That’s the reason for the email.
- Add one useful thing. Reviews, a size guide, delivery times, materials. Answer the question that probably stopped them.
- Hold the discount. A discount in a browse email trains shoppers to look at a product and wait. If you use incentives at all, keep them for cart or checkout abandonment, and for people who have never ordered.
- Keep the tone neutral. “Still thinking about it?” is fine. “You left this behind!” is wrong, because they didn’t leave anything. They looked.
A split by purchase history helps. Use a multi-branch split on “Placed Order at least once over all time”. Past customers can get a shorter note, perhaps with items that go with what they bought before. Shoppers who have never ordered get more reassurance about the brand, delivery and returns.
A scenario: when the filters are missing
A shopper clicks a campaign on Thursday evening, views a jacket, adds it to the cart, starts checkout and leaves when she sees the delivery cost. Neither the browse flow nor the cart flow checks whether she went further.
Friday morning she gets “Still thinking about the jacket?” An hour later, the checkout flow sends “Complete your order”. In the afternoon, the cart flow sends its own reminder with a 10% code. She uses the code, which the checkout flow didn’t offer, and now knows waiting pays. Each of the three flows ran correctly. What was missing was a decision about which one should win.
With the recommended filters in place, she’d receive only the checkout reminder. If delivery cost is a common reason for leaving, that’s where the message about delivery belongs.
Measuring browse abandonment
Browse abandonment usually reaches more people than the other abandonment flows and converts a smaller share of them. Judge it on its own terms:
- placed order rate among recipients, compared with similar shoppers who didn’t receive it, if you can hold out a test group
- unsubscribe and spam complaint rates, which climb quickly if the flow sends too often
- the number of profiles skipped by each filter, which tells you whether the cart and checkout filters are actually catching people
Be careful with attributed revenue here. Many browse recipients were going to come back anyway, and an open within the attribution window is enough for Klaviyo to credit the flow. Use the number to compare versions of the flow, not to prove its total value.
If you’re reviewing all three abandonment flows together, the Klaviyo audit checklist includes an overlap test you can run with a single profile.
What triggers a browse abandonment flow in Klaviyo?
The Viewed Product metric. On Shopify it comes from Klaviyo’s onsite tracking via the app embed, and only identified shoppers are tracked.
Why are so few people entering my browse abandonment flow?
Usually because Klaviyo can’t identify most visitors, the app embed or tracking snippet is missing, or tracking consent is limiting views from EU, EEA, UK and Swiss visitors on Shopify. Check the Viewed Product metric for recent events first.
Should browse abandonment emails include a discount?
Generally no. Browsing is low intent, and discounts here teach shoppers to wait. Keep incentives for cart or checkout abandonment, and for people who haven’t bought before.
How do I stop browse and cart abandonment emails going to the same person?
Add profile filters to the browse flow for Added to Cart, Started Checkout and Placed Order, each set to zero times since starting this flow. The cart flow then excludes Started Checkout in the same way.