Flag configuration

Configure and control how features are delivered across different environments.

We've designed a straightforward and easy-to-use system that covers a wide range of common use cases—whether you're turning a feature on or off, or setting up conditions for specific customers or locations.

Only those assigned Owner or User permissions of a feature flag, or workspace Administrators, can access a feature flag's configuration dialog. For more information, see Flag permissions.


Basic configuration (ON or OFF)

Use basic configuration when you just need to turn features on or off in different environments without worrying about advanced scenarios.

  1. In the story header, click the feature flag's name.
  2. Find the environment you want to configure and click its current status (ON or OFF).
  3. From the menu, select the new status.
Flag configuration screen for an example flag in Atono, showing environments (dev, stage, test, prod) with ON/OFF toggle options. The cursor is hovering over the prod environment status, displaying a a dropdown to select ON or OFF.
  1. Repeat steps 2-3 for any other environments you want to update.
  2. Click Save configuration, or click X to cancel.
    • If you cancel, confirm by clicking Discard changes in the dialog that appears.

The basic configuration screen is visible for a feature flag only when no slices have been configured in any environments. You can get the same result by applying the default value to an entire environment without configuring any slices.


Advanced configuration (slicing)

If you need more control than just turning features on or off for an entire environment, you can create and manage slices—customizable subsets of data or entities within an environment.

With slices, you can fine-tune feature delivery for specific customers (for multi-tenant applications), locations, or both. This gives you more precise control.

For example, slices can be useful when you want to:

  • Roll out features gradually by geography.
  • Give early access to select customers or tenants.

What's a slice?

A slice is a defined subset of data or entities within an environment, based on specific conditions. You can create slices based on two attributes Customer and Location. Each slice can have up to two conditions—one for customer and one for location.

If you're working with a multi-tenant app, customers represent tenants in your system, allowing you to customize features for each tenant. In single-tenant applications, you can ignore slicing by customer and just focus on location. The location attribute is based on the IP address of the request.

How it works:

When you configure slices, you start by setting a default value for the feature flag in an environment (ON or OFF). This default value applies unless you create slices that define different values for specific subsets.

Slices are evaluated in order from top to bottom. The first slice that matches the evaluation context is applied, and any slices below it are ignored. The default value is only used if no slices match.

Configure slices for an environment

  1. On a feature flag's details screen, click Configure slices,
  2. Select the tab for the environment where you want to configure slices.
    • Each environment has a default setting for the flag (ON or OFF). This value is applied unless a slice overrides it.
  3. Use the Attribute, Operator, and Value fields to define your slice's conditions.
  4. To add a second condition to a slice, click the plus (+) icon next to the first condition.
    • You can have up to two conditions per slice—one for Customer and one for Location.
    • Conditions within a slice have an AND relationship. For example, the conditions 'Customer is ABC Electronics' and 'Location is in Canada' applies to all ABC Electronics customers in Canada.
  5. To add more slices, click Add another slice and repeat steps 3-5 as needed.
  6. To remove a condition, click the delete (trash can) icon next to it.
  7. To enable or disable a slice, click the slice's current status, and select ON or OFF from the menu.
  8. Click Save configuration.

Available operators for Customer and Location attributes

When setting up slices, you can define conditions using various operators to tailor feature delivery to specific customers or locations. Here's a quick guide to the operators available for Customer and Location attributes.

Customer

When defining a slice based on the Customer attribute, you can either manually enter customer values or choose from identifiers collected and submitted by the SDK from evaluation contexts.

⚠️

The values of Customer attributes are case-sensitive!

Customer attribute operators

OperatorMatch typeExample
isExact matchCustomer is 'Harmony Hardware'.
The slice only applies to Harmony Hardware.
is notExact match (exclusion)Customer is not 'Vintage Soundworks'.
The slice includes all companies except Vintage Soundworks.
containsSubstring matchCustomer contains 'tone'.
The slice includes customers with 'tone' in their name, such as 'Electrotone Studies'. The company 'ToneCraft Instruments' is not included because the match is case-sensitive.
does not containSubstring matchCustomer does not contain 'electronics'.
The slice includes customers that don't include the string 'electronics' anywhere in their name.
is one ofExact matchCustomer is one of 'Sonic Relics', 'Golden Era Soundworks', 'Vinyl Vibe Audio'.
The slice includes only the specified customers.
is not one ofExact match (exclusion)Customer is not one of of 'Sonic Relics', 'Golden Era Soundworks', 'Vinyl Vibe Audio'.
The slice includes all customers except those specified.

Location

When configuring slices based on the Location attribute, you can select regions that range from continents to subcontinents, countries, or smaller areas like provinces or states. The location is based on the IP address of the request.

📘

Search tip

You can also search by ISO codes (for example, 'BC' for British Columbia) even if the abbreviation doesn’t appear in the list.

Location attribute operators

Match typeMatch typeExample
is inExact matchLocation is in 'Canada', 'US', 'Denmark'.
The slice includes all entities in the specified regions.
is not inExact match (exclusion)Location is not in 'Portugal', 'North America, 'Germany'.
The slice includes all entities except in those specified regions.

Example: Evaluating multiple slices

Let's walk through a scenario with multiple slices to show how the evaluation logic works:

  • Slice 1: Customer: Harmony Hardware, Location: Europe, Value: ON.
  • Slice 2: Location: Europe, Value: OFF.
  • Slice 3: Customer: Harmony Hardware, Location: France, Value: OFF.
  • Slice 4: Customer: Vinyl Vibes, Value: ON.
  • Slice 5: Location: United States, Value: ON.
  • Default: Value: OFF.
Flag configuration screen for an example flag in Atono showing multiple slices for different combinations of customer and location. There is a default toggle for the environment, and each slice has an ON/OFF toggle with conditions like Harmony Hardware in Europe set to ON and other slices configured for different customer and location pairs.

How the evaluation works:

  • If a request comes from Harmony Hardware in France, Slice 1 applies first because it matches Harmony Hardware and Europe. The feature is ON, and Slice 3, which is more specific to France, is ignored.
  • If a request comes from Harmony Hardware in Germany, Slice 1 applies, and the feature is ON. Slice 2, which applies to all European customers, is ignored.
  • If a request comes from Vinyl Vibes in Europe, Slice 2 applies, and the feature is OFF, since Slice 2 catches all requests in Europe not covered by Slice 1. If the request is from outside of Europe, Slice 4 applies, and the feature is ON.
  • If a request comes from ToneCraft Instruments in the US, Slice 5 applies, and the feature is ON.
  • If a request comes from ElectroWorld in Italy, Slice 2 applies, and the feature is OFF because it matches the location (Europe).
  • If a request comes from Harmony Hardware in the US, Slice 5 applies, and the feature is ON.
  • If a request comes from SoundScape Studios in Australia, none of the slices match, so the default value (OFF) is applied.