Here is a question worth sitting with: when you say your personalization is "based on shopper behavior," what behavior are you actually using? If the answer is clicks, page views, and session depth, you are building your product recommendations on the noisiest data your site produces. You are training a model on distraction.
This is not a niche concern. Most recommendation engines available to mid-size retailers are built on click data and browse behavior because that data is abundant and easy to collect. Every product view generates a signal. Every session generates dozens. Purchase data is sparse by comparison: a typical mid-size retailer might see a shopper convert once a month, maybe once a quarter. The abundance of click data makes it feel more useful, more current, more actionable. That feeling is misleading.
The Problem with Training on Clicks
A shopper browsing an outdoor apparel category might click on eight jackets in fifteen minutes. They click on the bright orange one because it caught their eye. They click on the expensive one to see if it is as expensive as it looks. They click on the one that showed up in an email they opened yesterday. They buy the dark green one at the end of the session, which was the third item they looked at, not the eighth.
If you train a recommendation model on that session, you record eight clicks and one purchase. A click-based model reads this as: this shopper likes bright orange jackets, expensive jackets, jackets from your email channel, and also dark green jackets. It gives all eight items roughly equal weight. The dark green jacket gets one eighth of the signal the session generated, even though it was the only one that produced a transaction.
Now scale that logic across thousands of sessions and hundreds of shoppers. Your model is learning from a dataset where seven eighths of every signal is a shopper looking at something they did not need enough to buy. The model is not learning shopper intent. It is learning what catches eyes.
What Purchase Data Actually Encodes
A completed purchase represents a shopper saying yes to a price, a product description, and a specific need at a specific moment. It is the most reliable affirmative signal your data can produce. Returns, conversely, are the most reliable negative signal: a shopper who returned a product is giving you explicit information that this item did not meet their actual need, regardless of how interesting it looked when they clicked on it.
When you build a model on purchase history, you are encoding three things that click data cannot tell you: what this shopper actually values versus what just looks appealing, what categories or product types they return to consistently, and what combinations they assemble over time. That last one is particularly useful. A shopper who has bought a cotton duvet, linen pillow covers, and a wool throw over 18 months is telling you something about their texture preferences, their quality threshold, and the aesthetic they are building toward. None of that is visible in their click data.
The most useful thing about purchase data is not the individual item. It is the trajectory. What a shopper has bought over time reveals the category of person they are, and that category is far more stable than any individual click session.
The Data Sparsity Objection
The common pushback is that purchase data is too sparse to build a reliable model. A first-time buyer has one data point. A shopper who buys twice a year gives you maybe two or three signals per year. How do you personalize for someone whose purchase history is one order?
This is a fair challenge, and it is one we worked through directly when building the CFY model. The answer involves two things. First, you do not need many purchases from an individual shopper to draw useful inferences if you have a large corpus of purchase histories across your shopper base. A shopper who bought one item in a specific combination that appears frequently in your data is already classifiable. The model has enough signal from similar purchasers to make a reasonable bet about what this person is likely to need next.
Second, you can use click and browse behavior as a short-term recency signal, not as the primary training input. Browse behavior in the current session tells you what the shopper is actively exploring right now. That real-time signal is genuinely useful for surfacing items in the current session. The problem occurs when you let it dominate the long-term model. Use purchase history to understand who a shopper is. Use current session behavior to sharpen the immediate response. Keep the two separate and weight them accordingly.
How This Changes What Your Category Pages Show
The practical implication for a storefront is direct. A category page personalized on click behavior surfaces items that look like what this shopper has browsed before. A category page personalized on purchase behavior surfaces items that fit the purchase trajectory this shopper has established.
Those are different results. A shopper who browsed ten items last month and bought one is going to get very different recommendations from a click model versus a purchase model. The click model will populate their category page with nine of the items they did not buy. The purchase model will surface items that fit the category of what they did buy.
This distinction becomes especially visible in high-consideration categories: furniture, apparel, home goods, outdoor equipment. These are categories where shoppers browse extensively before committing. Click data in these categories is extremely noisy because the browse-to-purchase ratio is high. A shopper might look at fifty sofas before buying one. Training a model on those fifty clicks tells you almost nothing reliable about their preferences compared to the one sofa they actually bought.
What We Are Not Saying
We are not saying click data is useless. Session data, recency signals, and browse depth all have legitimate applications in retail analytics. They are useful for understanding traffic patterns, evaluating content engagement, and identifying when shoppers are in an exploratory versus purchase-ready mode.
What we are saying is that click data is a poor foundation for a personalization model that is supposed to predict what a specific shopper is most likely to buy. Using it as the primary training signal produces a model that optimizes for attention, not conversion. A storefront built on attention optimization will show shoppers visually compelling products that match their click history. A storefront built on purchase optimization will show shoppers products that fit what they have actually committed to buying before.
For a mid-size retailer whose repeat buyer segment represents a meaningful fraction of monthly revenue, the difference between those two approaches is not trivial. Your repeat buyers have purchase histories. That data exists. Whether your storefront uses it is a product decision, not a data availability problem.
The Signal Hierarchy That Works
The model we built for Curated For You uses a signal hierarchy that puts purchase history first, return behavior second (as negative signal), and current-session browse behavior third as a recency adjustment. The first two signals are slow-moving and reliable. The third is fast-moving and noisy but useful for within-session tuning.
This hierarchy means the model does not flip its understanding of a shopper based on a fifteen-minute browse session where they clicked on eight things out of curiosity. Their established purchase pattern provides a stable foundation. The current session narrows and sharpens the output within that foundation.
If you are building or evaluating a personalization layer for your storefront, the first question to ask is: what is the primary training signal? If the answer is clicks or page views, ask the follow-up: why? There may be a good reason for the platform you are on. But if the reason is simply "click data is what we had available," that is worth revisiting. The data that matters for personalization is not the data that is most abundant. It is the data that most accurately represents intent.