Platform · Feature gates

Decide who takes part. Keep full control of your rollouts.

A gate sits in front of the experiment and answers one question before anything else runs: is this visitor in the optimization group or not? Set rules and rollout stages to keep full control.

Who is pinned, and to whatEnabled
Read in order. The first match serves its variant and the learner is skipped.
planisenterprisecontrol
else
countryinCA, DEurgency-copy
else
cart_value<20.00control
Rollout40%
Bucketed on the visitor id you send — the same visitor always lands on the same side.
Evaluate
Try a sample visitor against the gate before you save it.
{
"country": "NL",
"cart_value": 84.00,
"plan": "growth",
}
inside the 40% rolloutyes
rule 1 · plan is enterpriseno match
rule 2 · country in CA, DEno match
rule 3 · cart_value < 20.00no match
Takes part in the experiment

Same evaluation the gate runs on the hot path — never a separate preview.

Try it on a cohort first. Then roll out gradually. Keep control of the optimization along the way.

Rollout 5%
Rollout 40%
Rollout 100%
in the experimentyour current version, for nowpinned by a rule — never in it

One number, from one percent to everyone.

Change the rollout in the console and every replica picks it up within seconds — no deploy, no restart, no release train. Turn it up while it is working; turn it down when you need to.

1.0Rollout
Rollout over 14 days1% → 100%
D1D2D3D4D5D6D7D8D9D10D11D12D13D14

Turning it up never reshuffles anyone.

Whether a visitor takes part is worked out from the id you send, not a coin flip. Someone who saw the new checkout yesterday sees it again today — and raising the rollout only ever adds people.

2.0Sticky
rollout
5%5%10%10%20%20%30%40%55%70%85%100%100%100%
u_8241
u_1190
u_4402
acme_ops
in the experimentnot in it yetpinned by a rule — never in it

No row ever goes back. That is the whole guarantee — and the reason the numbers you read at the end mean something.

Manage targeting rules using your own data.

Anything you send with a request can become a rule — your own plan names, your own cohorts, nothing registered in advance. Rules are read top to bottom, and the first one that matches decides.

3.0Rules
A visitor in the rollout
plan = growth · country = NL · cart_value = 84.00
1plan is enterpriseno match
2country in CA, DEno match
3cart_value < 20.00no match
takes part in the experiment
One of your largest accounts
plan = enterprise · country = US · cart_value = 1,240.00
1plan is enterprisematch
2country in CA, DEnever read
3cart_value < 20.00never read
pinned to control, every time

Rules run only for visitors the rollout has already let in. Everyone the rollout has not reached yet sees your current version regardless.

Undoing it is a number, not a rollback.

Set the rollout to zero and everyone is back on your current version. No revert, no release to wait for — and everything the experiment learned is still there when you turn it back up.

4.0Back to zero
40%rollout

Forty in every hundred are seeing the new checkout. It is working, and then it isn’t.

one field, savedno deploy
0%rollout

Everyone is on your current version again, within seconds.

Nothing to revertThe call in your renderer is the call it always was. There is no experiment branch to take back out.
Nothing to wait forNo release train, no restart, no deploy. Every replica is serving the new number within seconds.
Nothing is lostEverything the experiment learned is still there. Turn the rollout back up and it picks up where it stopped.