What the rollout counts
A feature flag rolls out to a share of people, or a share of accounts. Which one you pick decides who moves together, what a percentage means, and who gets nothing.
Rolling out. The account rollout unit is part of the current release and is not on every project yet. Until it reaches yours, a feature flag rolls out by person and the question below does not appear when you create one.
A rollout percentage is a share of something. On a feature flag you choose what that something is, once, when you create it.
| Unit | The share is | Who moves together |
|---|---|---|
| People | a share of people | one person, wherever they are signed in |
| Accounts | a share of accounts | everyone in an account, at the same moment |
People is the default and is what you want unless the thing you are shipping is bought, configured or noticed at the company level.
Only a feature flag can count accounts
The unit control appears on Feature flag and nowhere else. The other three experience types have a subject that is not a customer:
| Type | Subject | Unit |
|---|---|---|
| Page experiment | the device | fixed |
| Server experiment | the device | fixed |
| Personalization | the person who sees it | fixed, people |
| Feature flag | whatever you choose | People or Accounts |
A Personalization renders to a human being, so its subject is that human. An experiment measures a device, because most experiment traffic is never signed in and a measurement needs one consistent subject per exposure. Neither has a company as its subject, so neither offers the choice.
An account still has users under it, so personalization keeps working per user on an account-unit flag. The account decides who is inside the rollout. It does not flatten what each person sees once they are.
Why "everyone in an account at the same moment" is the point
Ship a new billing screen to 10% of people and you get 10% of every account. One company sees two different billing screens depending on who logged in. Their admin files a bug, and it is not a bug.
Ship it to 10% of accounts and every person in a treated company sees the new screen, every person in an untreated company sees the old one, and nobody inside one company disagrees about what the product looks like.
That is the whole reason the unit exists. Use Accounts when the answer is embarrassing if two colleagues compare screens.
You choose it once, in the create dialog
The unit is the third question the create dialog asks once you pick Feature flag. There is no control for it anywhere else in the console, so that is the only place you set it.
The API is slightly more permissive than the UI: it accepts a change while the experience is still a
draft, and rejects one afterwards with Entity type can only be changed while the experience is a draft. Re-sending the value it already holds is not a change and always succeeds.
The reason is that changing the unit rebuckets everyone. The share is recomputed against a different subject, so people who were being served stop being served and people who were not start. For a flag that is already live in front of customers, that is not a settings change, it is a release.
An account-unit flag cannot become an experiment
A feature flag can normally be turned into an experiment and back with no deploy, because your code asks for a key rather than a type. That conversion is refused while the unit is Accounts.
An experiment measures a device, so it has no use for an account, and a row carrying both would be
measured against a subject it does not bucket on. The API rejects the change with Only a feature flag can be rolled out by account.
Set the unit back to People first, then convert. That is a real rebucketing of everyone, which is the honest cost of the change rather than a formality.
What a person with no account gets
Nothing. They are served the off value.
This is the part most people expect to work differently, so it has its own page.
Creating a feature flag
Create a flag, choose whether the visual editor or an SDK applies it, set its key, roll it out, and read it from your code.
When no account resolves
An account-unit flag serves the off value to anyone Intempt cannot place in an account. It does not fall back to deciding per person, and this page explains why that is the safe answer.
