Playbook · Shopify recently viewed blank / not tracking
Shopify recently viewed products section blank or not tracking.
Written for a Shopify DTC owner whose Recently viewed / Recently browsed section stays blank after visiting products, or whose theme/app is not tracking product handles into browse history. DIY-first: prove the section mounts, inspect storage writes, check Customer Privacy consent and private mode, then isolate theme tracker JS vs app embed. Distinct from product recommendations blank, predictive search blank, wishlist not syncing, and Search & Discovery filters broken. Soft-link recently viewed not showing when the section is unpublished or missing from the live template entirely. No earnings claims, no invented case studies.
Nico at Latch AI Ops · Sep 10, 2026 · ~12 minute read
Buy the 72-hour install — $997Recommendations blankNot showingMerchant FAQ
01
Recently viewed blank / not tracking — not recommendations, predictive search, wishlist, Search & Discovery filters.
Several products can look like “the carousel under the product is empty.” They do not share a settings panel. This page is only when Recently viewed mounts but stays empty after you browse, or history never writes. Related products / “You may also like” from Search & Discovery or the product recommendations API is product-recommendations-blank. Header search drawer empty is predictive-search-blank. Saved wishlist across devices is wishlist-not-syncing. Collection facet chips empty is search-and-discovery-filters-broken. If the Recently viewed block itself is missing from the template (unpublished / App embed off / no section), use recently-viewed-not-showing.
02
Prove the section mounts and whether browse history writes.
On the Current theme (not a draft Preview iframe alone), open product A, then product B, then return to home, collection, or a PDP that includes Recently viewed. Confirm the section heading / empty-state markup mounts in the DOM. Open DevTools → Application → Local Storage / Session Storage for your store domain. Look for keys the theme or app uses (often handles, IDs, or a JSON array under a recently-viewed / browsed / rv- prefix). If keys stay empty after two product pageviews, you have a not tracking bug. If keys fill but the UI stays blank, you have a render / Liquid / section settings bug on top of working storage.
03
localStorage / sessionStorage blocked, private mode, Customer Privacy consent.
Most native and app recently-viewed widgets write to browser storage. Safari ITP, Firefox Enhanced Tracking Protection, Chrome Incognito, and corporate locked-down browsers can refuse or purge writes. Accept the Customer Privacy / cookie banner for marketing or analytics if your widget gates storage on consent — a denied banner often looks like “blank forever” while the section still paints. Retest in a normal window after granting consent, then clear site data and browse two products again. If the cookie banner itself blocks checkout or add-to-cart, that is a different product: cookie-banner-blocking-checkout.
04
Theme section JS tracker, max items, exclude current product, liquid empty state.
In Online Store → Themes → Customize, open the product / home / collection template that hosts Recently viewed. Confirm max products, “exclude current product,” and that the section is enabled on the live template (not only a draft). Theme JS that records product.handle on PDP load can break after a theme edit or app that rewrites the product form. Console errors on product pages often stop the write. An honest empty state (“Browse products to see them here”) is fine until history exists — a permanently blank carousel with no empty-state copy usually means the fetch of stored IDs failed or products were unpublished / channel-off after they were stored.
05
Recently-viewed app embed history settings vs native theme section.
If you use a recently-viewed / browse-history app, check App embeds on Current theme and the app’s “track product views” toggle. Two widgets (native section + app) fighting can clear each other’s keys. Disable the newest embed and retest tracking. Customer-account-synced history is not the same as anonymous localStorage — logged-out visitors will still look “blank” if the app only stores server-side for logged-in customers. Wishlist apps that also show “saved” items are a different product — wishlist-not-syncing.
06
You tested product recommendations, predictive search, wishlist, or Search & Discovery filters instead.
Product recommendation / related products blocks empty on PDP is product-recommendations-blank. Header predictive search / search drawer blank is predictive-search-blank. Wishlist / saved items not syncing across devices is wishlist-not-syncing. Collection filters empty or broken is Search & Discovery filters broken. Do not retune Search & Discovery recommendation intents or filter metafields until you have proven Recently viewed storage writes and section render on Online Store 2.0.
07
When to stay DIY vs pay $997.
Stay DIY if you can grant consent, confirm localStorage writes, and republish the section in under an hour. Pay for the Latch AI Ops install when you want lead capture, ops alerts, and a checkout-ready workflow on the live store — including storefront / recently-viewed exception alerts landing in a channel you already check. Clock starts when collaborator access is in. 72 hours. One live store. Written by Nico. No earnings claims. No ranking-lift or conversion-lift number.
Buy the 72-hour install — $997Recommendations blankWishlist not syncing
Also on Latch
Latch AI Ops · Nico · $997 one-time · 72h after collaborator access · No earnings claims.