> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nextintent.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# The holdout

> holdout_pct on a site record: the share of stuck visitors left alone so the store view can compare, the 20% ramp until thirty are held, how the arm is assigned, and what the comparison proves.

Every site keeps a share of its stuck visitors as a control group: visitors the engine would have spoken to and deliberately did not. Their orders are compared with the orders of visitors who were spoken to, and that comparison is the proof that the sentences change anything. The share is `holdout_pct` on the site record.

## The setting

`holdout_pct` is a number between 0.05 and 0.5, default 0.10. Change it in the console or with `PATCH /v1/sdk/{id}` and `{ "holdout_pct": 0.2 }`. It is stored to three decimals.

Until thirty of the site's visitors have been held, the effective share is at least 0.20 whatever the setting. A new site would otherwise take months to reach a readable comparison at 5%. Once thirty are held, the setting applies. The count is of visitors held in the last 90 days, so a site that goes quiet for a season can re-enter the ramp.

## How a visitor lands in the holdout

The arm is assigned once per visitor, at the first moment the engine would engage them, by a hash of the visitor id and the site. It is stored on the visitor's durable record, so a returning visitor stays in the same arm across visits. A held visitor is treated exactly like a spoken-to one in every way except the sentence: the moment is recognised, the decision is made and recorded, the sentence is composed, and nothing is placed.

Holding back is not watch mode. In watch mode nobody is spoken to. With a holdout, most stuck visitors are spoken to and a fixed random share is not, so the two groups differ only in the sentence. That is what makes the comparison fair.

## What the store view shows

`GET /v1/sdk/{id}/store` carries a `proof` block: for each arm, visitors, orders, revenue and the order rate, and `min_arm`, the count each arm needs before the comparison is called proven (30). Once both arms have thirty, `money.lift_pct` is the difference in order rate between the spoken-to arm and the held arm, and `money.recovered_usd` is the credited revenue scaled by the share the comparison says was incremental. Before that, `recovered_usd` equals the credited figure and `recovered_basis` says the holdout is still collecting.

The credited figure itself, `money.credited_usd`, is never scaled. It is the full revenue from visitors who were shown a sentence and bought within seven days, and on Shopify it is what the bill is based on. The holdout is the proof beside the price, not the price.

## Choosing a share

Ten percent is the default because it reaches thirty held visitors on a mid-sized store in a few weeks while leaving 90% of moments to be acted on. Twenty percent proves faster and costs more moments. Five percent is for a site that has its proof and wants to act on almost everyone; the comparison keeps running, just more slowly. The shop-owner version of this reasoning is in [Held back to compare](/shopify/how-it-works/held-back).

## Related

* [The store view](/website/store-view)
* [Held back to compare](/shopify/how-it-works/held-back)
* [Sites: update](/api/reference/sites/update)
