Skip to content

Rollout and holdout

Every landing page carries a built-in holdout. This is not an add-on for a pilot — it is how the page works, so that the effect of the agent is measurable from the first visitor.

data-nam-rollout

html
<form data-nam-landing-page="kestrel" data-nam-key="lp_live_…" data-nam-rollout="50">

The share of visitors who get the agent, 0100. Anything outside that is clamped; anything fractional is rounded. The default is 100.

How the split is decided

On the server, in intake, from a SHA-256 of the visitor's own token — not in the browser, and not from a coin flip:

parseInt(digest, 16) % 100 < rolloutPct   →  assist
otherwise                                 →  control

Deriving it from the token alone has three consequences that matter:

  • a reload lands on the same side;
  • a second tagged form on the same page lands on the same side;
  • a re-created session lands on the same side.

And the browser cannot choose its own arm.

What a control visitor gets

Nothing. The controller opens a session, starts the view beacon, and stops. No greeting, no conversation, no visible change of any kind.

That is the point: completion is being measured against a genuinely untouched page, so nothing may speak to a control visitor first. Both arms still get a session, a profile and the same funnel events, so the two are directly comparable.

Registering a page dark

Set the rollout to 0. Every visitor is control, nothing renders, and the funnel still records views — which gives you a baseline on the real page before anyone sees the agent.

Forcing an arm while you test

Append ?nam_arm=assist or ?nam_arm=control to the URL. Anything else in that parameter is ignored.

It does nothing in production

The override is honoured only where ALLOW_ARM_OVERRIDE is set, which a deployed namespace cannot do. On a live page it is ignored, so it cannot be used — by you or by anyone else — to skew the measurement.

What is recorded

EventWritten byWhen
lp_viewSDKHalf the form has been on screen. Once per session.
lp_assist_startSDKThe agent took over. Once.
lp_field_setSDKThe visitor, or their password manager, wrote into one of your fields.
lp_questionPlatformThey typed something while a field was open that was not its answer.
lp_choicePlatformA card or a stage action was chosen.
lp_beatPlatformA block reached the page.
lp_submitSDKYour form really submitted. Once.
lp_abandonSDKThe page went away without a submit. Once, and never after a conversion.

Full detail in the events reference.

Proprietary. All rights reserved.