Skip to main content

Troubleshoot WhatsApp template lifecycle errors

A WhatsApp send fails and the error carries one of Meta’s template-lifecycle codes: the template does not exist on your WhatsApp Business account (WABA) in the requested language (132001), Meta paused it for quality (132016), Meta disabled it for policy (132068/132069), or the account never finished registration (133010). Each is Meta refusing the send because of template or account state: re-sending the same payload reproduces the same refusal until the state changes. This page decodes the codes, tells you which side the fix lives on, and says when a retry helps and when it wastes time or makes things worse.
Orbit surfaces these codes with Meta’s own guidance attached, but it cannot lift a pause, re-enable a disabled template, or complete a registration on your behalf. The recovery steps below that say “in Meta Business Manager” happen in Meta Business Manager; Orbit support can help you read an error, not override it.

Symptoms

The same refusal surfaces in three places:
  • Delivery Log. The message detail shows status failed and the Orbit code (for example WHATSAPP_TEMPLATE_DISABLED) in the error column.
  • message.failed webhook. The payload carries the same error envelope; details.whatsappErrorCode holds the numeric Meta code (for example 132068) and details.fix_steps carries Meta’s remediation steps.
  • Campaign failure rollup. When a template pauses or disables, every send through it fails the same way, so the campaign rollup fills with one repeated code. A burst of identical codes across recipients is the signature of a template- or account-level state, not a per-recipient problem.
If the failure is instead an HTTP 400 WHATSAPP_TEMPLATE_VAR_COUNT_MISMATCH, the refusal happened in Orbit before Meta was reached — that is the send-side parameter check, and it has its own page: Troubleshoot WHATSAPP_TEMPLATE_VAR_COUNT_MISMATCH.

Decoder

Per-code fixes

132001 — template not found

  1. In Settings → Templates, confirm the template is approved in exactly the language you send with (en_US is not en).
  2. Re-sync templates from Meta to refresh Orbit’s local copy.
  3. If the template was created or approved in the last few minutes, wait one to two minutes for Meta’s propagation, then send again.
Re-sending without one of the above fails identically — the refusal is about the (name, language) pair on the WABA, not about that one request.

132012 — parameter format mismatch

Parameters must match the template’s placeholders in order, shape, and length. The full decode-and-fix walkthrough (positional "1"-"N" keys, currency and date objects, the 1024-character per field cap) lives on the parameter page: Troubleshoot WHATSAPP_TEMPLATE_VAR_COUNT_MISMATCH.

132016 — template paused for quality

  1. Rewrite the template so the first line states why the recipient is receiving the message, and strip promotional content out of utility and authentication templates.
  2. Confirm recipients explicitly opted in; blocks and reports from traffic that did not expect your messages are what drove the rating down.
  3. Resubmit for re-review. Meta unpauses automatically once observed quality recovers, typically 24-72 hours after the fix lands.
  4. Route the campaign through a different approved template in the meantime.
This is the template-level form of the number-level RED rating pause. If several templates pause at once, the quality problem is on the phone number: see WhatsApp campaign auto-paused on a RED quality rating.

132068 / 132069 — template disabled for policy

  1. Open the template in Meta Business Manager and read the cited policy violation.
  2. Appeal the decision through Meta Business Support, or fix the content and resubmit under a new template name — Meta does not re-approve a disabled template under its existing name.
  3. Until Meta re-enables the template or approves a replacement, sends through it stay refused. There is no retry path and no Orbit-side override.

133010 — account not registered

  1. Open Settings → Channels → WhatsApp and click Reconnect to finish Embedded Sign-up.
  2. Confirm the number’s registration state in Meta Business Manager under WhatsApp Accounts; a number that stalled mid-signup may need its SMS or voice OTP verification completed in WhatsApp Manager.
  3. Send again once registration completes — no template change is needed.
The full re-authentication walkthrough covers stuck signups: WhatsApp re-authentication and connection recovery.

131051 — unsupported message type

Send a text-only or plain template message instead of the interactive or media type you used; some interactive formats are gated by app version and region. The refusal follows the recipient’s device, so the same payload can succeed for other recipients.

190 — token expired

Reconnect the WABA under Settings → Channels → WhatsApp to re-run Embedded Sign-up and mint a fresh token; your numbers and templates re-link on reconnect. The details are in WhatsApp re-authentication and connection recovery.

131000 / 141000 — platform transient fault

This is a Meta-internal hiccup. Orbit retries the send automatically with backoff before the message lands on failed, so a failed row here means the hiccup outlived the retry window. A manual re-send is safe. If the code persists for several minutes across many sends, check status.facebook.com for an active Meta incident.

368 / 470 — policy block

Stop sending into the block: every send during an active block extends it. Review the block reason and expiry in Meta Business Manager under WhatsApp Accounts → Quality, fix the trigger (unsolicited marketing, missing opt-in, prohibited content), and resume after the block lifts. For 470 specifically, switch to an approved UTILITY or AUTHENTICATION template and confirm opt-in before resuming.

Fix vs retry, one rule

  • Deterministic refusals (the 422/409/401 rows above) are never retried automatically by Orbit, because retrying an unchanged payload replays an unchanged refusal. Fix the state first, then send again; that send is a new request, not a retry.
  • Transient faults (WHATSAPP_PLATFORM_TRANSIENT_FAULT, WHATSAPP_SERVICE_UNAVAILABLE, WHATSAPP_RATE_LIMITED) are retried automatically on the same backoff schedule Orbit uses for all provider faults. If one still ends failed, a manual re-send is safe. For the manual retry contract and Retry-After handling, see Rate limits and cool-downs.
  • Policy blocks are the exception to “just re-send later”: they are the one family where re-sending actively hurts. Wait for the expiry Meta reports.

Worked example

A Delivery Log row shows failed with WHATSAPP_TEMPLATE_PAUSED. The same envelope is available over the API:
Decode it against the table: whatsappErrorCode: 132016 is a Meta-side quality pause — “retry now?” is no, and the fix is your content plus Meta’s re-review. Act on it: rewrite and resubmit the template, move the campaign to a different approved template now, and only return traffic to the paused template once Meta reports it unpaused. The dashboard column, the webhook, and this API read all agree because they render the same envelope.

What to send support

If you have worked the fix for your code and the same failure continues, email whatsapp-support@devotel.io with:
  1. The message id (the msg_… id from the Delivery Log row or the API read).
  2. The whatsappErrorCode and the Orbit code from the error envelope.
  3. The template name and language exactly as configured (order_shipped + en_US).
  4. The WABA id shown under Settings → Channels → WhatsApp.
  5. The timestamp of a failed send.
For Meta-side states (paused, disabled, blocked) support can show you exactly what Meta reported; the lift itself only happens at Meta, and the same packet is what a Meta Business Support appeal needs.

See also