The template_category_update field reports category reclassification for WhatsApp message templates. It is important because category changes can affect pricing, deliverability rules, and whether a template is allowed for a given use case.
What template_category_update Reports
Meta can send this field before a category change takes effect, or after the category has changed.
Typical cases:
- a template currently categorized as Utility will be recategorized to Marketing,
- a manual or automated review has changed the template category,
- Meta gives advance notice of an automated category correction.
When It Fires
Meta sends this webhook when an existing template category is scheduled to change or has changed.
Payload Shape
{
"object": "whatsapp_business_account",
"entry": [
{
"id": "<WABA_ID>",
"time": 1746169200,
"changes": [
{
"field": "template_category_update",
"value": {
"message_template_id": 278077987957091,
"message_template_name": "welcome_template",
"message_template_language": "en-US",
"previous_category": "UTILITY",
"new_category": "MARKETING"
}
}
]
}
]
}
Scheduled vs Completed Changes
Scheduled category-change notifications include:
| Field | Meaning |
|---|---|
correct_category | The category Meta plans to apply. |
new_category | The current category at the time of the scheduled-change notice. |
category_update_timestamp | When Meta plans to apply the corrected category. |
Completed category-change notifications include:
| Field | Meaning |
|---|---|
previous_category | Category before the change. |
new_category | Category after the change. |
Do not assume new_category always means the final category in scheduled-change payloads. In that shape, Meta's docs use new_category for the current category and correct_category for the planned category.
Dualhook Handling
Dualhook subscribes to template_category_update as a normalized management field. It uses category updates to keep template metadata aligned with Meta, surfaces category changes in operational views, and forwards the management event to your configured endpoint.
This field contains template metadata only. Dualhook stores operational metadata and delivery status; it does not store message bodies.
Implementation Notes
- Treat scheduled and completed payloads as different shapes.
- If a Utility template is moving to Marketing, review pricing, opt-in, and marketing frequency-cap behavior before continuing sends.
- Join by template ID and language; names can be reused across languages.
- Keep the scheduled timestamp so operators can adjust campaigns before the category change lands.
- If the category looks wrong, fix the template category in Meta's template tooling rather than ignoring the webhook.