Skip to main content
Version: Next

How to target specific users

Rule format

A rule is a configuration that allows to serve a variation based on some conditions.

Format details

FieldDescription
name
(optional)
Name of your rule.
This is needed when your are updating a rule using a scheduled rollout.
query

Query represents an antlr query in the nikunjy/rules format.
This field is mandatory in every rule used in the targeting field.

See query format to have the syntax.

Note: if you use the field query in a defaultRule it will be ignored.

variation
(optional)
Name of the variation to return.
percentage
(optional)

Represents the percentage we should give to each variation.

percentage:
variationA: 10.59
variationB: 9.41
variationC: 80

The format is the name of the variation and the percentage for this one.

Note: If your total is not equal to 100%, this rule will be considered invalid.

progressiveRollout
(optional)

Allows you to ramp up the percentage of your flag over time.

You can decide at which percentage you start and end with in your release ramp. Before the start date we will serve the initial percentage and afterwards, we will serve the end percentage.

See progressive rollout to have more info on how to use it.

disable
(optional)

Set to true if you want to disable the rule.

Default: true.

info

variation, percentage and progressiveRollout are optional but you must have at least one of the three.

If you have more than one field we will use the first one in the order progressiveRollout > percentage > variation.

Query format

The rule format is based on the nikunjy/rules library.

All the operations can be written in capitalized or lowercase characters (ex: eq or EQ can be used). Logical Operations supported are AND & OR.

Compare Expression and their definitions (a|b means you can use one of either a or b):

OperatorDescription
eq, ==equals to
ne, !=not equals to
lt, <less than
gt, >greater than
le, <=less than equal to
ge, >=greater than equal to
cocontains
swstarts with
ewends with
inin a list
prpresent
notnot of a logical expression

Examples

  • Select a specific user: key eq "example@example.com"

  • Select all identified users: anonymous ne true

  • Select a user with a custom property: userId eq "12345"

  • Select on multiple criteria: All users with ids finishing by @test.com that have the role backend engineer in the pro environment for the company go-feature-flag

    (key ew "@test.com") and (role eq "backend engineer") and (env eq "pro") and (company eq "go-feature-flag")

Environments

When you initialise go-feature-flag you can set an environment for the instance of this SDK.

ffclient.Init(ffclient.Config{
// ...
Environment: "prod",
// ...
})

When an environment is set, it adds a new field in your user called env that you can use in your queries. It means that you can decide to activate a flag only for some environment.

Example of flag configuration based on the environment:

my-flag:
variations:
A: "A"
B: "B"
C: "C"
targeting:
- name: Target pre environment
query: env eq "pre"
variation: A
- name: Target pro environment
query: env eq "pro"
variation: B
defaultRule:
variation: C

Get the rule name in the metadata

When you use a rule in your targeting, you can get the name of the rule in the metadata of the variation.
The information on what rule has been used to serve the variation is available in the metadata of the variation in the field called evaluatedRuleName.

If you are interested about this information, you have to name your rules by adding the field name in your rule. This name will be extract and added in the evaluatedRuleName field of the metadata.

Get the latest GO Feature Flag updates