All webhooks
Templates
Template rejected
template.rejectedFires 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
| Field | Type | Description |
|---|---|---|
template.id | integer | AISAR template ID |
template.external_id | string|null | Meta's template ID |
template.name | string | Template name as registered with Meta |
template.slug | string | Internal slug |
template.language | string | BCP-47 language code (e.g. `en`, `en_US`) |
template.category | string|null | Category: `marketing`, `utility`, or `authentication` |
template.status | string | Local lifecycle status: `draft`, `published`, `archived` |
template.meta_status | string | Always `rejected` for this event |
template.meta_status_reason | string|null | Rejection reason from Meta, if provided |
template.channel_id | integer|null | WhatsApp Business channel the template belongs to |
template.channel_type | string|null | Channel type key — `whatsapp_business` |