# Notification center

The notification center keeps users informed about relevant events within fulfillmenttools. It allows configuring email or client 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.
  * 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.
* `ORDER_MODIFIED`: An order was edited.
* `ORDER_UNLOCKED`: An order was unlocked.
* `ORDER_CANCELLED`, `ORDER_FORCE_CANCELLED`, `ORDER_CANCELLED_BY_EXPIRY`: An order was canceled.

## 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](/documentation/getting-started/eventing/notification-center/notification-center-endpoints.md).

## 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 notification endpoints.

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 %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.fulfillmenttools.com/documentation/getting-started/eventing/notification-center.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
