Klaviyo browse abandonment flow
Viewed Product is a weaker signal than a cart
A browse abandonment flow emails someone who opened a product page and left. They did not add the item, and they did not start checkout. Klaviyo’s browse article says a product view is a weaker signal than a cart or a checkout, and that the message should be a lighter touch than the abandoned-cart mail. A discount in the first browse email trains people to view a page and wait. The cart series is where Klaviyo says to hold a coupon for the last email, or for someone who has never purchased.
The trigger is the Viewed Product metric. It is not a separate “abandoned browse” event. Open Analytics, then Metrics, and search for Viewed Product. If the metric has no recent activity, the flow can be live and still send nothing. Klaviyo tracks identifiable browsers: people who have been cookied, clicked through a Klaviyo message, submitted a form, or otherwise been identified. An anonymous visitor who never gets identified does not enter the flow.
The metric has to be arriving before the flow matters
On Shopify, Viewed Product tracking comes from Klaviyo’s app embed. It is an onsite event, in the same family as Viewed Collection, Submitted Search, and Added to Cart. A Checkout Started flow does not depend on that onsite setting, because checkout comes from Shopify. A browse flow does. If the embed is off, rewriting the email will not create the event. Test it the way Klaviyo describes: browse a product as a known profile and look for the metric.
Shopify customer privacy settings change who is tracked. Klaviyo says that in the EU, EEA, UK, and Switzerland it may not record onsite events unless the visitor has consented. A browse flow on that store misses non-consented visitors. That is not a filter you can see on the canvas. It is an empty metric for those sessions.
BigCommerce can add Klaviyo’s onsite JavaScript from the integration, and you still add the Viewed Product snippet to the product page template. A custom cart needs the Viewed Product JavaScript on the product template. Use the snippet for that platform. A Shopify tag pasted into another storefront does not create the metric.
Skip anyone who moved closer to a purchase
Klaviyo’s build-your-own instructions put three profile filters on the trigger: Placed Order zero times since starting this flow, Started Checkout zero times since starting this flow, and has not been in this flow in the last 30 days. Profile filters are checked at entry and again before each message. Someone who starts checkout after the view fails the checkout filter and skips the browse email. They can still qualify for the checkout flow. Without the checkout filter, one session produces two series.
Add Added to Cart zero times since starting this flow when an Added to Cart flow is also live. Klaviyo marks that filter as applying only in that case. Without it, a person who views a product and then adds it can sit in both flows. On Shopify, Added to Cart is itself an onsite event and needs the same tracking as Viewed Product. If that metric is empty, the Added to Cart flow is not a backup. It has no entries.
If the store sells through Buy with Prime and that integration is connected, Klaviyo’s browse article adds two more filters: Checkout Started (Buy with Prime) zero times since starting this flow, and Placed Order (Buy with Prime) zero times since starting this flow. A Buy with Prime checkout is a different metric. The ecommerce Started Checkout filter does not see it.
The 30-day “has not been in this flow” filter also decides which product the email shows. Klaviyo says that with this filter, a person who views several products is shown the first item. A filter of viewed product zero times since starting this flow shows the most recent item instead. Pick the one that matches the email you wrote. Do not assume the template always shows the last page they opened.
Wait at least an hour, and read the delay that is live
Put a time delay of at least one hour after the trigger before the first message. The delay is what separates a view from a browse that did not continue. Klaviyo’s frequency chart, in the article on how often flows should send, marks a single browse email at 2 hours. That chart is the library’s average-brand mark. The browse article allows more delays and more messages if you add them. One email at two hours is the chart. It is not a count you can assume is on the canvas until you open the flow.
Each message is draft, manual, or live on its own. Draft sends nothing. If every message is draft, nobody enters until at least one is live or manual. Review and turn on sets configured messages live. Unconfigured actions stay draft. Klaviyo also says to leave Smart Sending on for browse emails, so a person who already got a campaign or another flow inside the window is skipped. Email Smart Sending defaults to 16 hours. SMS and push default to 24 hours. A skip is not sent later when the window ends.
The product block is static, and the cart block will wipe it
Use a pre-built browse flow when the integration has one. Klaviyo recommends that because the product tags are easy to break if you rebuild them. For Shopify, the library also has an abandoned collection flow and an abandoned search flow. Those are different triggers. Do not rename a collection flow and treat it as Viewed Product.
Do not copy the abandoned-cart email into this flow. The cart block is dynamic and repeats once per line item. The browse block is static. Switching the block from dynamic to static erases the tags. If you already cloned the cart message, copy the tags out before you change the block type. Klaviyo’s browse tags are event.ImageURL on a dynamic image, {{ event.Name }} for the product name, {{ event.Price }} for the price, and {{ event.URL }} for the product page. Preview against a real Viewed Product event. If the preview lists no events, the metric has no payload yet. Create one before you approve the template.
A cart checkout link does not belong here. The Shopify checkout URL, {{ event.extra.checkout_url }}, rebuilds a checkout. A browse event is a product view. The link is the product page on event.URL. Klaviyo’s out-of-stock article, for a browse template that already shows the viewed item, uses a catalog lookup on event.ProductID with unpublished="cancel" so the email is skipped when that item is unpublished. The skip shows up as Catalog Item Unavailable. Use that snippet from the current out-of-stock instructions, and preview it. A tag that cancels the send is useful when you mean it.
A split only works on a property the event actually has
Klaviyo’s browse article lists optional splits for purchasers against non-purchasers, domestic against international, and product type or category. A trigger filter can also limit the flow to one product, so a high-price item can carry an offer the rest of the catalog does not. Build that filter from a property you can see on a real Viewed Product event. A split on a name the event does not contain sends everyone down the empty branch.
Two other filters in that article change who the series is for. Placed Order zero times over all time keeps the flow for people who have never bought, which is the group Klaviyo says you might incentivize. Placed Order at least once over all time is the opposite path, for someone already a customer, and the article says you may not want a discount there. A filter of viewed product at least some number of times since starting the flow waits until they have looked at several items, and the email can show the last one. These are extra filters. They are not a substitute for the checkout and order filters that stop the flow after the person moves on.
Read the view, the filters, and the block
The check is short. Is Viewed Product receiving identified visitors, including in the regions where consent is required? Are Placed Order and Started Checkout both zero times since starting this flow? Is Added to Cart excluded when that flow is live, and are the Buy with Prime metrics excluded when that integration is on? Is the delay at least an hour, and is the message live rather than an unconfigured draft? Does a preview render the name, the image, the price, and a link to the product page from a real event, from a static block?
KlavyFlow is a read-only view of the connected account. The flow timeline places the browse message on the elapsed day, next to the creative, so a two-hour email does not get reviewed as if it were the four-hour cart reminder. It does not turn on the Shopify app embed, change a filter, or send mail. Performance for the selected flow is a separate view over 7, 30, or 90 complete account-local days, and a missing result stays missing. Change the series in Klaviyo. Use the timeline when you need to see, for each client workspace, whether the browse flow that is live is the one you think it is.
14-day trial, then $95/month per client workspace. No payment card required. Or $995/year.