---
title: Configure a notification listener using the PHP SDK
slug: feature-experimentation/docs/set-up-notification-listener-php
docTags: 
createdAt: 2026-08-05T20:39:59.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"}
**Note**
The follow code examples assume you have already [initialized the PHP SDK](docId\:xsDnjIZ8rfV8bdKdSCm3_) 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.

```php
use Optimizely\Notification\NotificationType;

// Remove Notification Listener
$optimizelyClient->notificationCenter->removeNotificationListener($notificationId);

// Remove all Notification Listeners
$optimizelyClient->notificationCenter->clearAllNotificationListeners();

// Remove all Notification Listeners of a certain type
$optimizelyClient->notificationCenter->clearNotificationListeners(NotificationType::DECISION);
```

## Configure each type of notification listener

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

```php
// import your third-party analytics integration here
#######################################
# SET UP ACTIVATE NOTIFICATION LISTENER
#######################################
public function onActivate($experiment, $userId, $attributes, $variation) {
}

$optimizelyClient->notificationCenter->addNotificationListener(
    NotificationType::ACTIVATE,
    'onActivate'
);

#######################################
# SET UP DECISION NOTIFICATION LISTENER
#######################################
public function onDecision($type, $userId, $attributes, $decisionInfo) {
}

$optimizelyClient->notificationCenter->addNotificationListener(
    NotificationType::DECISION,
    'onDecision'
);

#######################################
# 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
public function onConfigUpdate() {
}

$optimizelyClient->notificationCenter->addNotificationListener(
    NotificationType::OPTIMIZELY_CONFIG_UPDATE,
    'onConfigUpdate'
);

#######################################
# SET UP TRACK LISTENER
#######################################
public function onTrack($eventKey, $userId, $attributes, $eventTags, $event) {
}

$optimizelyClient->notificationCenter->addNotificationListener(
    NotificationType::TRACK,
    'onTrack'
);
```
