Troubleshooting: WhatsApp number registration — consumer app conflict and register failures
Embedded Sign-up can complete cleanly — token exchanged, WABA and phone selected — and the connect flow can still fail one step later, when Orbit registers your phone number for sending on the WhatsApp Cloud API. Two codes cover that step:WHATSAPP_CONSUMER_APP_CONFLICT (422) and
WHATSAPP_REGISTER_FAILED (502). The
re-auth and connection recovery page
decodes the token-exchange and selection families that fire one step
earlier; this page owns what happens when the register step itself
refuses.
Both codes fire on
POST /api/v1/whatsapp/connect, after the sign-up
dialog closes. The register step runs for Cloud API onboarding and is
skipped in coexistence mode, where the number is already registered
through the WhatsApp Business App on the handset.When the two codes fire
After the dialog closes, Orbit calls the WhatsApp Cloud APIregister
endpoint for your phone_number_id so the number can send; until that
call succeeds, sends fail at Meta with “Account not registered”. If Meta
refuses the register, the connect flow returns one of the two envelopes
below and the connection is not marked active.
WHATSAPP_CONSUMER_APP_CONFLICT(422) — Meta’s refusal names the consumer app: the number is still registered on the WhatsApp app installed on a phone, and Meta does not allow the upgrade to Cloud API while that registration holds.WHATSAPP_REGISTER_FAILED(502) — any other non-success answer from Meta on the register call: a transient upstream failure, or a Meta-side state on the number that blocks registration. The message carries the opening of Meta’s response body, so theDetails:suffix tells you which.
Worked envelopes
422 — the number is still on the consumer app:WHATSAPP_CONSUMER_APP_CONFLICT — the number still lives on a handset
Meta rejects the register with error code 100 and a body naming the
consumer app (“Upgrading from a consumer app to WhatsApp Business Cloud
API is not allowed”) when the same number is registered on the WhatsApp
app installed on a handset. While that registration holds, every connect
run returns the same 422. You have two supported paths; pick one.
Path A — free the number, then re-run connect:
- On the handset that holds the number, open WhatsApp and go to Settings → Account → Delete my account. This deletes the consumer registration on the phone, not your Meta Business assets.
- Wait a few minutes for Meta to clear the lock; an immediate retry often still sees the old registration.
- Re-run the connect flow from Settings → Channels → WhatsApp →
Connect, or re-POST
/api/v1/whatsapp/connectwith a fresh sign-up code.
connected with your
waba_id and phone_number_id, and
GET /api/v1/whatsapp/status reports the connection active.
Path B — keep the app live with coexistence onboarding: if the team
still answers from the phone, do not delete the app. Coexistence
onboarding links the same WABA while the Business App keeps running, and
its register step never touches the consumer registration. Walk the
Coexistence lane in
Add a WhatsApp Business Account instead of
the Cloud API lane.
Do not loop the 422: re-running connect while the handset registration
holds returns the same refusal every time and burns your rate budget.
WHATSAPP_REGISTER_FAILED — Meta refused the register for another reason
This is the catch-all for a non-success register answer that does not
name the consumer app: a transient Meta-side failure, a number pending
verification, or a stale registration Meta still sees elsewhere. The
Details: suffix in the message is the opening of Meta’s own response
body, preserved verbatim — read it first, because it names the refusal.
Recovery:
- Check the number in Meta Business Manager → WhatsApp Manager → Phone numbers: it should be present on the WABA you connected and not flagged. Fix anything Meta reports, then re-run connect.
- If the state at Meta looks clean, treat it as transient: wait a minute and re-run connect once. A second identical 502 within minutes is Meta state, not a blip.
- Still red? Email
whatsapp-support@devotel.io with
the
request_idfrom the envelope’smetablock and whether Meta prompted you for the 6-digit two-factor code during sign-up — the register re-uses that code, so its state decides which retry Meta accepts.
Troubleshooting table
See also
- WhatsApp connection recovery — the send-side codes that fire once a connection exists.
- WhatsApp re-authentication and Embedded Sign-up recovery — the token-exchange and selection families that fire one step earlier.
- Add a WhatsApp Business Account — the Cloud API and Coexistence onboarding lanes side by side.
- Error codes — every
WHATSAPP_*code the API returns, with its HTTP status.