Most shoppers do not buy the first thing they click. They open a product, open another, maybe a third, bounce between them, get distracted by a text message, and come back twenty minutes later with only a vague memory of the one they actually liked. On a lot of stores, that memory is the only thing standing between a browse and a sale. And memory is a terrible place to store your conversion rate.
A recently viewed products section fixes exactly that. It is not flashy, it does not win design awards, and nobody writes case studies about it the way they do about some clever AI recommendation engine. But it quietly does one of the most useful jobs on the whole site: it hands a returning or wandering shopper back the thing they were already interested in, with zero effort on their part. I have added this to enough stores now to be comfortable calling it one of the best effort-to-impact trades in ecommerce.
Why it actually works
The mechanism is boring and that is the point. It works because it removes friction from an intent the shopper already has. There is nothing to persuade here. The person liked a product enough to open it. All you are doing is making sure they can find it again.
A few reasons it punches above its weight:
- Recall beats search. When someone comes back to find the blue jacket they looked at yesterday, the alternatives are the search bar (if they remember the exact name), the browser history (nobody does this), or giving up. A recently viewed row removes that whole problem. The jacket is just there.
- Comparison shoppers live in it. Anyone buying something considered, furniture, electronics, a nice pair of boots, flips between options repeatedly. A recently viewed section becomes their informal shortlist. You are building a comparison tool for free.
- It respects returning visitors. A huge share of purchases happen on a second or third session. If the store looks the same to a returning shopper as it does to a first-timer, you are wasting the fact that they already told you what they want.
- It is personal without being creepy. Unlike a lot of personalization, this one is self-evidently helpful. The shopper watched themselves view these items. There is no uncanny feeling of being tracked, just a convenience that makes obvious sense.
Where to place it
Placement is where I see the most mistakes, usually because people treat it as an afterthought and drop it in the footer where it dies. A few spots that earn their keep:
- The product page, below the fold. This is the workhorse location. Someone is on a product, scrolling past the description and reviews, and a row of other things they looked at gives them an easy lateral move. It keeps a shopper who is not quite sold on this item from leaving the store entirely.
- The cart or cart drawer. People add something, then hesitate. A small recently viewed strip near the cart is a gentle nudge toward the item they were comparing against, which can tip a hesitant cart into a slightly bigger one.
- The homepage, for returning visitors. A first-time visitor sees nothing here, which is correct. A returning visitor gets a pick-up-where-you-left-off row at the top of the page, which is one of the warmest welcomes you can give.
- A dedicated slot after search or collection pages. When someone has been browsing a collection and nothing grabbed them, reminding them of what did grab them earlier gives the session somewhere to go.
What I would avoid is stuffing it everywhere at once. If every page has the same carousel in three places, it stops reading as helpful and starts reading as filler. Pick the two or three contexts where a reminder genuinely helps and commit to those.
What good implementations get right
Not all recently viewed sections are created equal. The lazy ones hurt more than they help. Here is the difference between one that lifts conversions and one that just takes up space.
- It persists across sessions. If the list resets the moment someone closes the tab, you have thrown away the most valuable use case, the returning shopper. A good implementation remembers for days, not minutes.
- It excludes the current product. Showing the item someone is literally looking at, inside the recently viewed row on that same page, looks broken. Filter it out.
- It drops sold-out and unavailable items, or at least marks them clearly. Nothing kills trust like clicking your own reminder and landing on an out-of-stock page.
- It is fast and does not shift the layout. This usually means loading quietly and reserving its space so the page does not jump as it populates. A carousel that causes a layout shift on every product page is a Core Web Vitals problem, not a feature.
- It matches the theme. The cards should look like they belong to your store, same typography, same price formatting, same button style. A bolted-on widget that clashes with everything around it reads as spam even when it is genuinely useful.
- It handles the empty state gracefully. A brand-new visitor has no history, so the section should simply not render rather than showing an awkward empty box.
Getting these right is more fiddly than it sounds if you build it yourself, which is why most merchants reach for an app. The one I work with, Scurix Recently Viewed Products, handles the persistence, the filtering, and the theme matching so the section behaves like a native part of the store rather than a widget stapled on top. Whatever route you take, those details are the whole game.
A quick note on timing
We are a few weeks out from Black Friday as I write this, and this is exactly the kind of small, boring improvement worth shipping before the traffic spike rather than during it. BFCM sends a flood of distracted, comparison-heavy shoppers who open a dozen tabs and buy from whichever store makes it easiest to get back to what they liked. A recently viewed section is quietly built for that moment. Ship it now, let it settle, and let it do its quiet work while you are busy with everything else.
None of this is a growth hack. It is just good housekeeping for a store, the digital equivalent of keeping the thing a customer was holding within arm's reach instead of making them go find it again. Do that consistently and the conversions take care of themselves.