---
title: "WhatsApp template category updated event"
method: POST
path: "whatsapp.template.category_updated"
tags: ["Webhook Events"]
---

# WhatsApp template category updated event

`POST whatsapp.template.category_updated` (webhook)

Fired when Meta reclassifies a WhatsApp Business template's category
after approval. Forwarded from Meta's `template_category_update`
webhook field on the WhatsApp Business Account. Category drives
Meta's per-conversation tariff and whether the template is subject
to the recipient's marketing opt-out. `template.changeType` is
`scheduled` (24h advance notice) or `applied`; `template.category`
is always the category right now.

## Payload

- WebhookPayloadWhatsAppTemplateCategoryUpdated — Webhook payload for the `whatsapp.template.category_updated` event. Fired when Meta reclassifies a template's category attached to a connected WABA. Maps Meta's `template_category_update` field onto our event envelope.
  - `id` string, required — Stable webhook event ID
  - `event` 'whatsapp.template.category_updated', required
  - `account` object, required
    - `accountId` string, required
    - `profileId` string, required
    - `platform` 'whatsapp', required
    - `username` string, required
    - `displayName` string
  - `template` object, required
    - `templateId` string, required — Meta's `message_template_id`, returned as a string.
    - `name` string, required — Meta's `message_template_name`.
    - `language` string, required — Meta's `message_template_language` (e.g. `en_US`).
    - `changeType` 'scheduled' | 'applied', required — `scheduled` is Meta's 24h advance notice of an upcoming reclassification; `applied` is the change taking effect.
    - `category` 'UTILITY' | 'MARKETING' | 'AUTHENTICATION', required — The category right now, regardless of changeType.
    - `previousCategory` 'UTILITY' | 'MARKETING' | 'AUTHENTICATION' — Present only when changeType is `applied`. The category before this change.
    - `scheduledCategory` 'UTILITY' | 'MARKETING' | 'AUTHENTICATION' — Present only when changeType is `scheduled`. The category that will take effect at `effectiveAt`.
    - `effectiveAt` string, date-time — Present only when changeType is `scheduled`. ISO-8601 timestamp when the scheduled category takes effect.
  - `timestamp` string, date-time, required — UTC time at which Zernio generated this event (set once when the event payload is built, before delivery is queued). Retries and redeliveries keep the original value, so it reflects the event, not the delivery attempt.

## Acknowledgement `200`

Webhook received successfully

---

[API](https://skmtc.net/zernio/apis/zernio-api.md) · [All operations](https://skmtc.net/zernio/apis/zernio-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/zernio/zernio-api/revisions/26bee5940ef6/schema)
