Troubleshoot template rejection (Orbit codes)
A WhatsApp template call fails with one of Orbit’s own rejection codes. Either the create call returns 422WHATSAPP_TEMPLATE_REJECTED because the carrier rejected the
submission, or a send returns 422 TEMPLATE_REJECTED because the
stored template’s review status is rejected and Orbit refuses the
send before Meta is reached. Both are deterministic: the template
itself is the problem, and re-sending the unchanged payload replays
the same 422 until the template changes. This page decodes which code
you got, reads the reason, and walks the fix-and-resubmit path.
Meta’s numeric codes (132001, 132016, 132068, 133010 and the
rest) live on their own page:
Troubleshoot WhatsApp template lifecycle errors.
If your error carries
details.whatsappErrorCode instead of the two
codes below, start there. That page covers Meta’s refusals; this
page covers Orbit’s; each links to the other.Which rejection code you got
The two Orbit codes are the same underlying fact seen at two moments:
WHATSAPP_TEMPLATE_REJECTED tells you at submission time that the
carrier rejected the template; TEMPLATE_REJECTED enforces that
rejection later, on every send through the stored template. If you
see the send-side code, the create-side rejection already happened,
and the reason it gave is still the one to fix.
What details.reason tells you
The create 422 envelope carries a stable reason string in
details.reason plus the request id you will want if this ends up at
support:
Read
message alongside details.reason: the reason names the
rejection class, and the message quotes the concrete problem in your
submission (it may echo the offending text). Fix what the message
points at, not just what the reason class suggests.
Read the verdict
The rejection reason and the current review status stay attached to the template record after the 422 is long gone from your logs:- API. The template record returned by the templates endpoints
carries the review status (
pending,approved,rejected) and, when rejected, the reason from the last review. ATEMPLATE_REJECTEDsend 422 means that record currently readsrejected. - Dashboard. Open the template library and select the template: the detail view shows the review status and the rejection reason, the same values the API returns.
- Meta’s side. Review typically completes within 24 hours, and a
rejected template can sit in
rejecteduntil you act. The pending and rejected review states and the review window are covered in Troubleshoot WhatsApp templates.
Edit and resubmit
- Read the verdict above and note the reason.
- Make the fix in the template itself: rewrite the copy, change the category (utility content in a MARKETING template, or promotional content in a UTILITY template, will keep getting rejected), or adjust the media.
- Resubmit for review from the template’s detail view in the dashboard, or submit the corrected template through the templates API.
- Watch the review status return to
pending, thenapproved.
pending, the old rejected verdict is gone but no
new approval exists, and sends remain blocked or refused exactly as
before. Meta reviews the new submission from scratch; approval is
what re-opens the template for live traffic, not the act of
resubmitting.
Worked example
A create call for a utility template whose body reads like an advertisement:WHATSAPP_TEMPLATE_REJECTED with
details.reason: "PROMOTIONAL_LANGUAGE_NOT_ALLOWED". Decode it: the
body is promotional copy submitted under the UTILITY category. Fix it
on your side, either rewrite the body to plain order-ready wording or
move the promotional copy into a MARKETING template, then resubmit.
The corrected create returns 201 with the template record at status
pending, and once review flips it to approved, sends through it
pass the preflight that previously returned TEMPLATE_REJECTED.
Fix vs retry, one rule
Retry never clears a rejection. Both codes are deterministic refusals about template state, so Orbit does not retry them automatically, and a manual re-send of the unchanged payload reproduces the same 422. Fix the template first, then send again; that send is a new request, not a retry. The same rule governs Meta’s numeric codes on Troubleshoot WhatsApp template lifecycle errors; the only retriable family in WhatsApp sending is transient platform faults, which are covered there.What to send support
If you have fixed the template and resubmitted and rejections continue, email whatsapp-support@devotel.io with:- The template id and the template name and language exactly as
configured (
order_ready+en_US). - The
details.reasonvalue from the 422, or the rejection reason shown on the template record. - The
request_idfrom the error envelope’smetablock. - The timestamp of the failing create or send.
See also
- Troubleshoot WhatsApp template lifecycle errors — the Meta numeric codes (132001, 132016, 132068, 133010, …).
- Troubleshoot WhatsApp templates — pending and rejected review states and the 24-hour review window.
- Troubleshoot WHATSAPP_TEMPLATE_VAR_COUNT_MISMATCH — the send-side parameter pre-flight that refuses before Meta is reached.
- WhatsApp channel overview — setup and the connection model.