WhaBuzz docs
Event catalogue

Template status

A template changed review state. Routed by WABA. Rejections carry Meta's reason and other_info; WhaBuzz stores them as the template's status_reason and the console shows it.

A template changed review state. Routed by WABA. Rejections carry Meta's reason and other_info; WhaBuzz stores them as the template's status_reason and the console shows it.

Event type: template.status. Fixture payloads are the WhaBuzz Demo tenant's real ids with a fictional customer number; id, tenant_id and created_at in envelopes are illustrative.

#Approved

What Meta POSTs to WhaBuzz (fixtures/meta/template_status_approved.json):

{
  "object": "whatsapp_business_account",
  "entry": [
    {
      "id": "26059971920328384",
      "changes": [
        {
          "value": {
            "event": "APPROVED",
            "message_template_id": 1689556908129832,
            "message_template_name": "renewal_reminder",
            "message_template_language": "en",
            "reason": "NONE",
            "message_template_category": "UTILITY"
          },
          "field": "message_template_status_update"
        }
      ]
    }
  ]
}
json

What your endpoint receives, as the body of a signed POST. raw is abbreviated here; on the wire it is the full body above.

{
  "id": "evt_01JAB3K9X2S8C4M7Q1V5R6T0YZ",
  "type": "template.status",
  "api_version": "2026-10-16",
  "created_at": "2025-10-16T05:12:03.481Z",
  "tenant_id": "a578246e-b97f-48e6-ae42-939ec3ccf917",
  "waba_id": "26059971920328384",
  "phone_number_id": null,
  "display_phone_number": null,
  "wamid": null,
  "wa_id": null,
  "user_id": null,
  "dedupe_key": "message_template_status_update:<sha256 of the canonical value>",
  "data": {
    "event": "APPROVED",
    "message_template_id": 1689556908129832,
    "message_template_name": "renewal_reminder",
    "message_template_language": "en",
    "reason": "NONE",
    "message_template_category": "UTILITY",
    "field": "message_template_status_update"
  },
  "raw": {
    "…": "the complete Meta POST body, byte for byte, as shown above"
  },
  "raw_path": "entry[0].changes[0].value"
}
json

#Rejected, with reason and other_info

What Meta POSTs to WhaBuzz (fixtures/meta/template_status_rejected.json):

{
  "object": "whatsapp_business_account",
  "entry": [
    {
      "id": "26059971920328384",
      "changes": [
        {
          "value": {
            "event": "REJECTED",
            "message_template_id": 1689556908129833,
            "message_template_name": "diwali_offer",
            "message_template_language": "en",
            "reason": "INVALID_FORMAT",
            "other_info": {
              "title": "FIRST_PAUSE",
              "description": "Template body contains variables at the start or end."
            }
          },
          "field": "message_template_status_update"
        }
      ]
    }
  ]
}
json

What your endpoint receives, as the body of a signed POST. raw is abbreviated here; on the wire it is the full body above.

{
  "id": "evt_01JAB3K9X2S8C4M7Q1V5R6T0YZ",
  "type": "template.status",
  "api_version": "2026-10-16",
  "created_at": "2025-10-16T05:12:03.481Z",
  "tenant_id": "a578246e-b97f-48e6-ae42-939ec3ccf917",
  "waba_id": "26059971920328384",
  "phone_number_id": null,
  "display_phone_number": null,
  "wamid": null,
  "wa_id": null,
  "user_id": null,
  "dedupe_key": "message_template_status_update:<sha256 of the canonical value>",
  "data": {
    "event": "REJECTED",
    "message_template_id": 1689556908129833,
    "message_template_name": "diwali_offer",
    "message_template_language": "en",
    "reason": "INVALID_FORMAT",
    "other_info": {
      "title": "FIRST_PAUSE",
      "description": "Template body contains variables at the start or end."
    },
    "field": "message_template_status_update"
  },
  "raw": {
    "…": "the complete Meta POST body, byte for byte, as shown above"
  },
  "raw_path": "entry[0].changes[0].value"
}
json

This page as Markdown: /events/template-status.md. All docs in one file: /llms-full.txt.