There are two ways to personalize a shopping experience. You can use what you know about a shopper before they arrive — their purchase history, their segment membership, their long-term behavioral profile — or you can use what they're telling you right now, in this session, with this sequence of clicks. Both are valuable. They're useful for different things, and the best personalization programs use both deliberately rather than defaulting to one or the other.
The choice between real-time and batch personalization isn't a technical decision. It's a strategic one. Here's how to think about it.
What batch personalization is good at
Batch personalization means running your recommendation or segmentation logic on a schedule — hourly, nightly, weekly — and computing outputs ahead of time. When a shopper lands on your site or opens an email, the system serves a pre-computed recommendation set rather than generating one live.
The strengths of batch are consistency and computational depth. Because you're not generating recommendations under sub-second latency constraints, you can run more sophisticated models. You can incorporate long purchase history, consider seasonality and trend signals, run collaborative filtering across your entire customer base, and update recommendations with pricing and inventory changes on a cadence that makes operational sense.
Batch is the right choice for:
Email personalization. Every email is generated ahead of send time. You have the recipient's full purchase and browse history. Real-time is irrelevant because the email is static once sent. Batch logic here can be as sophisticated as you want because you're not under session latency constraints.
Catalog-level trend signals. What's selling well this week? What's trending in a category? Which products have high return rates and should be deprioritized? These signals don't change by the second, and incorporating them into a nightly batch update is cleaner and more reliable than trying to compute them live.
Customer lifetime value segmentation. Assigning shoppers to LTV tiers, RFM segments, or predictive churn categories makes sense as a batch process. These are stable characteristics that don't change session-to-session, and computing them on a daily or weekly basis is sufficient.
What real-time personalization is good at
Real-time personalization means generating recommendations or rankings using signals from the current session — clicks, dwell time, add-to-cart actions, search queries, scroll depth — and updating the experience dynamically as new signals arrive.
The core strength of real-time is responsiveness to intent that hasn't been seen before. A first-time visitor has no purchase history. A returning shopper who comes back with a completely different use case than last visit (buying a gift, shopping for a different occasion, researching a new category) has a historical profile that's actively misleading. Real-time signals solve both problems.
Real-time is the right choice for:
On-site recommendations for anonymous visitors. First-time visitors have no history. The only data you have is what they're doing right now. Session signals — the products they're lingering on, the categories they're returning to, the price points they're engaging with — are all you have to work with. Real-time is not optional here; it's the only option.
Search ranking and autocomplete. When a shopper types a query, they're expressing intent at that exact moment. The search results they see should reflect not just the query semantics but what they've been doing in the current session. A shopper deep in a premium outerwear browsing session who searches "jacket" should see different results than a shopper who's been browsing budget basics. That adjustment is inherently real-time.
Session-pivot detection. Shoppers change their minds. Someone who came to your store for one thing discovers something else and pivots. Batch recommendations based on yesterday's data don't know this has happened. Real-time logic detects the pivot and adjusts. In practice, about 18% of sessions include a meaningful intent shift mid-session. Batch-only approaches miss all of these.
The practical combination that works
In production, the systems that perform best use batch as a foundation and real-time as a modifier. Here's the architecture in plain terms:
Batch runs nightly and computes a "default recommendation set" for each customer based on their historical profile, long-term preferences, and catalog-level signals. This set has high recall — it's a good answer in the absence of other information.
Real-time runs during the session and reranks or replaces items in the default set based on current behavior. After the shopper browses three items in a specific subcategory, the real-time layer promotes items in that subcategory. After they add something to cart, it removes that item and adjusts the cross-sell logic around the cart contents. The batch set handles the cold start and provides a fallback; real-time handles the adaptation.
For email, there's no real-time component — batch fully determines the output. For on-site, the blend is roughly 40% batch context and 60% real-time adaptation for returning customers, and 90% real-time for new visitors. These ratios aren't universal; they're calibrated against conversion data and vary meaningfully by category and traffic type.
Where teams go wrong
The most common mistake is using batch-only personalization on the site and wondering why recommendations feel stale or irrelevant. If you computed a customer's "affinity profile" three days ago and haven't touched it since, you're missing everything they did today. For a shopper in active purchase mode, three days is an eternity.
The second common mistake is using real-time-only logic without any historical context. This works for anonymous visitors, but for returning customers it throws away valuable signal. Someone who's bought eight times over three years has a rich preference profile that the current session alone can't replicate. Discarding that context in favor of pure session signals is leaving information on the table.
The third mistake: treating infrastructure constraints as product decisions. "We can only do batch because our real-time processing isn't set up yet" is a fine operational constraint. But it becomes a problem when teams rationalize it into "batch is actually better for our use case" to avoid the engineering work. For on-site recommendations and search, real-time signals are genuinely necessary to hit top-tier conversion rates. The infrastructure constraint is worth solving.
ShopPulse uses real-time and batch together
Our engine runs both in parallel — batch context + real-time session adaptation — without requiring you to manage the complexity. See how it works.
See the Product