# whatsapp.template.category_updated

Meta reclassified a WhatsApp template's category, first as a 24-hour advance notice and again when applied.

### When it fires

Sent with `template.changeType: "scheduled"` for Meta's 24-hour advance notice, and again with `"applied"` when the change takes effect.

### Payload notes

`template.category` is always the category right now. Meta clears a custom delivery window when it recategorises a template, so read `message_send_ttl_seconds` back after an `applied` change.

### Platform notes

Forwarded from Meta's `template_category_update` field. The category decides Meta's per-delivery rate and the delivery window the template can carry.




**Payload for `whatsapp.template.category_updated`:**

- **id** (required) `string`: Stable webhook event ID: the dedupe key, also sent as the X-Zernio-Event-Id header and identical on every retry and redelivery. It identifies the event only, never an account or other resource.
- **profiles**: `WebhookProfiles` - See schema definition
- **test** `boolean`: Always true when present: only a sample sent by POST /v1/webhooks/test with an event carries it. Real deliveries never do.
- **event** (required) `string`: No description - one of: whatsapp.template.category_updated
- **account** (required) `object`: 
  - **accountId** (required) `string`: No description
  - **profileId** (required) `string`: No description
  - **platform** (required) `string`: No description - one of: whatsapp
  - **username** (required) `string`: No description
  - **displayName** `string`: No description
- **template** (required) `object`: 
  - **templateId** (required) `string`: Meta's `message_template_id`, returned as a string.
  - **name** (required) `string`: Meta's `message_template_name`.
  - **language** (required) `string`: Meta's `message_template_language` (e.g. `en_US`).
  - **changeType** (required) `string`: `scheduled` is Meta's 24h advance notice of an upcoming
reclassification; `applied` is the change taking effect.
 - one of: scheduled, applied
  - **category** (required) `string`: The category right now, regardless of changeType. - one of: UTILITY, MARKETING, AUTHENTICATION
  - **previousCategory** `string`: Present only when changeType is `applied`. The category before this change. - one of: UTILITY, MARKETING, AUTHENTICATION
  - **scheduledCategory** `string`: Present only when changeType is `scheduled`. The category that will take effect at `effectiveAt`. - one of: UTILITY, MARKETING, AUTHENTICATION
  - **effectiveAt** `string` (date-time): Present only when changeType is `scheduled`. ISO-8601 timestamp when the scheduled category takes effect.
- **timestamp** (required) `string` (date-time): 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.