# Notification center

The notification center keeps users informed about relevant events within fulfillmenttools. It allows configuring email notifications for specific events on the network and facility level.

The following events are available:

* `PICK_JOB_CREATED`: A pick job was created in a facility.
* `UPCOMING_TIME_TRIGGERED_REROUTE`: An order will soon be re-routed.&#x20;
  * Note: This event is only available for facility notifications.
* `ROUTING_PLAN_NOT_ROUTABLE`: An order couldn't be assigned to a facility.
* `ROUTING_PLAN_WAITING`: A routing plan is waiting for external events to be routed.

## Notification channels

The notification center supports two types of notification channels:

1. **Email channel**

When this channel type is configured, one or more email addresses can be added as recipients.\
Whenever a triggering event occurs, all configured recipients receive an email notification containing relevant event details.

2. **Client channel**

When this channel type is configured, a database entry is created each time a triggering event occurs. External clients can retrieve and display these entries via the [notification API](https://docs.fulfillmenttools.com/documentation/getting-started/eventing/notification-center/notification-center-endpoints).

## Configuration

Notifications can be configured either on the network or facility level:

* **Network-level configuration:** Notifications are received globally for all applicable facilities.
* **Facility-level configuration:** Notifications are received only for specific facilities (for example, for orders routed to that facility).

A [channel](#notification-channels) must be defined to set up a notification.

A [channel](#notification-channels) defines the source (event) and, if applicable, the target (receiver) of the notification.

We recommend defining separate channels for different receiver groups or facilities.

{% hint style="warning" %}
**Quotas may be imposed on this in the future**

fulfillmenttools reserves the right to impose a quota per customer on this feature in the future.
{% endhint %}

## Create a notification configuration

To create a notification on the network level, you'll need to use the Global notificaiton endpoints.&#x20;

To create a notification on the facility level, you'll need to use the Facility notification endpoints.

### Examples

#### Network notification for routing plan not routable

In the below example, we'll create a notification that sends an email to a user if a routing plan is not routable across the entire network.

{% tabs %}
{% tab title="Endpoint" %}

```http
PUT https://{projectId}.api.fulfillmenttools.com/api/configurations/notifications
```

{% endtab %}

{% tab title="Request body" %}

```json
{
  "channels": [
    {
      "enabled": true,
      "events": [
        "ROUTING_PLAN_NOT_ROUTABLE"
      ],
      "receiver": [
        {
          "email": "user@example.com", // you can enter as many email addresses as you like here
          "language": "en_US"
        }
      ],
      "type": "EMAIL"
    }
  ],
  "version": 1
}
```

{% endtab %}

{% tab title="Response body" %}

```json
{
    "version": 1,
    "channels": [
        {
            "enabled": true,
            "events": [
                "ROUTING_PLAN_NOT_ROUTABLE"
            ],
            "receiver": [
                {
                    "email": "user@example.com",
                    "language": "en_US"
                }
            ],
            "type": "EMAIL",
            "id": "019c0e39-9d56-76eb-9596-2dfc321dad6c"
        }
    ],
    "created": "2026-01-30T09:26:22.835Z",
    "lastModified": "2026-01-30T09:26:22.835Z"
}
```

{% endtab %}
{% endtabs %}

{% hint style="warning" %}
A scheduled `CRON_JOB` in the tenant is responsible for triggering the dispatch of emails. Depending on the configured interval of this job, a delay may occur between the actual event time and when the email is sent.
{% endhint %}

#### Facility notification for pick job creation

In the below example, we'll create a notification that sends a notification to Backoffice when a pick job is created.

{% tabs %}
{% tab title="Endpoint" %}

```http
PUT https://{projectId}.api.fulfillmenttools.com/api/facilities/{facilityRef}/configurations/notifications
```

{% endtab %}

{% tab title="Request body" %}

```json
{
  "channels": [
    {
      "enabled": true,
      "events": [
        "PICK_JOB_CREATED"
      ],
      "type": "CLIENT"
    }
  ]
}
```

{% endtab %}

{% tab title="Response body" %}

<pre class="language-json"><code class="lang-json">{
    "version": 1,
    "channels": [
        {
            "enabled": true,
            "events": [
                "PICK_JOB_CREATED"
            ],
            "type": "CLIENT",
<strong>            "id": "019c0f45-8292-76bc-98c4-9b1e4b3e961b"
</strong>        }
    ],
    "configId": "notification-center",
    "created": "2026-01-30T09:26:22.835Z",
    "lastModified": "2026-01-30T14:18:59.607Z"
}
</code></pre>

You can then use the `id` to
{% endtab %}
{% endtabs %}
