Technical

The Cold Start Problem: How to Personalize for Visitors With No History

8 min read
Abstract cold start problem visualization — empty signal space gradually populating

The cold start problem is one of the oldest unsolved challenges in recommendation systems. A new visitor arrives on your store. There is no purchase history. No session history. No behavioral profile. The cookie jar is empty. What do you serve them?

The naive answer is "show bestsellers." Most stores default to this, and it's not wrong — bestsellers are popular for reasons, and a new visitor who buys something from a bestseller list has been served adequately. But "adequately" is not the same as "optimally," and for DTC brands where a first purchase shapes whether a customer returns at all, the difference matters.

The more interesting question is: how quickly can you build a useful preference signal from within the current session? And what can you infer from context that has nothing to do with behavioral history?

What You Actually Know at Second Zero

Before a new visitor clicks anything or lingers anywhere, you have more information than you might assume. The referral source alone is meaningful. A visitor arriving from a Pinterest pin linked to a specific product is exhibiting a stated preference in the act of clicking — they saw something visual and responded to it. That's not nothing.

UTM parameters from paid acquisition campaigns carry category intent signals if the campaign was category-specific. A visitor who clicked an ad for "sustainable home goods" has told you something about their aesthetic and value orientation. A visitor who clicked a retargeting ad for a specific product they viewed on a previous unauthenticated session — which you can't identify them as, but the UTM parameters might carry — has given you direct product interest data.

Device type matters more than most teams account for. Mobile shoppers on DTC stores trend younger and have shorter session attention spans — they need immediate relevance or they leave. Desktop shoppers on the same sites tend to browse more deliberately and tolerate wider catalog exploration before deciding. These aren't rules, they're probabilities. But when you have nothing else, probabilities are useful.

Geographic signal at the country/region level can be meaningful for brands with distinct regional aesthetic preferences or climate-driven product relevance. A winter apparel brand showing heavy outerwear to a visitor from coastal Florida in July is not serving that visitor well — even if heavy outerwear is the catalog bestseller nationally.

Building a Preference Vector in the First 60 Seconds

The transition from "cold start" to "warm enough to personalize" happens faster than most teams expect when you're tracking the right signals. In our session data across DTC stores using Revlance, a new visitor typically provides enough within-session behavioral signal within 45-90 seconds to meaningfully shift recommendation scoring — assuming they engage at all rather than bouncing immediately.

The signals that accumulate fastest are:

Category dwell time. Even a few seconds of meaningful scroll within a category page tells you something about where this visitor's attention is directed. Two seconds of scroll on the accessories category and eight seconds on the outerwear category is a relative preference signal, not a strong one, but it's enough to slightly weight recommendations toward outerwear-adjacent items.

First click destination. Where did the visitor go after the homepage? If they navigated to a specific sub-category rather than using search, they've expressed a preference through navigation choice. If they used search immediately, the query is a strong explicit signal.

Price tier engagement. Which price range of products did the visitor hover or click on? Early-session price tier engagement is a reasonable proxy for price sensitivity, though it's noisier than purchase history would be. A visitor who clicks on three items under $50 is probably not the target for a $200 upsell in the same session.

Scroll velocity. Fast scroll through a category usually means nothing caught the eye — the visitor is scanning, not deliberating. Slow scroll with stops is engagement. The distinction affects how confident you should be in treating the category visit as a positive preference signal.

Taken together, these signals accumulate into what we call a session preference vector — a sparse, low-confidence representation of what this visitor seems to be looking for. We weight cold-start vectors heavily toward the catalog-level priors and update them as each new signal arrives within the session.

Cohort Priors: The Practical Cold Start Solution

For visits where the within-session signal hasn't accumulated enough yet to be useful, the most defensible fallback isn't "show bestsellers" — it's "show what converts best for visitors who look like this visitor."

Cohort priors are pre-computed conversion and engagement rates segmented by acquisition source, device type, landing page, and time-of-day/week. When a new visitor arrives, you look up the nearest cohort and use that cohort's historical behavior as a prior distribution over what to show.

An example: visitors arriving from a specific Instagram influencer's story link, on mobile, during evening hours, have historically browsed the skincare category first in 60% of sessions and the body care category first in 25% of sessions. When the next visitor arrives from that same link, showing skincare items at the top of any recommendation surface is a reasoned, evidence-based default — not a random guess, and not just bestsellers.

Cohort priors require enough historical data per cohort to be statistically meaningful. For a small acquisition channel — say, a referral source that sends 50 visitors a month — the cohort is too thin to trust. For a major paid social channel sending 2,000+ visitors per month, the cohort prior can be meaningfully specific. We recommend setting a minimum cohort size threshold (we use 500 sessions as a floor) below which you fall back to broader population priors.

The Authentication Shortcut

If a new visitor is a returning customer who previously purchased but isn't currently authenticated, there's a path to warm-starting them without behavioral tracking: prompt for authentication early in the session.

This is underutilized by most DTC brands because authentication prompts feel interruptive. But the framing matters. "Sign in to see recommendations based on your last order" is not an interruption — it's a value proposition. For returning customers who completed a purchase within the last 30-60 days, this prompt converts at reasonable rates and immediately resolves the cold start problem by pulling the existing behavioral profile.

We're not saying authentication prompts work universally or that they should be aggressive. A modal that appears before the visitor has had 10 seconds to look around the site will tank the session. A subtle banner on the second page viewed, timed to appear after the visitor has shown engagement, is a different intervention with a meaningfully different outcome.

Hybrid Strategies: The Real-World Solution

No single cold-start approach dominates all scenarios. The practical solution is a hybrid strategy that combines all the available signals in priority order:

  1. If authenticated: use existing behavioral profile.
  2. If unauthenticated but referral source is campaign-tagged: use campaign category intent as primary signal, supplement with within-session signals as they accumulate.
  3. If unauthenticated and organic or dark social: use within-session signals as they accumulate, fall back to cohort prior for that device/time combination, fall back to catalog bestsellers if cohort prior is thin.

The key is that the recommendation logic knows which state it's in and applies uncertainty weighting accordingly. A cold-start recommendation shown with low model confidence should look different from a personalized recommendation with strong behavioral backing — not because the UI needs to display that confidence level (it probably shouldn't), but because the scoring logic needs to apply it correctly to avoid overconfident recommendations that feel off.

One thing we've found important: don't overfit to within-session signals during the cold start phase. A visitor who clicks one item in the accessories category has not definitively told you they only want accessories. They've given a weak signal toward accessories. The confidence level on that signal should stay low until confirmed by multiple subsequent data points — another accessories click, a hover, an add to cart. Overweighting early signals causes recommendation drift where a single early click determines the entire session's recommendations in a way that feels prescriptive rather than helpful.

Measuring Cold-Start Recommendation Quality

The standard metrics for recommendation quality — click-through rate, add-to-cart rate — apply to cold-start recommendations too, but they need to be segmented separately from warm-start metrics. Conflating them produces misleading averages.

A more useful metric for cold-start quality is "session warming rate" — the rate at which a new visitor session transitions from cold-start fallback logic to personalized logic within a reasonable window (we typically use 120 seconds as the threshold). A high warming rate means your within-session signal collection is working. A low warming rate means visitors are leaving before you've collected enough signal, which is itself a diagnostic — it might mean your landing pages aren't engaging enough to hold attention long enough to generate signal, not that your recommendation logic is flawed.

The cold start problem is never fully solved. But with a thoughtful combination of contextual inference, cohort priors, and aggressive within-session signal collection, you can serve a meaningfully better experience to new visitors than a static bestseller list — and start building the behavioral profile that makes every subsequent session warmer.

More from the blog

Browse all articles