The message_template_quality_update field reports changes to a template's quality score. It helps you react before a template is paused or disabled due to poor feedback.
What message_template_quality_update Reports
The payload identifies the template and includes the previous and new quality score.
Quality values:
| Score | Meaning |
|---|---|
GREEN | High quality. |
YELLOW | Medium quality or warning state. |
RED | Low quality and higher risk. |
UNKNOWN | Quality is pending or not enough signal exists. |
When It Fires
Meta sends this webhook when a template's quality score changes.
Payload Shape
{
"object": "whatsapp_business_account",
"entry": [
{
"id": "<WABA_ID>",
"time": 1674864290,
"changes": [
{
"field": "message_template_quality_update",
"value": {
"previous_quality_score": "GREEN",
"new_quality_score": "YELLOW",
"message_template_id": 806312974732579,
"message_template_name": "welcome_template",
"message_template_language": "en-US"
}
}
]
}
]
}
Dualhook Handling
Dualhook subscription: subscribed and forwarded. Dualhook's Meta app subscribes to message_template_quality_update. Meta does not allow Webhook Override for template fields, so it arrives on Dualhook's app-level callback and Dualhook forwards it to your endpoint.
Dualhook records the event in the connection's webhook log. The dashboard does not show per-template quality scores; check those in WhatsApp Manager or read the forwarded event.
The event contains template metadata and quality state only. Dualhook stores operational metadata and forwarding status; it does not store customer message content.
Implementation Notes
- Treat
YELLOWas an early warning andREDas urgent. - Segment or pause campaigns that are driving negative feedback before Meta pauses the template.
- Store both previous and new score so you can detect recovery as well as degradation.
- Join by
message_template_id, name, and language. Template names can be reused across languages.