Skip to main content
Version: v1.39.1

Custom bucketing

When evaluating flags, the targetingKey is usually given a user ID. This key ensures that a user will always be in the same group for each flag.

Sometimes, it is desireable to bucket users based on a different value. The bucketingKey field in the flag configuration allows you to define a different identifier to be used instead. For example:

first-flag:
bucketingKey: "teamId"
variations:
A: false
B: true
defaultRule: # When no targeting match we use the defaultRule
percentage:
A: 50
B: 50

With this flag configuration, the teamId value will be used for hashing instead of targetingKey. The value must be provided to the evaluation context:

user = ffcontext.NewEvaluationContextBuilder("user126")
.AddCustom("teamId", "f74b72")
.Build()

ffclient.BoolVariation("first-flag", user, false)

As a result, users who are members of the same team will receive the same flag variation, consistently. A different bucketingKey can be used per experiment, though normally you'll only have a handful of possible values.

This is useful for A/B testing, permissions management and other use cases where targeting a consistent group of users is required.

Note: if a value in the corresponding bucketingKey is not found in the evaluation context, the flag rules will not be evaluated, and the SDK will return the default value.