Skip to main content

Targeting FAQ

Common questions about targeting and audience configuration for experiments and rollouts.

All Channels or No Channels

Question

What does "No Channel" or "All Channels" mean in the Audience Page?

Answer

This should rarely if ever be used. It means ALL channels available to particular application (desktop, iOS, or Android).

Ex: for desktop this includes ESR and Unbranded - which should only be receiving security fixes.


Version Targeting

Question

Can Nimbus experiments/rollouts target specific beta releases, i.e. can I express "roll this out to everyone on 104b6 and later"?

Answer

Yes.

Here is where you can learn about our dot release version naming pattern by platform (so is the first dot release x.1.0 or x.0.1)

If you are a mobile engineer, see the Mobile FAQ for how to add a version. To find how the version numbers work for your platform check the versioning documentation.

Otherwise, file an issue here to add a specific version (of beta, nightly, or release) and then ping in #ask-experimenter on Slack.

The version requested will get added as an option to the Minimum Version and Maximum Version drop down menus. It is a minor and quick change. By default Experimenter (Nimbus) only exposes the whole valued versions, until requested.


Custom Targeting Options

Question

How can I add a new advanced targeting option for experiment audiences?

Answer

To add new advanced targeting you can open a PR against the constants.py file in Experimenter. The advanced targeting is evaluated by the client at the moment we try to determine if we can enroll an eligible user. Think of it more like a funnel than a target. All that's needed is to add a new NimbusTargetingConfig object, e.g.:

NEW_ANDROID_13_USERS = NimbusTargetingConfig(
name="New Android 13 Users",
slug="new_android_13_users",
description="Users who have Android 13 and are on their first run of the application",
targeting="(android_sdk_version|versionCompare('33') >= 0) && is_first_run",
desktop_telemetry="",
sticky_required=True,
is_first_run_required=True,
application_choice_names=(Application.FENIX.name,),
)

Targeting expressions are written in JEXL (Javascript EXpression Language).

If you need help writing the targeting expression, let us know in #ask-experimenter on Slack.