OPTIMIZE · PERSONALIZATION

Personalization you can measure and explain.

Show an audience its own version of a section, the page in a different order, or an offer that arrives while they are still reading. Praxis decides on the server, holds some visitors back to prove the lift, and records why for visitors who allow personalization and have a visitor id.

Every figure on this page is as of October 2026.
On this pageWhat it does
  1. What it does
  2. Who sees it: rules, interests and campaigns.
  3. What they see: three ways to change a page.
  4. Design for one audience, on the real page.
  5. A section that changes while the visitor is still there.
  6. How each slot chooses, set by you.
  7. Did it help? Measured against the people held back.
  8. How you know any of it works.
  9. Every decision, explained to you.
  10. Engine
  11. How it works
  12. Before a page leaves the server
  13. Holdback and holdout are two things
  14. What keeps it honest
  15. Common questions
Choose an audience, change a section, explain the decision.

What it does

Personalization sits in Optimization, beside Experiments, Audiences and the content Catalog. Audiences decide who sees something; targeted content decides what they see; and every decision is written down.

An audience's detail on a demo store, with its rule editor: Viewed page, is, /products, and the preview “Visitors who have viewed /products.”

Audiences

Who sees it: rules, interests and campaigns.

  • One list holds every audience, built by rule or learned.
  • "Build a rule" from facts Praxis already keeps: "Channel", "Source", "Medium", "Campaign", "Click platform", "Referrer", "Landing path", "Query parameter", "Email link clicked", "SMS link clicked", "Email opened", "Viewed page", "Country", "Visit count", a custom trait, or an interest scored by the affinity engine. A rule can also use "Region" and "City", read from the request itself.
  • Grouped as you think: "all of", "any of" or "none of".
  • Built in: "Returning visitors", two visits or more, and "US visitors".
  • Learned audiences, which visitors join and leave as their interests rise and fade.
  • A campaign's own audience. Every campaign creates "Came from this campaign". The campaign's tag is recorded as the visitor arrives, and every page they open after it can be shaped for that campaign.
  • Each audience has its "Definition", "Members & why" and "Analytics", with "Activate"; a learned one also has "tune this audience" and "Regenerate from catalog".
Personalization on a demo store: new targeted content for the people who came from a demo campaign, its banner message, the goal it is measured on, and the card “The exact change (nothing is saved yet)” with “Approve & make it live” and “Keep as draft”.

Targeted content

What they see: three ways to change a page.

  • "New targeted content" starts from one of three presets: "Content swap": one section, on one page, for one audience. "Arrangement": the page's sections in a different order for one audience. "Time-boxed offer": a live offer sent when something happens, with its trigger and its expiry.
  • "Holdback %". By default 10% of the matched audience keep the default page: your control group. At 0 there is no control, and the lift cannot be measured. The holdback applies to a time-boxed offer too.
  • "Measured on". One goal you choose, and the lift is measured on it for everyone, whatever each reader of the report happens to pick.
  • "Save as draft", then "Preview change", which shows "The exact change (nothing is saved yet)", then "Approve & make it live". Later, "Pause", "Resume" and "Archive".
  • An arrangement applies as the page loads, never by reshuffling a page someone is reading. Sections you leave unlisted keep their template order, and the header and footer never move.
The Composer on a demo store's Home, “Editing for Came from Demo data: autumn layers”: the page framed and labelled for that audience, and its hero headline being rewritten for that audience alone, with the format bar open.

On the page itself

Design for one audience, on the real page.

  • In the Composer, "Editing for" an audience, then "Paint for an audience". Moving a section writes that audience's arrangement; editing a field writes its content swap. Both are drafts, and the page everyone else sees is never touched.

Live slots

A section that changes while the visitor is still there.

  • A "Live offer" can appear, change or disappear mid-visit, with no reload: a small card in the corner of the page that the visitor can dismiss.
  • Its trigger is any event, such as an add to cart, checked against the offer's audience at that moment, or the moment a visitor joins a learned audience.
  • Its expiry belongs to the server: when the time is up, the offer is withdrawn even if the page stays open.
  • What can change is the approved text and its call to action, and whether the card shows.

Slots and their rules

How each slot chooses, set by you.

  • "Slots" lists the sections open to personalization, and how many pieces each one keeps from its ranking: one, unless the section is built to show several.
  • Five rules, all off until you turn them on, in the screen's own words:
RuleWhat it doesIts numbers when switched on
"Where the shopper is in the buying journey"Demotes a piece made for another stage of the journey, and can favour one made for the stage the shopper is in0.5× for another stage; 1.2× for the shopper's own
"How fresh the piece is"New work earns a bonus that halves as it agesA bonus of 0.2 that halves every 14 days
"How often the shopper has already seen it"A piece already shown to this shopper several times is worth lessA penalty of 0.3 at the cap, counting the last 24 hours, capped at 3
"How much of one thing it may show"Keeps one category from filling a slot that shows several piecesAt most 2 pieces sharing one category
"Season, promotion and margin"Your merchandising wishes, as weights on each item's own signalsWeights from -1 to 1, held together between 0.5× and 2×
  • Itemised, or absent. A rule that is on is itemised on every decision it touches; a rule that is off takes no part and appears on no record.
  • Tilts, never takeovers. The merchandising weights are clamped together, by default to between half and twice a piece's score.
  • Site, audience, slot. A rule can be set for the whole site, for one audience or for one slot, and the more specific setting wins. Recommendation sections follow the same rules.
Personalization, Performance on a demo store: exposures and visitors by reason, no lift result yet, and the platform holdout panel.

Performance

Did it help? Measured against the people held back.

  • "Performance" shows the lift of each piece of targeted content against the visitors held back, on its goal.
  • It is read with Wilson intervals, the Newcombe difference, a z-test, a split check, and floors of 100 exposed and 25 converting visitors.
The statistics

Measurement

How you know any of it works.

  • "The holdout: how we know any of this works". A standing platform holdout keeps 5% of identified, consented visitors on the site's own defaults.
  • "Which decision an outcome pays". How far back an outcome may look, what must match, and which decision is credited.
  • "How long each outcome may credit". "Minutes, hours or days after a decision that this kind of outcome may still be paid to it."
  • "The salt". Changing it reassigns every visitor's arm, and the screen warns you before it does.

Why this?

Every decision, explained to you.

  • "Why this?" opens any decision: what was shown, the arm, the reasons that drove it with their weight, the runner-up, and the settings in force at that moment.
  • "Decide it again" replays the decision.
  • You find it on a visitor's "Decisions" tab and in Explore's live feed, so your Admins can see why any visitor saw what they saw.

Engine

The affinity engine

  • "Engine" holds the affinity engine's settings, which drive learned audiences and ranked recommendations.

In a sentence

  • "Make an audience of returning visitors from Canada" · "Show them a different hero" · "Pause that targeting" · "How is personalization performing?". The copilot has 25 actions for personalization and audiences, and making targeting live, pausing, resuming, regenerating and tuning each wait at an approval card.

How it works

Before a page leaves the server

  1. The site.

    The address picks the site and its own database. An unknown or suspended address fails closed.

  2. Consent.

    The visitor's region gives the regime; then Global Privacy Control outranks the visitor's own recorded choice, which outranks the regime's default.

  3. The visitor.

    An existing visitor cookie is kept. A new one is created only where consent allows.

  4. The holdout and the audiences.

    The visitor's arm of the platform holdout, then the audiences they hold, by rule and by learned interest, worked out only with personalization consent.

  5. Experiments.

    A visitor is placed in a test only with personalization consent and a visitor id.

  6. The page.

    An experiment's version comes first; then the arrangement, each section's targeted content, the live-slot ticket and the recommendations; then the members-only gate removes anything this visitor may not read.

  7. On the way out.

    The consent notice and your consent-gated tags, the measurement beacon, and the record of every decision made.

  • Under the steps: Every step catches its own errors and serves the page without personalization. A newly approved rule or piece of targeted content reaches visitors as the platform's servers and cached pages refresh. No AI model is called while a page is decided.

Holdback and holdout

Holdback and holdout are two things

A holdback

belongs to one piece of targeted content: by default 10% of its audience keep the default page, and its lift is measured on its goal.

The platform holdout

belongs to the whole site: 5% of identified, consented visitors see the site's own defaults, chosen by a salted hash with nothing stored, so the value of personalization as a whole can be measured. Experiments are never suppressed by it.

Live slots, underneath

  • A page gets a live ticket only when it has a live slot, and the visitor has allowed personalization and has a visitor id. The visitor must already be in the offer's audience, unless joining it triggers the offer. The offer is shown only if the visitor is in its audience when it is sent. The ticket is sealed and must be used within 120 seconds. The page cannot read the visitor id inside it.
  • The live channel is a WebSocket held by the visitor's own Durable Object on Cloudflare, which rests between messages. The server sends, and the page listens.
  • Every push is signed, delivered once and logged as an exposure. When an offer expires, an alarm in that visitor's Durable Object withdraws it. Erasing a visitor closes their live channel.

How a page is decided, in full

What keeps it honest

Decided before it is sent.

Every decision is made on the server, so a page never personalizes first and asks later.

Consent first.

Nothing is personalized unless the visitor's consent allows it: in an opt-in country only after a yes, and in an opt-out region such as the United States by default, until the visitor says no. A browser that sends Global Privacy Control is never personalized and never given a live channel.

The default when in doubt.

Whatever goes wrong, the visitor gets the normal page.

Approval before visitors see it.

The exact change is shown in words before anything goes live, approval is required for anything visitors will see, and every change can be taken back.

A control group, built in.

Every piece of targeted content can hold some of its audience back, and the platform holdout holds back some of everyone.

Every decision on the record.

What was shown, why, and what came second, kept for the site's Admins.

Common questions

Does personalization reach every visitor?

No, and on purpose. It reaches visitors whose consent allows it: after a yes in an opt-in country, and by default in an opt-out region such as the United States, until the visitor says no. A browser that sends Global Privacy Control, a visitor who declined, and a visitor in an opt-in country who has not yet chosen see the default page.

Is it AI?

No. What a visitor sees comes from rules you write and arithmetic you tune, and no AI model decides a page. Learned audiences come from the affinity engine's scores.

Can I personalize the first page a visitor lands on?

Yes, using what that request carries, such as the visitor's country and how many visits they have made, where their consent allows it. A campaign's tag is recorded as the visitor arrives, and every page they open after it can be shaped for that campaign.

Can an audience come from an analytics question?

Through the copilot you can save the people behind a question as a list, for analysis. Audiences that serve are built from rules, from interests or from a campaign's arrivals.

Who can see why a visitor saw something?

Your Admins can see why any visitor saw what they saw, in "Why this?".

What do search engines see?

Every version of a page shares one canonical address, and a crawler arriving from an opt-in region sees the default page.

Does it work alongside experiments?

Yes. An experiment's version is chosen first and personalization applies on top of it, and the platform holdout never suppresses an experiment.

Do I need the affinity engine?

No. Rule audiences and campaign audiences work on their own. Learned audiences and ranked recommendations need the engine, which our engineers set up with you.