AISARAISAR
All webhooks

Templates

Template rejected

template.rejected

Fires when a WhatsApp Business message template is rejected by Meta and can no longer be sent. The event is emitted during periodic template status synchronisation, when the Meta review status transitions to `rejected`. Use it to invalidate any cached list of approved templates and to stop attempting to send this template. The rejection reason (if Meta provided one) is in `data.template.meta_status_reason`.

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": "template.rejected",
  "event_id": "evt_01JXXXXXXXXXXXXXXXXXXXXX",
  "timestamp": "2026-06-01T12:00:00.000000Z",
  "company_id": 1,
  "data": {
    "template": {
      "id": 42,
      "external_id": "123456789012345",
      "name": "order_update",
      "slug": "order_update_en_57",
      "language": "en",
      "category": "marketing",
      "status": "archived",
      "meta_status": "rejected",
      "meta_status_reason": "INVALID_FORMAT",
      "channel_id": 57,
      "channel_type": "whatsapp_business"
    }
  }
}

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": "template.rejected",
  "event_id": "evt_01JXXXXXXXXXXXXXXXXXXXXX",
  "timestamp": "2026-06-01T12:00:00.000000Z",
  "company_id": 1,
  "data": {
    "template": {
      "id": 42,
      "external_id": "123456789012345",
      "name": "order_update",
      "slug": "order_update_en_57",
      "language": "en",
      "category": "marketing",
      "status": "archived",
      "meta_status": "rejected",
      "meta_status_reason": "INVALID_FORMAT",
      "channel_id": 57,
      "channel_type": "whatsapp_business"
    }
  }
}

Payload fields

FieldTypeDescription
template.idintegerAISAR template ID
template.external_idstring|nullMeta's template ID
template.namestringTemplate name as registered with Meta
template.slugstringInternal slug
template.languagestringBCP-47 language code (e.g. `en`, `en_US`)
template.categorystring|nullCategory: `marketing`, `utility`, or `authentication`
template.statusstringLocal lifecycle status: `draft`, `published`, `archived`
template.meta_statusstringAlways `rejected` for this event
template.meta_status_reasonstring|nullRejection reason from Meta, if provided
template.channel_idinteger|nullWhatsApp Business channel the template belongs to
template.channel_typestring|nullChannel type key — `whatsapp_business`