Solutions/Use case

Change the page while they are still on it.

In-session personalisation needs to know what this customer is doing in the next thirty seconds, not what their cohort did last week. Signals computes that on the event stream and hands it to whatever renders the page, mid-request.

14 days · no card · no sales call
The moment, as it happens
  1. 00:00
    Third visit to the same product page

    Nothing in the warehouse knows yet.

  2. 00:41
    showing_price_hesitation flips to true

    Recomputed inside a ten-minute window.

  3. +6ms
    Your ranker reads it before the page paints

    Reassurance module in, upsell rail out.

Same session. Same visit.no overnight job in the loop
Why it usually fails

The signal arrives after the visit ends.

Most personalisation reads a table that was written overnight. It can tell you this person is a lapsing mid-value shopper. It cannot tell you they have looked at the same jacket three times in four minutes and bounced off the delivery estimate twice.

Stale by designBatch windows are hours wide.
Wrong keyKeyed on user, never on basket or listing.
Too slow to readA warehouse query cannot sit in a render path.
What you build

Three attributes, one service, one call in your renderer.

01 · Define

Name the behaviour you want to react to

Repeat views on one listing, idle time in the basket, failed searches this session. Counts, recency and order cover most of it.

02 · Group

Bundle them into a service your app owns

One storefront service, one round trip. Front-end teams do not need to know which attributes exist.

03 · Read

Call it where the decision is already made

Inside the ranker, the module selector or the edge function. No new decisioning layer to adopt.

Service: storefront3 attributes
AttributeKeyWindowRead by
showing_price_hesitationsession10 minutesPDP module selector
basket_idle_secondsbasketsince last addCheckout nudge
failed_searches_sessionsessionthis sessionSearch ranker
What changes

Measured on the surface you changed.

0 jobs

Streaming infrastructure for your team to run

6ms

Added to the render path, p50 in-region

1 definition

Shared by the live surface and the model that trained on it

any key

user · session · basket · listing · store

Start with one attribute.

Define it, read it in your own product, and see it change while you click around. 14 days, no card, no sales call.