Decision notification listener
The decision notification listener is triggered by the decide methodsdecide methods. It is most commonly used to send decisions to an analytics provider or to an internal data warehouse to join it with other data that you have about your users.
Note If you only want decisions that resulted in impressions in the Optimizely app, you can filter on the dispatched decision event field of the returned OptimizelyDecision object in your code.
To track flag usage, complete the following:
- Sign up for an analytics provider of your choice (for example, Segment).
- Configure a decision notification listener.
- Follow your analytics provider's documentation and send events from within the decision listener callback.
Steps 1 and 3 are not covered in this documentation.
Parameters
The following table shows the information provided to the listener when it is triggered:
Field | Type | Description |
|---|---|---|
type | string | Decision type varies depending on which method triggers the listener. The decide methods set the type to `flag`. |
decision info | map | Key-value map that consists of data corresponding to the decision. See [decision-info parameter](https://docs.developers.optimizely.com/feature-experimentation/docs/decision-notification-listener#decision-info-parameter). |
user ID | string | The user ID. |
attributes | map | A map of custom key-value string pairs specifying attributes for the user that are used for [audience targeting](https://support.optimizely.com/hc/en-us/articles/38683417490957). Non-string values are only supported in SDK versions 3.0 and above (released after March 2019) for most SDKs. See [SDK compatibility matrix](https://docs.developers.optimizely.com/feature-experimentation/docs/sdk-feature-compatibility). |
decision info parameter
The following table shows the decision info parameter of the decision notification listener:
Decision info parameter | Description |
|---|---|
flag key | The flag key. |
enabled | Boolean value for whether the flag is enabled or not. |
variables | The same object as returned by `my_decision.variables`. |
variation key | The key of the flag variation. |
rule key | The key of the flag rule. |
decision event dispatched | A Boolean value indicating if the decision dispatched a decision event to `logx.optimizely.com`. In the [Optimizely app](https://app.optimizely.com), an impression on the [Experimentation Results page](https://support.optimizely.com/hc/en-us/articles/38941449370893-Analyze-results-in-Feature-Experimentation) corresponds to a dispatched decision event. |
experiment ID | Experiment assignment ID. |
variation ID | Variation assignment ID. |
Examples
For code examples, see the following SDK documentation on notification listeners:
- Android SDKAndroid SDK
- C# SDKC# SDK
- Flutter SDKFlutter SDK
- Go SDKGo SDK
- Java SDKJava SDK
- JavaScript SDKJavaScript SDK – SDK versions 6.0.0 and later.
- JavaScript (Browser) SDKJavaScript (Browser) SDK – SDK versions 5.3.5 and earlier.
- JavaScript (Node) SDKJavaScript (Node) SDK – SDK versions 5.3.5 and earlier.
- PHP SDKPHP SDK
- React SDKReact SDK
- React Native SDKReact Native SDK
- Ruby SDKRuby SDK
- Python SDKPython SDK
- Swift SDKSwift SDK