AISARAISAR
All webhooks

Channels

Channel status changed

channel.status_changed

Fires when a channel status changes for any reason. This is the catch-all event for every transition; to react to specific transitions, also subscribe to `channel.connected`, `channel.disconnected`, `channel.paused`, and `channel.resumed`.

HTTP request

AISAR sends a signed POST request to your webhook_url:

http
POST {webhook_url}
Content-Type: application/json
X-AISAR-Signature: sha256=...

{
  "event": "channel.status_changed",
  "event_id": "evt_01JXXXXXXXXXXXXXXXXXXXXX",
  "timestamp": "2026-03-26T12:00:00.000000Z",
  "company_id": 1,
  "data": {
    "channel": {
      "id": 2,
      "type": "whatsapp",
      "name": "Main WhatsApp",
      "status": "disconnected",
      "account_name": "+77001234567",
      "connected_at": "2026-03-26T10:00:00.000000Z",
      "disconnected_at": "2026-03-26T12:00:00.000000Z"
    }
  }
}

The X-AISAR-Signature header carries an HMAC-SHA256 signature of the request body — use it to verify the request came from AISAR.

Example payload

json
{
  "event": "channel.status_changed",
  "event_id": "evt_01JXXXXXXXXXXXXXXXXXXXXX",
  "timestamp": "2026-03-26T12:00:00.000000Z",
  "company_id": 1,
  "data": {
    "channel": {
      "id": 2,
      "type": "whatsapp",
      "name": "Main WhatsApp",
      "status": "disconnected",
      "account_name": "+77001234567",
      "connected_at": "2026-03-26T10:00:00.000000Z",
      "disconnected_at": "2026-03-26T12:00:00.000000Z"
    }
  }
}

Payload fields

FieldTypeDescription
channel.idintegerChannel ID
channel.typestringChannel type: `whatsapp`, `whatsapp_business`, `instagram`, `instagram_business`, `telegram_bot`, `live_chat`
channel.namestringChannel name
channel.statusstringNew status: `connected`, `disconnected`, `paused`, `error`, `expired`
channel.account_namestring|nullPlatform account name or phone number
channel.connected_atstring|nullISO 8601 timestamp of last connection
channel.disconnected_atstring|nullISO 8601 timestamp of last disconnection