Personalization from the same signals
The signals used to measure a visit can also change the page. A small rules engine, a consent gate, and a panel that says which rule fired.
Collection and personalization are usually described as different products. In the page they are the same facts, used twice.
A URL parameter, a referrer, the local hour, the width of the viewport, a save-data flag, a returning visit stored on the device, the notes you have already opened, how far you scrolled, what you clicked: each of those is available in the browser during the session. None of them requires a third-party profile.
Rules, not a model
This site keeps the logic as rules you can read. One rule wins for each slot:
- The hero answers the most specific arrival signal it has: campaign parameters, then a search or social referrer, then a return visit, then the time of day.
- The call to action changes when scroll depth passes 40%, and otherwise follows a return visit or a campaign.
- Notes are reordered after you have actually opened a topic. Unread topics come first.
- A slow connection, or Save-Data, drops the hero illustration so the file is never requested. A narrow viewport tightens the layout and still loads the image.
The winning rule, and the signal values that triggered it, are written next to the page in “Why am I seeing this?”. A second control shows the default experience without clearing the profile, so you can compare the two.
Consent is the gate
Turning consent off does not delete the idea of the rules. It stops them from changing what you see, and it stops beacons from being posted. Visit history in local storage is not read while consent is off. The panel says so, and it still lists the rule that would have fired.
That is the distinction worth keeping. A signal can be observed, it can be applied to the page, and it can be sent. Those are three decisions. Mixing them is how measurement becomes a black box.