Chapter 1 · The scenario
Example: Exam season at a Lucknow coaching institute
A coaching institute in Lucknow keeps 40 templates in English and Hindi, and its sender service caches each template's status from webhooks. When the Hindi fee_reminder translation is still PENDING the night before fees are due, the service sends the approved English version to Hindi-preference students instead of failing. A week later a results-day promotion is PAUSED; the cache flips, the campaign job stops by itself, and it resumes when the unpause notice arrives three hours later.
Chapter 2 · What is template status?
Template status is the status field Meta keeps on every message template, one per name-and-language pair. It answers the question every send depends on: can this template go out right now? Only APPROVED templates can be sent. The API's full set of values is PENDING, APPROVED, REJECTED, IN_APPEAL, PAUSED, DISABLED, PENDING_DELETION, DELETED, ARCHIVED and LIMIT_EXCEEDED.
Statuses move through a lifecycle. A new template is PENDING while it is reviewed (up to 24 hours), then APPROVED or REJECTED, and a rejection can go IN_APPEAL. An approved template whose quality falls to low is PAUSED for 3 hours, then 6, and DISABLED the third time. A template unused for 12 months is ARCHIVED and deleted 28 days later unless unarchived. A template you delete becomes PENDING_DELETION while messages already sent with it keep trying to deliver for up to 30 days. LIMIT_EXCEEDED means the WABA is at its template limit.
WhatsApp Manager shows friendlier labels that blend status with quality: In review, Active – Quality pending, Active – High, Medium or Low quality, Paused, Disabled, Appeal requested. In code, read status and quality_score as separate fields and keep them current with the message_template_status_update webhook, which also reports passing events such as FLAGGED, REINSTATED, LOCKED and UNARCHIVED. Template approval is only the first transition in this lifecycle; status covers all of it.
Key takeaways
- Template status is the
statusfield on every WhatsApp template, and onlyAPPROVEDtemplates can be sent. - API values: PENDING, APPROVED, REJECTED, IN_APPEAL, PAUSED, DISABLED, PENDING_DELETION, DELETED, ARCHIVED and LIMIT_EXCEEDED.
- WhatsApp Manager labels such as Active – Low quality mix status and quality; read
statusandquality_scoreseparately. - Templates unused for 12 months are archived, then deleted 28 days later unless you unarchive them.
- Track changes with the
message_template_status_updatewebhook and poll the template list only to reconcile.
Chapter 3 · How it unfolds
How does template status work?
Submit: PENDING
Creating a template with
POST /{WABA_ID}/message_templatesreturns itsidand status — normallyPENDINGwhile review runs.Review: APPROVED or REJECTED
Approval makes it sendable; a rejection carries a
reason. A rejected template can be edited and resubmitted, or appealed (IN_APPEAL).Quality: PAUSED or DISABLED
Low quality pauses an approved template for 3 hours, then 6, and the third time disables it. Paused and disabled templates cannot be sent.
Inactivity or deletion: ARCHIVED, PENDING_DELETION
Twelve months without sends archives a template; deleting one starts
PENDING_DELETION. The name of a deleted approved template is blocked for 30 days.The webhook keeps you in sync
message_template_status_updatereports each change withevent,reasonand, for pauses,other_info. ReadGET /{WABA_ID}/message_templatesonly to reconcile.
Chapter 4 · In code
Template status in code
curl "https://graph.facebook.com/v26.0/{WABA_ID}/message_templates?fields=name,language,status,category,quality_score&limit=100" \-H "Authorization: Bearer {ACCESS_TOKEN}" \| jq '.data[] | select(.status != "APPROVED") | {name, language, status}'
A nightly reconcile: list every template (follow paging.next for more pages) and flag anything not APPROVED. Webhooks carry the changes in between.
Chapter 5 · The facts
Template status: key facts and limits
| Sendable status | APPROVED only |
|---|---|
| Review | PENDING, up to 24 hours |
| Quality strikes | PAUSED 3 h, then 6 h, then DISABLED |
| Archiving | After 12 months unused; deleted 28 days later |
| After deletion | Name blocked 30 days; in-flight delivery up to 30 days |
| Editable statuses | APPROVED, REJECTED, PAUSED (and DISABLED, per Meta's pausing guide) |
| Webhook field | message_template_status_update |
Chapter 6 · Why it matters
Why does template status matter?
Sending on a template that is not APPROVED fails, and the failure usually surfaces far from its cause — a stalled journey, a broadcast full of errors. A developer who mirrors status from webhooks can block sends before they fail, route around a paused template, warn a marketer that a translation is still pending, and avoid deleting a template whose name then cannot be reused for 30 days.Chapter 7 · Where it goes wrong
Common mistakes with template status
Treating Manager labels as API values
"Active – Low quality" is not a status; it is
APPROVEDwith aREDquality score. Readstatusandquality_scoreseparately.Deleting a template to reset it
Deleting by name removes every language with that name and blocks the name for 30 days. Edit instead where the status allows it.
Assuming status is per name
Each language is its own template with its own status. An approved English version says nothing about the Hindi one.
Forgetting archiving
Seasonal templates unused for a year are archived, then deleted after 28 days. Unarchive the ones you need well before the season.
Polling instead of listening
Frequent polling of
message_templatesadds load and still lags. Use the webhook for changes and poll only to reconcile.
Chapter 8 · Template Status FAQs
Template Status FAQs
Which template statuses can be sent?+
What is the difference between PAUSED and DISABLED?+
What does PENDING_DELETION mean?+
Why does WhatsApp Manager say Active when the API says APPROVED?+
Chapter 9 · What good teams do
Best practices for template status
- Fail fast with a clear message when a template is not
APPROVED, instead of surfacing a Graph API error. - Store
reasonandother_info.titlewith each change so support can explain a pause or rejection. - Keep a fallback template for each critical journey in case the primary one is paused.
- Treat
FLAGGEDas an early warning even though the template still sends.