---
title: Configure a notification listener using the JavaScript (Browser) SDK prior to v6
slug: feature-experimentation/docs/set-up-notification-listener-javascript-prior-to-v6
docTags: 
createdAt: 2026-08-05T20:40:02.000Z
---

Notification listeners trigger a callback function that you define when certain actions are triggered in the SDK.

The most common use case is to send a stream of all feature flag decisions to an analytics provider or to an internal data warehouse to join it with other data that you have about your users.

## Notification listener types

For information about notification listener types and use cases, see [Notification listeners](docId:0d__cjuKECyJGqgTV0_5e).

:::hint{type="info"}
The follow code examples assume you have already [initialized the JavaScript (Browser) SDK](docId\:nHER9yNaUuV3aw35WcbhJ) and have created an `optimizelyClient` instance.
:::

## Add and remove all notification listeners

The following example code shows how to add a listener, remove a listener, remove all listeners of a specific type (such as all decision listeners), and remove all listeners.

```javascript
import { createInstance, enums } from '@optimizely/optimizely-sdk';

const optimizely = createInstance({
  sdkKey: '<YOUR_SDK_KEY>',
});

// Add Notification Listener
const notificationId = optimizely.notificationCenter.addNotificationListener(
  enums.NOTIFICATION_TYPES.DECISION,
  ({ type, userId, attributes, decisionInfo }) => {
    console.log(type, userId, attributes, decisionInfo);
  },
);

// Remove Notification Listener
optimizely.notificationCenter.removeNotificationListener(notificationId);

// Remove All Notification Listeners
optimizely.notificationCenter.clearAllNotificationListeners();

// Remove all Notification Listeners of a certain type
optimizely.notificationCenter.clearNotificationListeners(enums.NOTIFICATION_TYPES.DECISION);
```

## Configure each type of notification listener

The following example code shows how to configure each type of notification listener.

```javascript
import { createInstance, enums } from '@optimizely/optimizely-sdk';
// import your third-party analytics integration here

const optimizely = createInstance({
  sdkKey: '<YOUR_SDK_KEY>',
});


///////////////////////////////////////////
// SET UP DECISION NOTIFICATION LISTENER //
///////////////////////////////////////////
const onDecision = ({ type, userId, attributes, decisionInfo }) => {
  // Add a DECISION Notification Listener for type FLAG
  if (type === 'flag') {
    // Access information about feature, for example, key and enabled status
    console.log(decisionInfo['flagKey']);
    console.log(decisionInfo['enabled']);
    console.log(decisionInfo['decisionEventDispatched']);
    // Send data to analytics provider here
  }
}

const notificationId = optimizely.notificationCenter.addNotificationListener(
  enums.NOTIFICATION_TYPES.DECISION, onDecision,
);

////////////////////////////////////////////
// SET UP LOG EVENT NOTIFICATION LISTENER //
////////////////////////////////////////////
const onLogEvent = (logEvent) => {
  // process the logEvent object here (send to analytics provider, audit/inspect data)
}

optimizely.notificationCenter.addNotificationListener(
  enums.NOTIFICATION_TYPES.LOG_EVENT, onLogEvent
);

////////////////////////////////////////////////////
// SET UP OPTIMIZELY CONFIG NOTIFICATION LISTENER //
////////////////////////////////////////////////////
// listen to OPTIMIZELY_CONFIG_UPDATE to get updated data
// You will get notifications whenever the datafile is updated except for SDK initialization
const onConfigUpdateListener = () => {
  const config = optimizelyClient.getOptimizelyConfig()
}

optimizely.notificationCenter.addNotificationListener(
  enums.NOTIFICATION_TYPES.OPTIMIZELY_CONFIG_UPDATE,
  onConfigUpdateListener
);


////////////////////////////////////////
// SET UP TRACK NOTIFICATION LISTENER //
////////////////////////////////////////
const onTrack = (event) => {
  // process the event here (send to analytics provider, audit/inspect data)
}

optimizely.notificationCenter.addNotificationListener(
  enums.NOTIFICATION_TYPES.TRACK,
  onTrack
);
```
