> ## Documentation Index
> Fetch the complete documentation index at: https://docs.gowasl.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Wasl Webhook: Busy Mode Activation and Revocation

> Handle Wasl busy mode webhook events so your integration automatically pauses order submissions when Wasl temporarily stops accepting new orders.

Wasl sends a Busy Mode webhook to your registered endpoint when it activates or revokes a temporary pause on order acceptance. During busy mode, Wasl is not accepting new orders — any order you attempt to submit during this window will be rejected. By listening for this webhook you can proactively pause your order submission logic and resume it automatically when busy mode ends, rather than encountering repeated failures.

The `type` field in the payload tells you whether busy mode is being activated or revoked. When activated, the payload also includes the UTC timestamps for when busy mode starts and when it is scheduled to expire.

## Delivery Direction

This webhook is sent **by** Wasl **to your server** — you do not call this endpoint yourself.

```
POST your-webhook-url
Content-Type: application/json
```

## Payload Fields

<ParamField body="type" type="string">
  Indicates the busy mode event type. One of:

  * `BUSY_MODE_ACTIVATED` — Wasl has entered busy mode and is not accepting orders.
  * `BUSY_MODE_REVOKED` — Busy mode has been lifted and Wasl is accepting orders again.
</ParamField>

<ParamField body="activated_at" type="string">
  UTC datetime string for when busy mode becomes active. Only present when `type` is `BUSY_MODE_ACTIVATED`.
</ParamField>

<ParamField body="expired_at" type="string">
  UTC datetime string for when busy mode is scheduled to expire. Only present when `type` is `BUSY_MODE_ACTIVATED`.
</ParamField>

<ParamField body="webhook_token" type="string">
  A secret token for verifying that the request originated from Wasl. Always validate this before processing the payload. See the [Webhooks Overview](/api-reference/webhooks/overview) for details.
</ParamField>

## Example Payloads

```json Busy Mode Activated theme={null}
{
  "type": "BUSY_MODE_ACTIVATED",
  "activated_at": "2021-05-20T10:49:00Z",
  "expired_at": "2021-05-20T11:19:00Z",
  "webhook_token": "XXXXX"
}
```

```json Busy Mode Revoked theme={null}
{
  "type": "BUSY_MODE_REVOKED",
  "webhook_token": "XXXXX"
}
```

<Note>
  When you receive a `BUSY_MODE_ACTIVATED` event, pause all order submissions to Wasl immediately. Resume only when you receive a `BUSY_MODE_REVOKED` event **or** the `expired_at` time has passed — whichever comes first. Do not assume busy mode always ends via the revocation webhook.
</Note>

## Handling the Event

After validating the `webhook_token`, a typical handler will:

1. Check the `type` field.
2. For `BUSY_MODE_ACTIVATED`:
   * Set a flag in your system to block new order submissions.
   * Store `expired_at` so you can resume automatically if no revocation event arrives.
   * Optionally notify your operations team.
3. For `BUSY_MODE_REVOKED`:
   * Clear the busy mode flag to allow order submissions to resume.
4. Return HTTP 200 to acknowledge receipt.

<Warning>
  If your integration attempts to submit orders during busy mode, those requests will be rejected by Wasl. Always check your busy mode flag before initiating a card request or order.
</Warning>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.