template.status
Sent when WhatsApp reviews a template or changes its status. Use it to find out when a template you created is approved or rejected.
Called Template status changed in the app. Part of the plan feature webhooks.templates. To subscribe over the API, the key needs templates:read.
What’s in data. Every event wraps it in the same envelope.
template object
The template with its new status.
Show 16 child attributesHide child attributes
template.id string · uuid
template.name string
template.language string
template.category string
MARKETING, UTILITY or AUTHENTICATION, as WhatsApp has it. More values may be added.
template.status string
Where the template is in WhatsApp’s review: DRAFT (saved here, not submitted), PENDING, APPROVED, REJECTED, PAUSED, DISABLED, IN_APPEAL, PENDING_DELETION or DELETED. More values may be added. Only APPROVED templates can be sent.
template.rejection_reason string · nullable
WhatsApp’s reason, while the template is REJECTED. null otherwise.
template.quality string
WhatsApp’s quality rating: GREEN, YELLOW, RED or UNKNOWN. More values may be added.
template.number_id string · uuid · nullable
The number the template is on (see GET /v1/numbers).
template.parameter_format string
positional templates use {{1}}, {{2}} for variables; named
ones use {{name}}.
template.header object · nullable
The header, or null if there is none.
Show 2 child attributesHide child attributes
template.header.format string
TEXT, or the format of a media header (IMAGE, VIDEO, DOCUMENT) or LOCATION on a template made in the app. More values may be added.
template.header.text string
The header text. Only on a TEXT header.
template.body string
template.footer string · nullable
template.buttons array of objects
Show 4 child attributesHide child attributes
Each item:
template.buttons[].type string
QUICK_REPLY, URL, PHONE_NUMBER or COPY_CODE, or another type of a template made in the app. More values may be added.
template.buttons[].text string
template.buttons[].url string
The link of a URL button. A {{1}} at the end is a variable.
template.buttons[].phone_number string
template.variables object
The exact variables a message that sends this template must supply
(see POST /v1/messages). Positional templates use "1", "2";
named ones use the names. buttons is keyed by the button’s index in
buttons, as a string. A URL button with a variable in its link
needs "1", and so does a COPY_CODE button: its code is required
every time you send the template.
Show 3 child attributesHide child attributes
template.variables.header array of strings
template.variables.body array of strings
template.variables.buttons object
A map; each value is an array of strings.
template.created_at string · date-time
template.updated_at string · date-time
previous_status string
The status it had before. The same values as template.status.
reason string · nullable
WhatsApp’s reason, such as why it was rejected. null when there isn’t one.
Handling it
Section titled “Handling it”- Answer with any
2xxwithin 10 seconds. Do the work after. - Check the signature first. Verify webhooks has the code.
- Subscribe with
POST /v1/webhooks,events: ["template.status"].